基于89C51的温度采集系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于STC89C51的温度采集系统
摘要:本文介绍了一种基于STC89C51的测温系统原理和研制过程。
该测温系统利用DS18B20温度传感器进行温度测量,并采用数码显示模块进行显示,解决了温度测量通常比较繁琐的问题。
系统通过上位机串行口与计算机相连,通过计算机对温度进行集中监视和管理。
此测温系统实现了对温度数据的远程采集、处理、实时显示以及对温度报表的管理。
系统由DS18B20温度传感器、数码显示模块、89C51单片机组成。
在89C51单片机上运行的测温和显示管理软件,负责对整个系统进行统一管理,实现对系统参数的设置,对多个测温点温度数据的巡回采集、处理、显示。
该系统还可以通过单片机控制各个测温点完成温度转换和相应测温点温度数据的查询,DS18B20温度传感器是新型的单线数字温度传感器,其测温分辨率可以达到0.0625度[1]。
关键词:单片机DS18B20 测温系统
Abstract: This paper discusses the principle and development of Distributed Remote Measurement and Supervision System for Temperature. The system solves the temperature measuring problem of multi-point in distributed location by using a central computer and a lot of distributed computers. The central computer communicates with the distributed computers which use Atmel2051 single chip computers as CPU by modem module. The system is supervised and controlled by the central computer. The distributed Remote Temperature Measurement and Supervision System is made up of three main parts. The DS18B20 is a kind of 1-Wire digital thermometer. It provides 9 to 12-bit temperature readings which indicate the temperature of the device. The highest resolution is 0.0625.Single Chip Computer. The Atmen 2051 computer make the temperature sensors to convert temperature and send the data to central computer. The central computer can communicate with any single chip computer to acquire temperature data.
Keywords: Single Chip Computer DS18B20 Temperature Measurement System
目录
绪论 (2)
1.系统概述 (2)
1.1.课题背景 (2)
1.2. 测温原理 (3)
1.3. 方案选择 (3)
2. 系统硬件电路的设计 (5)
2.1. 电源电路 (5)
2.2. 键盘以及显示电路 (6)
2.2.1. 键盘电路 (6)
2.2.2. 温度显示电路 (7)
2.3. 温度测试电路 (8)
2.4. 串口通讯电路 (12)
2.5. 整体电路 (14)
3. 系统软件电路的设计 (14)
3.1. 软件设计概述 (14)
3.2. 主程序方案 (15)
3.3. 各模块子程序设计 (16)
4. 系统调试 (19)
4.1. 分布调试 (19)
4.2. 统一调试 (20)
5. 结论 (20)
参考文献 (21)
致谢 (22)
绪论
温度检测是现代检测技术的重要组成部分,在保证产品质量、节约能源和安全生产等方面起着关键的作用,可以说与人们的日常生活是息息相关的,具有很大的现实意义。
随着科学技术的发展,由单片集成电路构成的温度传感器的种类越来越多,测量的精度越来越高,响应时间越来越短,因其使用方便、无需变换电路等特点已经得到了广泛的应用。
传统靠人工控制的温度、湿度、液位等信号的测控系统,外围电路比较复杂,测量精度较低,分辨力不高,需进行温度校准(非线性校准、温度补偿、传感器标定等),且它们的体积较大、使用不够方便,更重要的是参数的设定需要有其它仪表的参与,外界设备多,成本高,因而越来越适应不了社会的要求。
在对多类型、多通道信号同时进行检测和控制中,传统的测控系统更是能力有限。
如何将计算机与各种设施、设备结合,简化人工操作并实现自动控制,满足社会的需求,成为一个很迫切的问题。
1.系统概述
1.1.课题背景
工业生产过程的监控技术经历了一个较长的发展阶段。
对生产设备的操作最早完全依靠人在现场手动操作每台设备,对生产状况的了解也只能靠操作者直接观察现场设备运行情况。
在工业现场,由于生产环境恶劣,工作人员不能长时间停留在现场观察设备是否运行正常,就需要采集数据并传输数据到一个环境相对好的操控室内,工作人员可以在这里观察整个生产线的一举一动。
这样就会出现数据传输问题,由于厂房大、需要传输数据多,浪费资源,占用空间,可操作性差,出现错误换线困难。
今天,计算机技术、网络信息技术和工业软、硬件的不断发展,利用串口传输数据技术,将现场的温度数据以电信号的形式传入控制室,利用工业PC作为人机交互界面构成的监控系统是方案之一。
基于89C51的温度采集系统抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量[2]。
本系统可以应用在大型工业及民用常温多点监测场合,如粮食仓储系统、楼宇自动化系统、温控支撑生产线、温度影像检测、医学与诊疗的温度测试、空调系统的温度检测、石化、机械等。
1.2.测温原理
本设计主要用数字式温度传感器DS18B20来采集外界温度,测量结果以数字量方式串行传送。
并通过分析DS18B20的原理和运用算法,把DS18B20的测量精度由0.5℃提高到0.1℃。
该设计硬件部分核心器件为89C51单片机。
通过编写大量汇编程序来支撑单片机来实现温度接收、转换、存储和显示等,最终温度用数码管显示出来。
本次设计的目的就是以数字传感器DS18B20作为前端,采集温度经过单片机处理后,再采用串口通信,把温度显示在VB编辑的计算机界面上,实现与计算机的串口通信。
系统包括硬件和软件两大部分。
系统的硬件部分大致可分为四部分:DS18B20温度采集部分、单片机处理部分、显示电路部分、与计算机串口通信部分。
系统的软件部分分为五大部分:读取DS18B20的内部数据部分、单片机对温度的处理部分、数码显示部分、串口通信部分、VB界面部分。
系统框图如下图1。
图1 电路系统框图
1.3.方案选择
作为毕业设计基于单片机温度监测系统检测范围较小,各检测器与主控器之间的距离较小,显示器单元可显示检测的温度值,设计并制作这个检测器以及主控器所用的直流稳压电源,由单相220V交流电压供电。
经过改进的系统具有较好的快速型以及数码管显示和测量精度提高等。
温度检测系统有则共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。
若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。
这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各
种干扰的影响,会使检测系统的稳定性和可靠性下降。
所以多点温度检测系统的设计的关键在于两部分:温度传感器的选择和主控单元的设计。
温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首[3]。
1、传感器部分。
方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。
而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案二:在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行A D转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多点测量切换及放大电路零点漂移等造成的误差补偿问题。
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
便于单片机处理及控制,省去传统的测温方法的很多外围电路。
且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大,且由于AT89C51可以带多个DSB1820,因此可以非常容易实现多点测量.轻松的组建传感器网络。
经过以上分析比较,决定采用方案二。
采用温度芯片DS18B20测量温度,可以体现系统芯片化这个趋势。
部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。
而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。
所以集成芯片的使用将成为电路发展的一种趋势。
本方案应用这一温度芯片,也是顺应这一趋势。
2、主控制部分。
方案一:此方案采用PC机实现。
它可在线编程,可在线仿真的功能,让调试变得方便。
且人机交互友好。
但是PC机输出信号不能直接与DS18B20通信。
需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。
而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,给
工程带来很多麻烦!
方案二:此方案采用AT89C51八位单片机实现。
单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。
而且体积小,硬件实现简单,安装方便。
既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机(PC微型计算机),下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。
另外AT89C51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
结论:主控部分采用方案二。
3、系统方案。
综上所述,温度传感器以及主控部分都采用第二方案。
系统采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想。
设计一种可以用于大规模多点温度测量的巡回检测系统。
该系统采用的是RS-232串行通讯的标准,通过下位机(单片机)进行现场的温度采集,温度数据既可以由下位机模块实时显示,也可以送回上位机进行数据处理,具有巡检速度快,扩展性好,成本低的特点[4]。
2.系统硬件电路的设计
硬件设计主要包括以下几个模块:电源以及看门狗电路,键盘以及显示电路,温度测试电路,串口通讯电路。
系统底层电路的功能主要包括:温度测试及其相关处理,实时显示温度信息,与上位机通讯传输温度数据。
下面对电路分模块进行说明。
2.1.电源电路
因为单片机工作电源为+5V,且底层电路功耗很小。
采用7805三端稳压片即可满足要求。
具体电路图如下图2:
图2 电源电路
2.2.键盘以及显示电路
2.2.1.键盘电路
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键盘有编码和非编码两种。
非编码键盘硬件电路极为简单。
故本系统采用拨码开关来控制。
具体电路如下图3:
图3 键盘电路
1、开关状态的可靠输入。
开关状态的可靠输入有两种解决方法。
一种是软件去抖动,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态
电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响。
另一种为硬件去抖动:即为按键添加一个锁存器。
两种方法都简单易行,本设计采用的是硬件去抖。
2、对按键进行编码给定键值或给出键号。
对于按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的散转转移。
为使编码间隔小,散转入口地址安排方便,常采用依次序排列的键号。
表1 拨号开关值
3、选择键盘监测方法
对是否有键按下的信息输入方式有中断方式与查询方式两种。
本设计采用的查询法,即在在CPU空闲时调用键盘扫描子程序。
2.2.2.温度显示电路
设计采用的是共阴极七段数码管。
显示方式有动态扫描和静态显示,两种方法在本设计中皆可。
由于静态扫描要用到多片串入并出芯片,考虑到电路板成本计算。
本人采用是节约硬件资源的动态扫描方式。
即用两块芯片就可以完成显示功能[5]。
显示数据由4511译码器输出,ULN2003为位驱动扫描信号。
具体电路图如下图4:
图4 温度显示电路
2.3.温度测试电路
这里我们用到温度芯片DS18B20。
DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式。
测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。
其工作电源既可在远端引入,也可采用寄生电源方式产生。
CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
DS18B20支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
DS18B20内部结构如下图5所述:
(1)DS18B20的内部结构如下图所示。
图5 DS18B20内部结构图
DS18B20有4个主要的数据部件:
① 64位激光ROM。
64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。
②温度灵敏元件。
③非易失性温度报警触发器TH和TL。
可通过软件写入用户报警上下限值。
④配置寄存器。
配置寄存器为高速暂存存储器中的第五个字节。
DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图6所示。
MSB DS18B20配置寄存器结构图LSB
图6 寄存器结构图
其中,TM:测试模式标志位,出厂时被写入0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:
R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。
表2 配置寄存器与分辨率关系表
(2)高速暂存存储器
高速暂存存储器由9个字节组成,其分配如下图所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。
对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
存储器映像图如下所示。
图7 存储器映像图
表3 温度数据表
表4 典型对应的温度值表
DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
硬件连接电路如下图8所示:
图8 硬件连接电路
本系统为温度测试。
DS18B20采用外部供电方式,理论上可以在一根数据总线上挂256个DS18B20,但时间应用中发现,如果挂接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,同时还应注意最远接线距离。
另外还应根据实际情况选择其接线拓扑结构。
2.4.串口通讯电路
AT89C51有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
具体电路如下图9所示:
图9 串口通信电路
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对本设计来说已经足够使用了,电路如上图所示。
通信线采用交叉接法,即两者信号线对应成为R—T,T—R。
具体连接电路如下图10所示:
图10 连接电路
2.5.整体电路
图11 整体电路
3.系统软件电路的设计
3.1.软件设计概述
整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
每一个执行软件也就是一个小的功能执行模块。
这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。
各执行模块规划好后,就可以规划监控程序了。
首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。
3.2.主程序方案
主程序调用了几个子程序,分别是数码管显示程序、键盘扫描程序以及按键处理程序、温度测试程序、中断控制程序、单片机与PC机串口通讯程序。
键盘扫描电路及按键处理程序主要是实现键盘的输入按键的识别及相关处理;温度测试程序是对温度芯片送过来的数据进行处理,进行判断和显示;数码管显示程序向数码的显示送数,控制系统的显示部分;中断控制程序实现循环显示功能;串口通讯程序作用是实现PC机与单片机通讯,将温度数据传送给PC机[6]。
如下图12所示为主程序图。
图12 主程序调用
将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序,然后在寄存器的分配上作一下调整,消除寄存器冲突和I/O冲突即可。
程序应该尽可能多的使用调用指令代替跳转指令。
因为跳转指令使得程序难以看懂各程序段之间的结构关系。
而调用指令则不同,调用指令使得程序结构清晰,无论是修改还是维护都比较方便。
将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块。
流程图如下图13所示。
图13 主程序流程图
3.3.各模块子程序设计
显示电路采用静态显示方式。
频率测量结果经过译码,通过89C51的串行口送出。
串行口工作于模式0 ,即同步移位寄存器方式。
这时从89C51的RXD(P3. 0) 输出数据,送至串入并出移位寄存器74164 的数据输入口A 和B ;从TXD( P3. 1) 输出时钟,送至74164 的时钟输入口CP。
74164 将串行数据转换成并行数据,进行锁存。
74164 输出的8 位并行数据送至8 段LED ,实现测量数据的显示。
使用这种方法主程序可不必扫描显示器,从而单片机可以进行下一次测量。
这种方法也便于对显示位数进行扩展[7]。
下面对主要几个子程序的流程图做介绍:
(1)温度测试子程序设计
(2)中断控制程序设计
图15 中断控制程序
(3)串口通信程序设计
本次通讯中,测控系统分位上位机和下位机之间的通信,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通讯。
本人采用的VB环境下PC机与单片机之间实现串行通讯的软硬件方案。
VB是Microsoft公司推出的Windows应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且Visual Basic 6.0版本带有专门实现串行通讯的MSCOMM控件[8]。
Macomb控件串口具有完善的串口数据的发送和接收功能。
通过此控件,PC机可以利用串行口与其它设备实现轻松连接,简单高效地实现设备之间的通讯。
此控件的事件响应有两种处理方式。
事件驱动方式:由Macomb控件的OnComm事件捕获并处理通讯错误及事件;查询方式:通过检查COM Even t属性的值来判断事件和错误。
1、Macomb控件的主要属性和方法。
a. Comport:设置或返回串行端口号,其取值范围为1—99,缺省为1 。
b. Setting:设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。
c. Port Open:打开或关闭串行端口。
d. Threshold:该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生MSComml-OnComm事件。
e. Input:从接收缓冲区移走一串字符。
f. Output:向发送缓冲区传送一字符串。
软件流程图如下图16和图17所示:
图16 PC通讯程序流程图图17单片机程序流程图
4.系统调试
4.1.分布调试
1、测试环境及工具
测试温度:0-100摄氏度(模拟温度环境)。
测试仪器及软件:数字万用表,温度计0~100摄氏度,串口调试助手。
测试方法:目测。
2、测试方法
使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,键盘电路,显示电路,温度测试电路等)。
系统自带测试表格数据,观察显示数据是否相符合即可。
采用温度传感器和温度计同时测量多点水温变化情况(取温度值不同的多点),目测显示电路是否正常。
并记录各点温度值,与实际温度值比较,得出系统的温度指标。
使用串口调试助手与单片机通讯,观察单片机与串口之间传输数据正确否。
3、测试结果分析
自检正常,各点温度显示正常,串口传输数据正确。
因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间才能达到稳定。
4.2.统一调试
将硬件及软件结合起来进行系统的统一调试。
实现PC机与单片机通讯,两者可以实时更新显示各点温度值。
图18演示样图
5.结论
串行口是计算机与外部设备之间进行数据交换的重要介质,作为一种灵活、方便、可靠的通信方式被广泛采用,这种通信的实现,经常要组成上位机为PC机而下位机为单片机的二级系统,通过RS232进行通信。
可将PC机与单片机组成通信系统利用VB的通信控件Mscomm及编程方法进行串口通信,这样可以很好地实现PC机与单片机之间的实时数据传送。
在本系统设计时,需要把单片机采集的温度在上位机PC上显示出来。
再利用图片框控件Picture Box以图形方式表现出来。