基于51单片机多点温度检测系统.docx
《基于51单片机多点温度检测系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机多点温度检测系统.docx(21页珍藏版)》请在冰豆网上搜索。
基于51单片机多点温度检测系统
【摘要】DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。
RS232通信接口,芯片使用了ATMEL公司的AT89C51单片机和DALLAS公司的DS18B20数字温度传感器。
上位机部分使用了通用PC。
该系统可应用于仓库测温、楼宇空调控制和生产过程监控等领域。
【关键字】:
温度测量;单总线;数字温度传感器;单片机
[Abstract]Asakindofhigh-accuracydigitalnettemperaturesensor,DS18B20canbeusedbuildingasensorneteasily.Itcanalsomakethenetsimpleandreliablewithit'sspecial1-wireinterface.ThispaperintroducestheapplicationofDS18B20withsinglechipprocessor.Thesystemisconstitutedbytwopartsthetemperaturemeasuredpartanddisplayedpart.ThetemperaturemeasuredparthasaRS232interface.ItusedAT89C51ofATMELcompanyandDS18B20ofDALLAScompany.ThedisplayedpartusesPC.Thissystemisappliedinsuchdomainsaswarehousedetectingtemperature;air-conditionercontrollingsysteminbuildingandsupervisoryproductiveprocessetc.
Keywords:
temperaturemeasure;singlebus;digitalthermometer;singlechipprocessor;
第一章绪论
§1.1系统背景
在工、农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。
首先让我们了解一下多点温度检测系统在各个方面的应用领域:
消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热检测。
温度检测系统应用十分广阔。
§1.2系统概述
本设计运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。
该系统采用RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。
温度值既可以送回主控PC进行数据处理,由显示器显示。
也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。
下位机采用的是单片机基于数字温度传感器DS18B20的系统。
DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。
本系统可以应用在大型工业及民用常温多点监测场合。
如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。
第二章方案论证
温度检测系统有着共同的特点:
测量点多、环境复杂、布线分散、现场离监控室远等。
若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。
这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降。
所以多点温度检测系统的设计的关键在于两部分:
温度传感器的选择和主控单元的设计。
温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。
§2.1传感器部分
方案一:
采用热敏电阻,可满足-55摄氏度至+125摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。
而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案二:
在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行AD转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大,且由于AT89C51可以带多个DS18B20,因此可以非常容易实现多点测量.轻松的组建传感器网络。
采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。
部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。
而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。
所以集成芯片的使用将成为电路发展的一种趋势。
本方案应用这一温度芯片,也是顺应这一趋势。
§2.2主控制部分
方案一:
此方案采用PC机实现。
它可在线编程,可在线仿真的功能,这让调试变得方便。
且人机交互友好。
但是PC机输出信号不能直接与DS18B20通信。
需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。
而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,给工程带来很多麻烦!
方案二:
此方案采用AT89C51八位单片机实现。
单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。
而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。
另外AT89C51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
§2.3系统方案
综上所述,温度传感器以及主控部分都采用第二方案。
系统采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想。
设计一种可以用于大规模多点温度测量的巡回检测系统。
该系统采用的是RS-232串行通讯的标准,通过下位机(单片机)进行现场的温度采集,温度数据既可以由下位机模块实时显示,也可以送回上位机进行数据处理,具有巡检速度快,扩展性好,成本低的特点。
实际采用电路方案如图2-1:
图2-1
第三章硬件电路设计
系统底层电路的功能主要包括:
多点温度测试及其相关处理,实时显示温度信息,与上位机通讯传输温度数据。
硬件设计主要包括以下几个模块:
电源以及看门狗电路,键盘以及显示电路,温度测试电路,串口通讯电路。
下面对电路分模块进行说明
§3.1单片机STC89C51介绍
STC89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用宏晶公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
其内部主要由CPU、RAM、ROM、通用I/O及总线构成,内部结构图如3-1所示:
图3-1
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
STC89C51具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结。
单片机一切工作停止,直到下一个中断或硬件复位为止。
(1)振荡周期:
也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期。
(2)状态周期:
每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。
(3)机器周期:
一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。
在一个机器周期内,CPU可以完成一个独立的操作。
(4)指令周期:
它是指CPU完成一条操作所需的全部时间。
每条指令执行时间都是有一个或几个机器周期组成。
STC89C51系统中,有单周期指令、双周期指令和四周期指令。
§3.2电源以及看门狗电路
a.电源电路
因为单片机工作电源为+5V,且底层电路功耗很小。
采用7805三端稳压片即可满足要求。
具体电路图如图3-2:
图3-2
b.看门狗电路
考虑到底层电路板的工作环境相对恶劣,单片机会受到周围环境的干扰,而出现程序跑飞,死机等一些不可预知的不正常工作现象。
工作人员也不可能到现场对单片机重起,本设计为单片机电路添加一个外部看门狗电路。
定时查询单片机的工作状态,一但发现异常即对单片机延时重起。
保证系统安全可靠的运行。
NE56604能为多种微处理器和逻辑系统提供复位信号,其门限电平为4.2V。
在电源突然掉电或电源电压下降到低于门限电平时。
NE56604将产生精确的复位信号。
NE56604内置一个看门狗定时器,用于监控微处理器,以确保微处理器的正常运行。
看门狗能产生一个系统复位信号用来终止任何由于微处理器故障而引发的不正常的系统操作。
NE56604的看门狗的监控周期为100mS(典型值)。
特性
.正负双逻辑输出的有效复位信号。
.精准的门限电平监测。
.上电复位内部延时。
.可利用外部电阻调节的内部看门狗定时器。
.看门狗定时器的监控周期为100mS典型值。
.VCC=0.8VDC时产生有效的复位信号典型值。
.仅需很少的外围元件。
具体电路图如图3-3:
图3-3
§3.3温度采集电路
这里我们用到温度芯片DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式。
测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
DS18B20内部结构
(1)DS18B20的内部结构如图3-4所示。
图3-4
DS18B20有4个主要的数据部件:
①64位激光ROM。
64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。
②温度灵敏元件。
③非易失性温度报警触发器TH和TL。
可通过软件写入用户报警上下限值。
④配置寄存器。
配置寄存器为高速暂存存储器中的第五个字节。
DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图3-5所示。
TM
R1
R0
1
1
1
1
1
MSB
DS18B20配置寄存器结构图
LSB
图3-5
其中,TM:
测试模式标志位,出厂时被写入0,不能改变;R0、R1:
温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:
R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。
配置寄存器与分辨率关系表3-1:
R0
R1
温度计分辨率/bit
最大转换时间/us
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
表3-1
(2)高速暂存存储器
高速暂存存储器由9个字节组成,其分配如下图所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值,如表3-2。
温度低位
温度高位
TH
TL
配置
保留
保留
保留
8位CRC
LSB
DS18B20存储器映像图
MSB
表3-2
温度值格式图DS18B20温度数据表3-3:
23
22
21
20
2-1
2-2
2-3
2-4
MSB
LSB
S
S
S
S
S
26
25
24
表3-3
典型对应的温度值表3-4:
温度/℃
二进制表示
十六进制表示
+125
+25.0625
+10.125
+0.5
0
-0.5
-10.125
-25.0625
-55
0000011111010000
0000000110010001
0000000010100010
0000000000001000
0000000000000000
1111111111111000
1111111101011110
1111111001101111
1111110010010000
07D0H
0191H
00A2H
0008H
0000H
FFF8H
FF5EH
FE6FH
FC90H
表3-4
DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
硬件连接电路如图3-6:
图3-6
本系统为多点温度测试。
DS18B20采用外部供电方式,理论上可以在一根数据8B20,但时间应用中发现,如果挂接25个以上的DS18B20仍旧有可能产生功耗问题。
另外单总线长度也不宜超过80M,否则也会影响到数据的传输。
在这种情况下我们可以采用分组的方式,用单片机的多个I/O来驱动多路DS18B20。
在实际应用中还可以使用一个MOSFET将I/O口线直接和电源相连,起到上拉的作用。
对DS18B20的设计,需要注意以下问题
(1)对硬件结构简单的单线数字温度传感器DS18B20进行操作,需要用较为复杂的程序完成。
编制程序时必须严格按芯片数据手册提供的有关操作顺序进行,读、写时间片程序要严格按要求编写。
尤其在使用DS18B20的高测温分辨力时,对时序及电气特性参数要求更高。
(2)有多个测温点时,应考虑系统能实现传感器出错自动指示,进行自动DS18B20序列号和自动排序,以减少调试和维护工作量。
(3)测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
DS18B20在三线制应用时,应将其三线焊接牢固;在两线应用时,应将VCC与GND接在一起,焊接牢固。
若VCC脱开未接,传感器只送85.0℃的温度值。
(4)实际应用时,要注意单线的驱动能力,不能挂接过多的DS18B20,同时还应注意最远接线距离。
另外还应根据实际情况选择其接线拓扑结构。
§3.4键盘以及显示电路
键盘电路
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键盘有编码和非编码两种。
非编码键盘硬件电路极为简单。
故本系统采用拨码开关来控制。
具体电路如图3-7:
图3-7
A.开关状态的可靠输入
键开关状态的可靠输入有两种解决方法。
一种是软件去抖动:
它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。
另一种为硬件去抖动:
即为按键添加一个锁存器。
两种方法都简单易行,本设计采用的是硬件去抖。
B.对按键进行编码给定键值或给出键号
对于按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的散转转移。
为使编码间隔小,散转入口地址安排方便,常采用依次序排列的键号,如表3-5。
拨码开关值
含义
0000
实时显示通道一的温度值
0001
实时显示通道二的温度值
0010
实时显示通道三的温度值
0011
实时显示通道四的温度值
0100
实时显示通道五的温度值
0101
实时显示通道六的温度值
0110
实时显示通道七的温度值
0111
实时显示通道八的温度值
1***
自动循环显示所有通道的温度
表3-5
C.选择键盘监测方法
对是否有键按下的信息输入方式有中断方式与查询方式两种。
本设计采用的查询法,即在在CPU空闲时调用键盘扫描子程序。
温度显示电路
设计采用的是共阴极七段数码管。
显示方式有动态扫描和静态显示,两种方法在本设计中皆可。
由于静态扫描要用到多片串入并出芯片,考虑到电路板成本计算。
本人采用是节约硬件资源的动态扫描方式。
即用两块芯片就可以完成显示功能。
显示数据由4511译码器输出,ULN2003为位驱动扫描信号。
具体电路图如图3-8:
图3-8
§3.5串口通讯电路
AT89C51有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
具体电路如图3-9:
图3-9
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对本设计来说已经足够使用了,电路如上图所示。
通信线采用交叉接法,即两者信号线对应成为R—T,T—R。
具体连接电路如图3-10:
图3-10
§3.6整体电路
见附件一(电路原理图)
第三章软件设计
§4.1概述
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:
一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
§4.2主程序方案
主程序调用了4个子程序,分别是数码管显示程序、键盘扫描以及按键处理程序、温度测试程序、中断控制程序、单片机与PC机串口通讯程序。
键盘扫描电路及按键处理程序:
实现键盘的输入按键的识别及相关处理。
温度测试程序:
对温度芯片送过来的数据进行处理,进行判断和显示。
数码管显示程序:
向数码的显示送数,控制系统的显示部分。
中断控制程序:
实现循环显示功能。
串口通讯程序:
实现PC机与单片机通讯,将温度数据传送给PC机。
程序结构图如4-1
图4-1
将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序,然
后在寄存器的分配上作一下调整,消除寄存器冲突和I/O冲突即可。
程序应该尽可能多的使用调用指令代替跳转指令。
因为跳转指令使得程序难以看懂各程序段之间的结构关系。
而调用指令则不同,调用指令使得程序结构清晰,无论是修改还是维护都比较方便。
将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块。
图4-2
主程序流程图如图4-2:
§4.3各模块子程序设计
下面对主要几个子程序的流程图做介绍:
(1)温度测试子程序设计如图4-3
图4-3
(2)中断控制程序设计
如图4-4:
(3)串口通信程序设计
本次通讯中,测控系统分位上位机和下位机之间的通信,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
本人采用的VB环境下PC机与单片机之间实现串行通讯的软硬件方案。
VB是Microsoft公司推出的Windows应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且VisualBasic6.0版本带有专门实现串行通讯的MSCOMM控件。
MSComm控件串口具有完善的串口数据的发送和接收功能。
通过此控件,PC机可以利用串行口与其它设备实现轻松连接,简单高效地实现设备之间的通讯。
此控件的事件响应有两种处理方式。
事件驱动方式:
由MSComm控件的OnComm事件捕获并处理通讯错误及事件;查询方式:
通过检查CommEvent属性的值来判断事件和错误。
1)MSComm控件的主要属性和方法
a.CommPort:
设置或返回串行端口号,其取值范围为1—99,缺省为1
b.Setting:
设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。
c.PortOpen:
打开或关闭串行端口。
d.RThreshold:
该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生MSComml-OnComm事件。
e.Input:
从接收缓冲区移走一串字符。
f.Output:
向发送缓冲区传送一字符串。
PC通讯程序流程图如图4-5:
单片机程序流程如图4-6.