多机温度检测_第1页
多机温度检测_第2页
多机温度检测_第3页
多机温度检测_第4页
多机温度检测_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南理工大学单片机应用与仿真训练设计报告多机温度检测系统设计姓 名: 李汀立/韩福霞 学 号:4/2专业班级: 电信08-1 指导老师: 王新/张宏伟 所在学院: 电气工程与自动化学院 2011年11月22日摘要本设计是以 AT89S52单片机为控制核心,利用新型一线制温度传感器 DS18B20测量温度值,实现环境温度的检测和报警。系统测温范围为-40+85,测量精度为 0.5。用户可以自定义报警上、下限,一旦温度超过极限值,单片机便启动声光报警。该系统精度高、测温范围广、报警及时,可广泛应用于基于单片机的测温报警场合。系统抗干扰性强、设计灵活方便,适合在恶劣的环境下进行温度测量。系统硬件电路

2、包括传感器数据采集、温度显示、模式选择、上、下限报警主电路等。整个装置的控制核心是 AT89S52单片机。温度传感器 DS18B20采用外部电源供电,传感器输出引脚直接和单片机相连。电路支持模式选择功能,可以选择设定报警极限值或显示当前温度值。当被测温度越限时,报警主电路产生声光报警。拨动开关可以对设定报警极限值进行写保护。采用2片单片机,组成多机温度检测系统;下位单片机采集温度,通过串行通信传送至上位单片机;上位单片机用数码管显示温度大小;基本范围0100;精度误差小于0.5;可以任意设定温度的上下限报警功能关键字:AT89S52;DS18B20温度传感器;数码管;测温报警目录摘要21.概述

3、41.1课题背景41.2 系统概述42 系统方案设计52.1主控制部分设计52.2 传感器部分设计63 系统总体方案及硬件设计113.1 AT89S52单片机的最小相系统113.2 DS18B20的I/O接线图123.3 数据显示部分123.4整体电路124 软件设计134.1 概述134.2 主程序方案134.3 DS18B20的相处理子程序144.4 各模块工作流程图155 Proteus软件仿真186 课程设计体会187 参考文献181. 概述1.1课题背景在工、农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。首先让我们了解一下多点温度检测系统在各个方面的应用领域:消防电气的

4、非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热检测。温度检测系统应用十分广阔。1.2 系统概述本设计运用主从分布式思想,由上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用 RS-232串行通讯标准,通过上位机控制下位机进行现场温度采集。温度值由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。上位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网

5、络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。温度检测系统有则共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D 转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差;又因为检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠

6、性下降 。所以多点温度检测系统的设计的关键在于两部分:温度传感器的选择和主控单元的设计。温度传感器应用范围广泛、使用数量庞大,也高居各类传感器之首。2 系统方案设计2.1主控制部分设计方案一:此方案采用PC机实现。它可在线编程,可在线仿真的功能,这让调试变得方便。且人机交互友好。但是PC机输出信号不能直接与DS18B20通信。需要通过RS232电平转换兼容,硬件的合成在线调试,较为繁琐,很不简便。而且在一些环境比较恶劣的场合,PC机的体积大,携带安装不方便,性能不稳定,给工程带来很多麻烦!方案二:此方案采用AT89S52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法

7、和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟 2.1.1 对AT89S52功能的认识AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在

8、单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图 1

9、 AT89S522.2 传感器部分设计方案一:采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案二:在多点测温系统中,传统的测温方法是将模拟信号远距离采样进行AD转换,而为了获得较高的测温精度,就必须采用措施解决由长线传输,多

10、点测量切换及放大电路零点漂移等造成的误差补偿问题。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS1820和微控制器AT89S52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大,且由于AT89S52可以带多个DSB1820,因此可以非常容易实现多点测量.轻松的组建传感器网络。采用温度芯片DS

11、18B20测量温度,可以体现系统芯片化这个趋势。部分功能电路的集成,使总体电路更简洁,搭建电路和焊接电路时更快。而且,集成块的使用,有效地避免外界的干扰,提高测量电路的精确度。所以集成芯片的使用将成为电路发展的一种趋势。本方案应用这一温度芯片,也是顺应这一趋势。综上所述,温度传感器以及主控部分都采用第二方案。系统采用针对传统温度测温系统测温点少,系统兼容性及扩展性较差的特点,运用分布式通讯的思想。设计一种可以用于大规模多点温度测量的巡回检测系统。该系统采用的是RS-232串行通讯的标准,通过上位机进行现场的温度采集,温度数据既可以由下位机模块实时显示,也可以送回上位机进行数据处理,具有巡检速度

12、快,扩展性好,成本低的特点。2.2.1 对DS18B20功能的认识DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式。测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20支持“一线总线”接口,测量温度范围为 -55C+125C,在-10+85C范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如

13、:环境控制、设备或过程控制、测温类消费电子产品等。DS18B20采集被控对象的实时温度并从单片机的 P1.6口输入,R3为上拉电阻。电路采用数字信号输出可提高信号抗干扰能力和温度测量精度。电路工作电压使用范围为3.05.5V,采用外部供电方式。图 2 DS18B202.2.2 DS18B20(1) DS18B20内部结构如下图所示。图 3 DS18B20内部框图DS18B20有4个主要的数据部件: 64位激光ROM。64位激光ROM从高位到低位依次为8位CRC、48位序列号和8位家族代码(28H)组成。 温度灵敏元件。 非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。 配置寄

14、存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20在0工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图所示。TMR1R011111MSB DS18B20配置寄存器结构图LSB其中,TM:测试模式标志位,出厂时被写入0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如下表所列,出厂时R0、R1置为缺省值:R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。配置寄存器与分辨率关系表 :R0R1温度计分辨率/bit最大转换时间/us00993.750110187.510113751112750(2) 高速暂存存储器高速暂存

15、存储器由9个字节组成,其分配如下图所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如图所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。温度低位温度高位THTL配置保留保留保留8位CRCLSB DS18B20 存储器映像图MSB温度值格式图DS18B20 温度数据表:232221202-12-22-32-4MSBLSBSSSSS262524对DS18B20的设计,需要注意以下问题(1)对硬件结构简单的单线数字温度

16、传感器DS18B20 进行操作,需要用较为复杂的程序完成。编制程序时必须严格按芯片数据手册提供的有关操作顺序进行,读、写时间片程序要严格按要求编写。尤其在使用DS18B20 的高测温分辨力时,对时序及电气特性参数要求更高。(2)有多个测温点时,应考虑系统能实现传感器出错自动指示,进行自动DS18B20 序列号和自动排序,以减少调试和维护工作量。(3)测温电缆线建议采用屏蔽4 芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。DS18B20 在三线制应用时,应将其三线焊接牢固;在两线应用时,应将VCC与GND接在一起,焊接牢固。若VCC脱开未接,传感器只送85.0

17、的温度值。(4)实际应用时,要注意单线的驱动能力,不能挂接过多的DS18B20,同时还应注意最远接线距离。另外还应根据实际情况选择其接线拓扑结构。3 系统总体方案及硬件设计3.1 AT89S52单片机的最小相系统图 4 AT89S52最小相系统3.2 DS18B20的I/O接线图图 5 DS18B20接线图3.3 数据显示部分图 6数据显示部分3.4整体电路见附件二:系统原理图4 软件设计4.1 概述 整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操

18、作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能和键盘设置选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。4.2 主程序方案主程序调用了数码管显示程序、温度测试程序、中断控制程序、单片机与PC机串口通讯等程序。温度测试程序:对温度芯片送过来的数据进行处理,进行判断和显示。数码管显示程序:向数码的显示送数,控制系统的显示部分。中断

19、控制程序:实现循环显示功能。串口通讯程序:实现PC机与单片机通讯,将温度数据传送给PC机将各个功能程序以子程序的形式写好,当写主程序的时候,只需要调用子程序,然后在寄存器的分配上作一下调整,消除寄存器冲突和I/O冲突即可。程序应该尽可能多的使用调用指令代替跳转指令。因为跳转指令使得程序难以看懂各程序段之间的结构关系。而调用指令则不同,调用指令使得程序结构清晰,无论是修改还是维护都比较方便。将功能程序段写成子程序的形式,除了方便调用之外,还有一个好处那就是以后写程序的时候如果要用到,就可以直接调用这个单元功能模块。4.3 DS18B20的相处理子程序 4.3.1 DS18B20初始化子程序 DS

20、18B20的使用必须遵循初始化到 ROM操作命令到存储器操作命令的规定协议。每完成一次测温,要重新进行初始化。单片机先发一个复位脉冲,保持低电平时间最少 480s,最多不能超过960s。然后,单片机释放总线,等待 DS18B20的应答。DS18B20在接收到复位脉冲后等待1560s发出应答脉冲,应答脉冲持续60240s。 4.3.2 DS18B20写控制字子程序 当主机把数据线从逻辑高电平拉到逻辑低电平的时候,写时间开始。写一位数据最少需要60s,两个数据位之间最少有 1s的间隔。I/O总线拉低后,DS18B20在15s后开始采样,如果线上是高电平,就写1,如果线上是低电平,就写0,写时间需要

21、1575s,且在 2次独立的写时间之间至少需要 1s的恢复时间。 4.3.3 DS18B20读出温度子程序 当主机把数据线从高电平拉到低电平时,读时间开始。读出温度子程序的主要功能是读出 RAM中的 9字节,在读出时需进行 CRC校验,校验有错时不进行温度数据的改写。读时间需1560 s,且在 2次独立的读时间之间至少需要 1 s的恢复时间。DSl8B20在读时间开始 15s后开始采样总线电平。 4.3.4 DS18B20温度转换子程序 温度转换命令子程序主要是发温度转换开始命令,DS18B20用 12位存贮温度值,最高位为符号位,低四位为小数,最高精度可达 0.0625度。温度数据转换完成的

22、任务是把用二进制表示的温度转换成 1个字节的两位压缩 BCD码。转换的方法有两种,一种是通过计算,另一种是通过查表,该装置设计方案采用前者。计算温度子程序温度读取值进行 BCD码的转换运算,并进行温度值正负的判断。 4.4 各模块工作流程图4.4.1 上位机工作过程图 7 上位机工作流程图4.4.2 DS18B20工作过程图 8 DS18B20工作流程图本次通讯中,测控系统分位上位机和下位机之间的通信,系统中单片机负责数据采集、处理和控制,上位机进行现场可视化检测,通信协议采用半双工异步串行通信方式,通过RS232的RTS信号进行收发转换,传输数据采用二进制数据,上位机与下位机之间采用主从式通

23、讯。4.4.3 下位机接收过程图 9 下位机工作流程图下位机采用的是单片机基于数字温度传感器DS18B20的系统。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械等。5 Proteus软件仿真见附三:proteus软件仿真图6 课程设计体会辛苦忙碌了几天,我们的单片机课程设计课题也告一段落。设计实物也基本达到预期的效果,但由于

24、能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙数不胜数。但我们可以自豪的说,这里面的每一段代码,都有我们的劳动。当看着我们的程序,我们成天相伴的系统能够正常的运行,真是莫大的幸福和欣慰。我们相信其中的酸甜苦辣最终都会化为甜美的甘泉。单片机课程设计,也许是我们大学生涯交上的最后一个作业了。想借此机会感谢一直以来给我们帮助的所有老师、同学,你们的友谊是我们人生的财富,是我们生命中不可或缺的一部分。这次做课程设计的经历也会使我们终身受益,我们感受到做论文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有认真研究,就不会有所突

25、破,希望这次的经历能让我们在以后学习中激励着我们继续进步。7 参考文献(1) 单片机原理及应用技术 余发山,王福忠主编 ,徐州;中国矿业大学出版社 2008.(2) 数字温度传感器DS18B20及其应用.pdf(3)余永权. ATMEL 89系列单片机应用技术M. 北京:北京航空航天大学出版社2002.(4)贾振国. DS1820 及高精度温度测量的实现J.电子技术应用,2000(1):58 - 59.附件一:源程序代码上位机源程序#includeunsigned char t=0,0,tt1=0,0,0,0,0,tt24,flag=1;unsigned char *pt;/用来存放温度值,测

26、温程序就是通过这个数组与主函数通信的unsigned char code dotcode=0,25,50,75;sbit DQ = P16;sbit UP=P10;sbit DW=P11;sbit G=P12;void delay(unsigned char i)while(i-);void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函数*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(8); /稍做延时 DQ = 0; /单片机将DQ拉低 del

27、ay_18B20(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay_18B20(14); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20);/*ds18b20读一个字节*/ unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); return(dat);

28、/*ds18b20写一个字节*/ void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat=1; /*读取ds18b20当前温度*/unsigned char *ReadTemperature(char TH,char TL,unsigned char RS)unsigned char tt=0,0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteO

29、neChar(0x4E); / /写入写暂存器命令,修改TH和TL和分辩率配置寄存器/先写TH,再写TL,最后写配置寄存器WriteOneChar(TH);/写入想设定的温度报警上限WriteOneChar(TL);/写入想设定的温度报警下限WriteOneChar(RS);/写配置寄存器,格式为0 R1 R0 1,1 1 1 1/R1R0=00分辨率娄9位,R1R0=11分辨率为12位 delay_18B20(80); / this message is very importantInit_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOne

30、Char(0x44); / 启动温度转换delay_18B20(80); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度delay_18B20(80);tt0=ReadOneChar(); /读取温度值低位tt1=ReadOneChar(); /读取温度值高位return(tt);void init()SCON=0X40; /多机通信方式,接收允许PCON=0X00; /波特率加倍TMOD=0

31、x20; /定时器1,模式2TH1=0xf3;TL1=0xf3; /定时器初值TR1=1; /启动定时器1void senddata(unsigned char tt2)int i;init();for(i=0;i4;i+)SBUF=tt2i; /写SBUF,开始发送while(!TI); /等待发送TI=0; /清发送标志位delay_18B20(100);void main() unsigned char x,y; /下一步扩展时可能通过这两个变量,调节上下限 unsigned int TH=50,TL=5; /测温函数返回这个数组的头地址 while(1) pt=ReadTemperat

32、ure(TH,TL,0x1f); /上限温度50,下限5,分辨率9位,也就是0.25C,TM R1 R0 1 1 1 1 1 t0=*pt;/读取温度,温度值存放在一个两个字节的数组中pt+;t1=*pt;t1=4;/右移4位 x=x&0x0f;/和前面两句就是取出t0的高四位 t1=t1|x;/将高低字节的有效值的整数部分拼成一个字节 tt10=(t1%100)/10;/分离出十位 tt11=(t1%100)%10; /分离出个位 t0=t0&0x0c;/取有效的两位小数 t0=2;/左移两位,以便查表 x=t0; y=dotcodex;/查表换算成实际的小数 tt12=y/10;/分离出十

33、分位 tt13=y%10;/分离出百分位 if(G=0|UP=0|DW=0) /是否改变温度上、下限flag=0; if(G=0)if(UP=0)TH+; if(DW=0)TH-;if(TH=100|TH=100|TL=(TH/10)&(tt11=(TH%10)tt10=10;tt11=10;tt12=10;tt13=10;if(tt10=TL/10)&(tt11=TL%10)|(tt10=TL/10)tt10=11;tt11=11;tt12=11;tt13=11;flag=1;senddata(tt1); 下位机源代码#include#include#define uint unsigned

34、 int#define uchar unsigned charuchar code tab =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c;uchar code tab1=0xfe,0xfd,0xfb,0xf7;uchar code tt14;uchar b,num=0,i;sbit RE=P10;sbit LENG=P11;sbit P0_7=P07;void delay(unsigned int i)while(i-); void UART_Init(void)SCON = 0x50 ; /SCON: serail

35、mode 1, 8-bit UART, enable ucvr PCON |= 0x00; /SMOD=0;/波特率加倍 TMOD=0x20; /定时器1,模式2TH1=0xf3;TL1=0xf3;TR1=1;ES=1;EA=1;void show(uchar tt14) /数码管显示for(num=0;num4;num+)b=tt1num;P2=tab1num;if(num=1)P0=tabb;P0_7=1;elseP0=tabb;delay(600);void main()UART_Init();while(1);void INT_UartRcv(void) interrupt 4 /串口

36、通信服务子函数uchar Rcv=0;uchar tt4;if(RI)RI=0; Rcv=SBUF;tti=Rcv;i+;if(tt0=10)RE=0;else RE=1;if(tt0=11)LENG=0;elseLENG=1;if(i=4)show(tt);i=0;return;附件二:系统原理图附图 1 系统原理图附三:proteus软件仿真图附图 2 系统正常测温附图 3 温度超上限显示附图 4 温度超过100或低于下限显示摘要本设计是以 AT89S52单片机为控制核心,利用新型一线制温度传感器 DS18B20测量温度值,实现环境温度的检测和报警。系统测温范围为0100,测量精度为 0.

37、25。用户可以自定义报警上、下限,一旦温度超过极限值,单片机便启动声光报警。该系统精度高、测温范围广、报警及时,可广泛应用于基于单片机的测温报警场合。系统抗干扰性强、设计灵活方便。系统硬件电路包括传感器数据采集、串行通信、温度显示、模式选择、上下限报警主电路等。整个装置的控制核心是 AT89S52单片机。温度传感器 DS18B20采用外部电源供电,传感器输出引脚直接和单片机相连。电路支持模式选择功能,可以选择设定报警极限值或显示当前温度值。当被测温度越限时,报警主电路利用指示灯报警。通过按键可以任意设定报警温度上下限。采用2片单片机,组成多机温度检测系统;下位单片机采集温度,通过串行通信传送至

38、上位单片机;上位单片机用数码管显示温度大小;基本范围0100;精度误差小于0.25;可以任意设定温度的上下限报警功能。关键字:AT89S52 DS18B20 数码管 测温报警 串行通信1 概述1.1 设计应用背景在现代社会,不管是在工农业生产还是在人们的日常生活中,对温度的测量及控制都扮演着很重要的角色。首先让我们了解一下多点温度检测系统在各个方面的应用领域:电力、电讯设备之过热故障预知检测,空调系统的温度检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械等设备温度过热测。温度检测系统应用十分广阔。单片机的产生,使计算机正式形成了通用计算机系统和嵌入式计算机系统的分支。温度检测系统的

39、应用遍布社会生活的各个层面。1.2系统概述本设计由上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。通过上位机控制下位机进行现场温度采集。温度值由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。上位机采用的是单片机基于数字温度传感器DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便。总体上该系统分为两部分:下位机温度采集发送系统和上位机数码管显示报警系统。下位机温度采集发送系统由温度检测模块、下位机串行通信模块两部分组成,如图1-1所示温度测量系统的系统框图:温 度采 集 上位机串行通信模块下位机

40、串行通信模块图1-1温度测量系统框图上位机数码管显示报警系统:上位机系统的主要功能是接收下位机发送过来的温度数据,与报警温度进行比较,判断是否发送报警信号,并同时直接驱动四位八段数码管进行显示。上位机系统由串口接收模块、处理控制模块、数码管显示模块和报警模块四部分组成,如图1-2上位机系统框图:数码管显示上位机主控模块上位机串口接收模块报警控制模块 图1-2上位机系统框图2 系统总体方案及硬件设计2.1 方案比较方案一:此方案采用PC机实现。它可在线编程,可在线仿真的功能,这让调试变得方便。且人机交互友好。但是PC机输出信号不能直接与DS18B20通信。需要通过RS232电平转换兼容,硬件的合

41、成在线调试,较为繁琐,很不简便。方案二:此方案采用两片AT89S52八位单片机实现。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信.运用主从分布式思想,由一台上位机,下位机多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统,实现远程控制。经过比较,采用两片AT89S52单片机可以出色完成各项设计要求,而且结构简单,程序调试方便,具有很好的应用前景。2.2总体方案该数字温度检测系统由电源电路、晶振电路、复位电路、下载电路、单片机、数字显示电路、温度测量电路、报警电路和控制电

42、路组成。可以实现基本范围为0100的温度测量和任意设置温度上下限。当所设置的温度高于温度的上限或者低于温度所设置的下限时可通过发光二极管进行报警。系统总体方案图如下:主控制器 LED 显 示复 位 电 路报 警 显 示时 钟 电 路按 键 控 制 电 路温 度 传 感图2-2系统总体方案图2.3 AT89S52引脚图AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,

43、拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.4时钟晶振电

44、路时钟晶振电路模块为单片机提供特定的时钟周期,以备单片机工作使用。单片机内部有一个用于构成振荡器的高增益反相放大器的输入与输出端分别是引脚XTAL1和XTAL2,在两引脚上外接时钟源即可构成时钟电路。其电路图如下图2-4所示:图2-4晶振电路2.5复位电路系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R1/R2分别采用1k、10k的阻值,电容采用电容值为10F的电解电容。具体连接电路如图2-5所示:图2-5复位电路2.6数码管显示设计中用到的数码管为:5461AS 四位共阴极二极管显示器 是阴极公共端,也是位码,ABCDEFG DP是段码。LED的驱动电路简单,使用方便,具有耗电

45、少、成本低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点。LED数码管与单片机的接口按显示方法可分为静态显示和动态显示。静态显示就是显示驱动电路具有输出锁存功能,单片机将要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的数据。只要当前显示的数据没有变化,就无须理睬数码显示管。静态显示的数据稳定,占用的CPU时间少。静态显示中,每一个显示器都要占用单独具有琐存功能的I/O口,该接口用于笔画段字型代码。动态扫描方法是用其接口电路把所有显示器的8个笔画字段(ag和dp)同名端连在一起,而每一个显示器的公共极COM各自独立接受I/O线控制。CPU向字段输出端口输出字型码时,所有显

46、示器接受相同的字型码,但究竟使那一位则由I/O线决定。动态扫描用分时的方法轮流控制每个显示器的COM端,使每个显示器轮流电亮。在轮流点亮过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象就是一组稳定的显示数据。这里用的是动态扫描显示。如图2.6所示:图2.6四位数码管CPU向字段输出端口输出字型码时,所有显示器接收到相同的字型码,但究竟是使用哪个显示器,则取决于COM端,而这一端是由I/O控制的,由单片机程序设定何时显示哪一位。2.8报警电路电路采用的是二极管发光报警电路,当温度达到设定上下限时二极管发光报警。在图中,P1.0接二极管负极。当P1.0

47、输出低电平“0”时,二极管D1导通,二极管D1获得足够大的电压而发光;当P1.0输出高电平“1”时,二极管D1不亮。另一个二极管的原理和它一样,二者分别控制上下限报警。电路图如下图2-8所示:图2-8 报警电路2.9温度检测电路2.9.1数字温度传感器DS18B20DS18B20一线式数字温度传感器,具有3引脚TO92小体积封装形式。测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口少,可节省大量的引线和逻辑电路。DS18B20的主要特性适应电压范围更

48、宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。温范围55125,在-10+85时精度为0.5。可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750

49、ms内把温度值转换为数字,速度更快。DS18B20的外形 图1 DS18B20的外形 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如上图。 DS18B20引脚定义: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图2: DS18B20内部结构图DS18B20有4个主要的数据部件:、光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是

50、该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。、DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表1: DS18B20温度值格式表 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0

51、,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。表2: DS18B20温度数据表例如+125的数字输出为07D0H(0x7D),+25.0625的数字输出为0191H,-25.0625的数字输出为FE6FH,-55的数字输出为FC90H。、DS18B20温度传感器的存储器 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。、配置寄存器 该字节各位的意义如下:表3: 配置寄存器结构TMR1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论