您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于AT89S51与DS18B20的数字温度计设计
基于AT89S51与DS18B20的数字温度计设计在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,需要利用A/D转换技术转换成相应的温度,硬件电路复杂,软件调试复杂,制作成本高。本文介绍了一种以AT89S51单片机为主控器件,以DS18B20为温度传感器的数字温度计。本数字温度计的设计采用美国DALLAS公司推出的一种改进型的智能温度传感器DS18B20作为检测元件。其温度值可以直接被读出来,通过单片机控制温度的读写和显示。DS18B20与单片机采用3线制连接,减少了外部的硬件电路,具有低成本和易使用的特点。通过添加相应的按键控制,可以使该系统实现温度的设定及自动报警功能(留给读者自己思考如何实现)。一、方案论述DS18B20是一种改进型智能温度传感器,其测温范围为:-55~125oC,最大分辨率可达0.0625oC。按照系统设计功能的要求,该系统由3个模块组成:主控制部分、测温电路及显示电路组成,如想实现自动报警功能需加报警电路及按键预置温度值电路。数字温度计总体电路结构框图如图1所示。图1数字温度计电路结构框图二、系统硬件电路设计控制器使用AT89S51,温度传感器使用DS18B20,用4位共阳极数码管以动态扫描的方法实现温度显示。系统程序主要包括主程序、温度控制子程序及显示子程序等。DS18B20AT89S51主控制器显示电路扫描驱动图2数字温度计设计电路原理图1、主控制电路主控制器采用AT89S51单片机,其是美国ATMEL公司生产的低电平、高性能的8位机。支持在线编程下载等功能,适用于许多较为复杂控制应用的场合。单片机最小系统:单片机内部虽然集成了很多电路,但仍旧不能独立运行,必须要外连一些电路,才能使单片机运行起来。这种能使单片机工作的最简电路,我们叫做单片机最小系统。主要包括以下几个方面:(1)单片机的时钟电路。如图1所示加在XTAL1、XTAL2引脚的电路就是时钟电路,主要由晶振和电容组成。晶振是一种能够输出稳定的震荡周期的元件,通过它,单片机才能有了时间的概念。通过连接两个30pF的电容,构成了单片机的时钟电路。不过晶振并不能独立的使用,必须配合合适的负载电容,否则会产生错误,或者是使晶振不能工作。(2)单片机的复位电路。它由一个10uF的电容和一个10K的电阻组成。在设计51单片机的时候,规定在51单片机的第9引脚为复位功能引脚。当在这个引脚有连续两个以上机器周期(2us以上)的高电平时,这个单片机就会复位。而本文电路设计是,电容充电的瞬间是导通的,在这个瞬间,电流通过电容器,然后向电阻方向放电,形成高电平。而电容的充电是有时间的,当选择合适的电容,其充电时间会大于2us,这时,复位的条件就成立了。当然,我们为了能够更稳定的复位,我们经常会把单片机的复位引脚的高电平时间控制得更长一点,通常会达到ms级别。(3)程序存储器的选择细心地读者可能发现,在系统图中我们将该电路的单片机第31引脚EA上接到电源VCC端,这是问什么呢?在单片机的引脚定义中,该引脚是访问外部存储器使能端,因为在“EA”这两个字母上加了一个横线。就表示,在该引脚,是低电平有效,(在数字电路数,常用这种方法表示,如果字母上边没有横线,就表示高电平有效,有横线,就表示低电平有效)即当“EA”引脚为低电平时,就直接访问外部存储器。当引脚为高电平时,访问内部存储器,当要访问的存储器地址,超出内部存储器的地址范围时,自动会访问外部存储器相应的地址。最小系统检测:在做完单片机最小系统后,我们可以进行简单检测,看看其是否能正常工作。测量XTAL1、XTAL2两个引脚的电压,正常工作的话应该是2.4V左右。如果条件可以的话,可利用示波器观察30引脚的波形。2、显示电路及原理显示电路采用4位共阳极LED数码管,从P1口输出段码,列扫描用P3口,采用上拉电阻的形式增加驱动能力来实现显示功能。显示时采用循环移位法,即4位数码管依次循环点亮,利用人眼睛的视觉暂留效果达到连续显示,主程序每运行一遍便调用一次显示子程序,将数据显示出来,见图2。3、DS18B20温度传感器简介(1)DS18B20温度传感器工作原理DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,其封装图如图3所示。图3DS18B20封装图其中,1引脚为接地端;2引脚为数据输入/输出端,接P3.7引脚;3引脚为电源端。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;可通过数据线供电,电压范围为3.0~5.5V;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;可编程的分辨率为9~12位数字量读出,可实现高精度测温;使用时无需任何外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;测量结构直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送校验码,具有极强的抗干扰能力;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20内部主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。①64位ROMROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号,且每个序列号都是不相同的。这样就可以实现一根总线上挂多个DS18B20的目的。DS18B20中的温度传感器完成温度的测量,用16位符号扩展的二进制补码读书形式提供,以0.0625oC/LSB形式表达。DS18B20温度值格式如图4所示。图4DS18B20温度值格式12位转化后得到的12数据,存储在RAM中,二进制中的前5位是符号位,如果测得的温度大于0,这5位为0,只要将测得的数值乘以0.0625即可得到实际温度值;如果温度小于0,这5位为1,测得的数值需要取反加1再乘以0.0625,即可得到实际温度。例如+25.0625oC的数字输出为0191H,-25.0625的数字输出为FF6FH。②高低温报警触发器TH和TLDS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。③配置寄存器(2)温度传感器数据的计算处理方法从DS18B20读取出的二进制值必须先转换成十进制值,才能用于字符显示。因为DS18B20为了提高转换精度采用12位。在采用12位转换精度时,温度寄存器里的值是以0.0625为步进的,即温度值为温度寄存器里的二进制值乘以0.0625,就是实际的十进制温度值,见表1。通过观察表1可以发现一个十进制值和二进制值之间有明显的关系,就是把二进制的高字节的低半字节和低字节的高半字节组成一个字节,这个字节的二进制值化为十进制值后,就是温度值的百、十、个位值,而剩下的低字节的低半字节化成十进制后,就是温度值的小数部分。所以需要4位的数码管来显示小数部分,实际应用时没必要有这么高的精度,采用1位数码管来显示小数就可以了。表1DS18B20温度与测得值对应表温度/oC二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H(3)DS18B20与单片机的接口电路DS18B20供电方式,一般采用电源供电方式。此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有较强的上拉能力(见图2)。初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始指令NYYN三、系统程序设计1、主程序流程图2、温度转换子程序流程图3、计算温度子程序流程图发DS18B20复位指令发跳过ROM指令发温度转换开始指令结束开始温度零下?温度值取补码置“—”标志置“+”标志小数位温度BCD值整数位温度BCD值结束NY4、读出温度子程序流程图5、数据刷新子程序流程图四、调试性能分析及注意事项1、调试性能分析系统的调试以程序为主。硬件比较简单,首先检测电路的焊接是否正确,别烧毁器件。软件调试可以先编写显示程序并进行硬件联机调试,直至成功。然后进行主程序、测温子程序等的编程及调试。由于DS18B20与单片机采用串行数据传送,因此对DS18B20进行编程时必须严格地保证读写时序,否则将无法读取测量结果。本程序采用单片机汇编语言编写,用编译器编程调试,能显示温度发DS18B20复位指令发跳过ROM指令发读取温度指令读取操作,CRC校验9字节完?CRC校验正确?移入温度暂存器结束NNYY数据数据移入显示寄存器十位数0?百位数0?十位数显示百位数不显示百位数数据(不显示符号)结束NYNY值,而且在有温度变化时(例如用火给其加温)显示温度能够发生变化。性能测试可用制作温度计和已有成品温度计来同时测量比较,DS18B20的精度很高,所以误差指标可以限制在0.1oC以内,完成适用一般的应用场合,其低电压供电特性可做成电池供电的手持电子温度计。2、DS18B20使用中的注意事项DS18B20温度计还可以在高低温报警、远距离多点温度控制等方面应用,但在实际应用中应注意以下几个方面的问题:(1)DS18B20从测温度结束到将温度值转换为数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示一不变的值。(2)在实际使用中,应使电源电压保持在5V左右,若电源过低,会使所测得的温度与实际温度出现偏差。(3)由于DS18B20与单片机采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格保证读写时序,否则无法读取测温结果。以DS18B20温度传感器设计数字温度计线路简单、硬件少、软件设计简单等优点,有着较好的应用前景。只需要3根连线就能很容易组成多点测温系统。因此在工、农业中和科学研究中有着广阔的应用前景。
本文标题:基于AT89S51与DS18B20的数字温度计设计
链接地址:https://www.777doc.com/doc-2568522 .html