多机温度检测课程设计.docx
- 文档编号:17298456
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:33
- 大小:211.88KB
多机温度检测课程设计.docx
《多机温度检测课程设计.docx》由会员分享,可在线阅读,更多相关《多机温度检测课程设计.docx(33页珍藏版)》请在冰点文库上搜索。
多机温度检测课程设计
《单片机应用与仿真训练》设计报告
多机温度检测系统设计
2011年11月23日
摘要
本设计是采用AT89S52单片机作为控制核心设计了温度测量系统,该系统由温度检测模块、微控制器模块、串口通信模块、数码管显示和报警模块等四部分组成,能对0℃~100℃范围的温度进行测量,同时利用4位八段数码管可以实时显示环境温度。
系统硬件电路包括传感器数据采集、温度显示、模式选择、上、下限报警主电路等。
整个装置的控制核心是AT89S52单片机。
温度传感器DS18B20采用外部电源供电,传感器输出引脚直接和单片机相连。
电路支持模式选择功能,可以选择设定报警极限值或显示当前温度值。
当被测温度越限时,报警主电路产生声光报警。
拨动开关可以对设定报警极限值进行写保护。
采用2片单片机,组成多机温度检测系统;下位单片机采集温度,通过串行通信传送至上位单片机;上位单片机用数码管显示温度大小;基本范围0℃~100℃;精度误差小于0.5℃;可以任意设定温度的上下限报警功能。
该系统精度高、测温范围广、报警及时,可广泛应用于基于单片机的测温报警场合。
系统抗干扰性强、设计灵活方便,适合在恶劣的环境下进行温度测量。
关键词:
AT89S52;DS18B20温度传感器;共阴极LED显示;报警
摘要2
1概述4
1.1下位机温度采集发送系统4
1.2上位机显示及报警系统4
2系统方案设计5
2.1主控制部分设计5
2.2传感器部分设计5
3.系统总体方案及硬件设计7
3.1系统总体方案7
3.2系统总体方案图7
3.3系统各部分硬件电路设计8
3.3.1AT89S52单片机及最小相系统8
3.3.2数据显示电路9
3.3.3数字温度传感器DS18B2010
3.4整体电路14
4软件设计15
4.1概述15
4.2主程序方案15
4.3DS18B20的相处理子程序16
4.3.1DS18B20初始化16
DS18B20初始化子程序:
16
4.3.2DS18B20的写操作17
4.3.3 DS18B20的读操作17
5.Proteus软件仿真19
5.1系统仿真环境19
5.2器件参数选取19
5.3仿真结果19
6.课程设计体会21
参考文献22
附件一:
源程序代码23
附件二:
系统原理图30
1概述
1.1下位机温度采集发送系统
下位机温度采集发送系统是本系统的主要核心之一,它的主要功能是采集DS18B20的温度数据,进行转换,并通过串口发送出去。
该温度测量系统采用8051内核Atmel公司的AT89S52八位单片机。
温度采集发送系统由温度检测模块、下位控制器模块、发送放大模块三部分组成,如图1-1温度测量系统的系统框图:
图温度测量系统的系统框图
温度检测模块中温度传感器DS18B20采集温度数据,通过P2.3口传给下位单片机,微控制模块进行数据转换,得出十进制温度值,然后通过串行口经MAX232将数据发送出去。
1.2上位机显示及报警系统
上位机系统的主要功能是接收下位机发送过来的温度数据,与报警温度进行比较,判断是否发送报警信号,并同时直接驱动四位八段数码管进行显示。
上位机系统由串口接收模块、处理控制模块、数码管显示模块和报警模块四部分组成,如图1-2上位机系统框图:
图上位机系统框图
串行口接收数据后进行判断是否报警,并由P0口和P2.0~P2.3直接驱动数码管显示温度数据。
报警控制模块通过按钮电路可以改变报警温度的上下限实现系统的灵活功能。
2系统方案设计
2.1主控制部分设计
方案一:
此方案采用PC机实现。
它可在线编程,可在线仿真的功能,这让调试变得方便。
且人机交互友好。
但是PC机输出信号不能直接与DS18B20通信。
需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。
而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,给工程带来很多麻烦!
方案二:
此方案采用AT89S52八位单片机实现。
单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。
而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。
另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟
2.2传感器部分设计
方案一:
采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。
而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案二:
在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行AD转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89S52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大,且由于AT89S52可以带多个DSB1820,因此可以非常容易实现多点测量.轻松的组建传感器网络。
采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。
部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。
而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。
所以集成芯片的使用将成为电路发展的一种趋势。
本方案应用这一温度芯片,也是顺应这一趋势。
综上所述,温度传感器以及主控部分都采用第二方案。
系统采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想。
设计一种可以用于大规模多点温度测量的巡回检测系统。
该系统采用的是RS-232串行通讯的标准,通过上位机进行现场的温度采集,温度数据既可以由下位机模块实时显示,也可以送回上位机进行数据处理,具有巡检速度快,扩展性好,成本低的特点。
3.系统总体方案及硬件设计
3.1系统总体方案
该数字温度计由电源电路、晶振电路、复位电路、下载电路、单片机、
数字显示电路、温度测量电路、报警电路和控制电路组成。
可以实现基本范围0℃-100℃的测量和任意设置温度的上下限,当所设置的温度高于所设置的上限或低于所设置的下限时可通过发光二极管报警。
当开关处于开的状态时才可实现上述功能,否则不可实现。
3.2系统总体方案图
3.3系统各部分硬件电路设计
3.3.1AT89S52单片机及最小相系统
AT89S52
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89S52最小相系统
3.3.2数据显示电路
本次设计中采用共阴极数码管作为显示器。
LED的驱动电路简单,使用方便,具有耗电少、成本低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点。
LED显示器与单片机的接口一般有动态显示与静态显示接口两种电路。
1、静态显示方式:
是指当显示器显示某一字符时,发光二极管的位选始终被选中。
在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制,显示稳定,提高了CPU的工作效率。
其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。
随着显示器位数的增加,需要的I/O口线也将增加。
2、动态显示方式:
动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。
对于每一位显示器来说,每隔一段时间轮流点亮。
显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关,由于扫描速度极快,显示效果与静态驱动相同。
通过调整电流和时间参数,可以既保证亮度,又保证显示。
本次设计中,由于单片机本身提供的I/O口有限,本次设计采用动态显示,数码管采用的是共阴极接法。
用AT89S52的P0口作段码输出时,驱动能力相当大,但由于输出极为漏极开路电路,驱动拉电流负载,引脚上应外接上拉电阻。
。
因此,在本次设计中我们将数码管各段加上拉电阻后接单片机P0口。
我们把P2口的输出信号直接接到数码管的位选端作为位选信号,低电平有效。
数据显示电路
3.3.3数字温度传感器DS18B20
本次设计的硬件电路简单,关键的地方在DS18B20,也是最复杂难懂的。
由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,传输距离远等特点。
DS18B20的性能特点:
1采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位)
2测温范围为-55℃-+125℃,测量分辨率最小为0.0625℃
3内含64位经过激光修正的只读存储器ROM
4DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
5适配各种单片机或系统机
6测量结果直接输出数字温度信号,以“一线总线“串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
7用户可分别设定各路温度的上、下限
8适应电压范围宽,3.0~5.5V,在寄生电源方式下可由数据线供电
DS18B20的管脚排列如图5所示。
引脚功能如下表所示:
图DS18B20
表1:
序号
名称
引脚功能描述
1
Vcc
可选择的Vcc引脚。
当工作于寄生电源时,此引脚必须接地。
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
GND
地信号。
DS18B20主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分内部,其内部结构框图如图所示。
图DS18B20内部结构
DS18B20有4个主要的数据部件:
①64位激光ROM。
64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。
②温度灵敏元件。
③非易失性温度报警触发器TH和TL。
可通过软件写入用户报警上下限值。
④配置寄存器。
配置寄存器为高速暂存存储器中的第五个字节。
DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,
其各位定义如图所示。
TM
R1
R0
1
1
1
1
1
MSB
DS18B20配置寄存器结构图
LSB
其中,TM:
测试模式标志位,出厂时被写入0,不能改变;R0、R1:
温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:
R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。
配置寄存器与分辨率关系表:
R0
R1
温度计分辨率/bit
最大转换时间/us
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
5 高速暂存存储器。
高速暂存存储器由9个字节组成,其分配如下图所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
温度低位
温度高位
TH
TL
配置
保留
保留
保留
8位CRC
LSB
DS18B20存储器映像图
MSB
温度值格式图DS18B20温度数据表:
23
22
21
20
2-1
2-2
2-3
2-4
MSB
LSB
S
S
S
S
S
26
25
24
对DS18B20的设计,需要注意以下问题:
(1)对硬件结构简单的单线数字温度传感器DS18B20进行操作,需要用较为复杂的程序完成。
编制程序时必须严格按芯片数据手册提供的有关操作顺序进行,读、写时间片程序要严格按要求编写。
尤其在使用DS18B20的高测温分辨率时,对时序及电气特性参数要求更高。
(2)有多个测温点时,应考虑系统能实现传感器出错自动指示,进行自动DS18B20序列号和自动排序,以减少调试和维护工作量。
(3)测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
DS18B20在三线制应用时,应将其三线焊接牢固;在两线应用时,应将VCC与GND接在一起,焊接牢固。
若VCC脱开未接,传感器只送85.0℃的温度值。
(4)
实际应用时,要注意单线的驱动能力,不能挂接过多的DS18B20,同时还应注意最远接线距离。
另外还应根据实际情况选择其接线拓扑结构。
图DS18B20接线图
3.4整体电路
见附件二:
系统原理图
4软件设计
4.1概述
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
4.2主程序方案
主程序调用了数码管显示程序、温度测试程序、中断控制程序、单片机与PC机串口通讯等程序。
温度测试程序:
对温度芯片送过来的数据进行处理,进行判断和显示。
数码管显示程序:
向数码的显示送数,控制系统的显示部分。
中断控制程序:
实现循环显示功能。
串口通讯程序:
实现PC机与单片机通讯,将温度数据传送给PC机
将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序,然后在寄存器的分配上作一下调整,消除寄存器冲突和I/O冲突即可。
程序应该尽可能多的使用调用指令代替跳转指令。
因为跳转指令使得程序难以看懂各程序段之间的结构关系。
而调用指令则不同,调用指令使得程序结构清晰,无论是修改还是维护都比较方便。
将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块。
4.3DS18B20的相处理子程序
4.3.1DS18B20初始化
(1)先将数据线置高电平“1”。
(2)延时(该时间要求的不是很严格,但是尽可能的短一点)
(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20初始化子程序:
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay_18B20(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay_18B20(80);//精确延时大于480us
DQ=1;//拉高总线
delay_18B20(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay_18B20(20);
}
4.3.2DS18B20的写操作
(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
DS18B20的写程序为
voidWriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
Delay_DS18B20(5);
DQ=1;
dat>>=1;
}
}
4.3.3 DS18B20的读操作
(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时15微秒。
(5)将数据线拉高“1”。
(6)延时15微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时30微秒。
DS18B20的读程序为:
unsignedcharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
Delay_DS18B20(4);
}
return(dat);
}
5.Proteus软件仿真
5.1系统仿真环境
本设计采用Proteus仿真软件进行仿真,Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
首先在Proteus的元件库中找到所需的元件,按照硬件设计中的说明把各部件连接起来组成一个数字式温度计硬件系统。
然后把在Keil环境调试下生成的.HEX文件导入到AT89S52里,点击运行符号就可以使软硬件的配套设施在Proteus的环境下仿真实现,以检查是否存在错误。
5.2器件参数选取
单片机采用AT89C52,时钟频率为12MHz。
时钟产生电路的晶振为12MHz,接地电容为30pF。
复位电路的电解电容为10uF,与电容并联的电阻为1K,接地的电阻为10K。
LED数码管及DS18B20的工作电压为+5V。
5.3仿真结果
系统原理图见附件二:
此图为正常测温数码管画面
温度超下限或者超过100℃
数码管显示bbbb
并且此时报警电路二极管D2亮
温度超上限数码管显示
超上限时报警电路二极管D1亮
6.课程设计体会
通过这次单片机课程设计,我们不仅加深了对单片机理论的理解,将很多课本理论很好地应用到实际当中,而且我们还学会了如何去培养我们的学习精神和团队协作能力,从而不断地战胜自己,超越自己。
通过这次完成这次的设计,我们发现了我们在课堂上学习的知识是十分宝贵且有用的,也发现了我们在课堂学习过程中的不足和大意,有很多东西都在课堂上被我们忽略来了,为了完成本次的设计,我们不断地翻阅书籍、请教同学,重新学习了课堂上的知识,虽然还没能做到融会贯通、厚积薄发,但毕竟窥一管而知全豹,走进了单片机应用的辽阔世界,了解到了单片机系统的强大功能,开阔了视野,提高了设计能力,使更多的知识成为了自己的东西,相信这些在我们今后的学习和工作生涯中将会是一笔宝贵的财富。
在这次设计中,串口通信是我们的一大难点,不断的仿真和不断的错误和失败告诉我们基础知识的不踏实,正如老师所言“基础不牢,地动山摇”,于是我们重新认真的看课本重新的学习,终于实现了串口发送和接受功能。
本次设计我们使用的是C51语言,虽然c语言结构明确,可读性强,但由于单片机的硬件资源有限,在数据定义和特殊寄存器的选用及修改上比较固定,对于新手来说有些理解和实现,所以C语言编程时很多地方程序结构固定,而我们又没有系统深入的学习过C51语言,所以在这次设计中我们部分的借鉴了别人的程序,虽然这一部分不是我们写的,但是我们认真读懂了它并且学到了很多东西,包括编程思想和设计技巧,这些都提高了我们的学习能力和模仿能力。
总之,通过这次的课程设计,使我们认识到了不足,看清了学习的方向,找到了学习的动力,提高了动手能力和学习能力,收获很大。
参考文献
[1]余发山主编.单片机原理及应用技术.徐州:
中国矿业大学出版社.2003.12
[2]白泽生.用MCS-51单片机实现温度的检测[J].现代电子技术.2005.10
[3]李玉梅编著.基于MCS-51系列单片机原理的应用设计.国防工业出版社
[4]余小平、奚大顺编著.电子系统设计基础篇.北京:
北京航空航天大学出版社,2007.3
[5]郭爱芳主编.传感器原理及应用.西安电子科技大学出版社.2007.5
[6]http//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 检测 课程设计