史雪峰
(亳州师范高等专科学校 理化系 邮编:236800 )
摘 要:数字温度测量报警器是利用传感器检测温度,采用数字数码管显示当前温度,当温度低于下限温度或者高于上限温度时系统发出声报警,从而起到测量和报警的功能。本系统以AT89S51单片机作为主控系统,利用DS18B20数字温度传感器作为温度传感器件。通过四位共阳极数码管作为显示器件,通过单片机控制继温度显示温度。并可以设置温度上下限,当温度不在设置的温度范围内,蜂鸣器发出报警声。分析了温度传感器的工作原理。系统硬件电路以及软件部分的设计。实际测试表明,该方案切实可行并已在许多通信领域得到广泛应用。
关键词: 单片机,温度报警, DS18B20,AT89S51
一、引 言
在日常生活及工农业生产中经常要涉及到温度的检测及控制。像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量是非常重要的。传统的测温元件有热电偶,热敏电阻还有一些输出模拟信号的温度传感器。而这些测温元件所测出的一般都是电压或电流,再将其转换成对应的温度,所以需要比较多的外部硬件支持。如果需要进行数字显示,就还需要进行A/ D转换,才能和主控制器进行通信, 其硬件电路复杂、而且软件调试繁琐、制作成本高。故在本设计中将采用另外一种方案,即使用DS 18B20数字温度传感器作为测温元件。该数字温度传感器即是美国DA LLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器。
1
本数字温度测量报警器的设计主要采用上述改进型智能温度传感器DS18B20作为检测元件,以AT89S51单片机作为主控系统,采用四位共阳极数码管作为显示器件,通过单片机控制继温度显示温度,并设置了超限报警功能,如果测得的温度超过了预设温度值,蜂鸣器将会发出报警信号,同时数码管正常显示温度值,按下复位键系统停止报警,系统将再次检测测得的温度值,若在预设范围内,数码管正常显示测得的温度值,否则产生报警信号。而且传感器DS 18B20是采用3线制与单片机相连,减少了外部的硬件电路,主控制器通过软件处理接收到的数据,从而使得整个系统具有低成本、易使用和稳定性高等特点。在通信以及其他相关领域有着不可忽视的美好前景!
二、温度传感器工作原理
DS18B20温度传感器采用3脚FR-35封装或8脚SOIC封装。其与传统的热敏电阻等测温元件相比,能直接读出被测温度值,并且可根据实际要求通过简单的编程实现9 ~12位的数字值读数方式。DS18B20的主要性能特点在于其负电压特性,当电源极性接反时,温度计不会因发热而被烧毁;同时,其还具有用户自定义的非易失性温度报警设置以及实现多点组网等强大功能!DS18B20 的具体测温原理图则如图1所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2 的脉冲输入。图中还隐含着计数门,当计数门打开时,DS 18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度的测量,计数门的开启时间由高温度系数振荡器来确定,每次测量前,首先将-55 ℃所对应的一个基数分别置入减法计数器1、温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值[1]。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0 时,温度寄存器的值将加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值就是所测温度值。斜率累加器则用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到温度寄存器值达到被测温度值。
2
图1 DS18B20测温原理图
由于DS18B20单线通信功能是分时完成的,它有很严格的时序概念,因此其读写时序非常重要[2]。当DS18B20 处于写存储器操作和温度A/ D转换操作时,总线上必须有很强的上拉,上拉开启时间最大为10μs,采用寄生电源供电方式时VDD和GND端需接地。另外,由于单线制只有一根线,因此发送接口必须是三态的。同时,系统对DS18B20 的各种操作必须按协议进行,其操作协议为:初始化DS18B20(发复位脉冲)→ROM功能命令→发存储器操作命令→处理数据。
本系统单片机电路采用智能温度传感器DS18B20作为检测元件,此传感器可以直接读取被测温度值进行转换,采用独立按键的方式,使实现起来比较简单。此系统采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管传送数据实现温度显示。如图3.1为数字温度报警器系统结构框图:
时钟振荡 单片机复位 主 控 报警点按键调整 制 器 温度测量 数码管显示 报警模块 图2 总体方框图
模块 3
三、单片机工作原理分析
3.1 单片机芯片介绍[3]
AT89C2051是精简版的51单片机,精简掉了P0口和P2口,只有20引脚,但其内部集成了一个很实用的模拟比较器,特别适合开发精简的51应用系统,毕竟很多时候我们开发简单的产品时用不了全部32个I/O口,用AT89C2051更合适,芯片体积更小,而且AT89C2051的工作电压最低为2.7V,因此可以用来开发两节5号电池供电的便携式产品。
本文以ATMEL公司生产的51系列家族的AT89S51和AT89C2051两种单片机来讲解,两种单片机是目前最常用的单片机,其中AT89S51为标准51单片机,当然其功能比早期的51单片机更强大,支持ISP在系统编程技术,内置硬件看门狗。 芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。。。40,其中芯片的1脚顶上有个凹点(见右图)。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。
①、主电源引脚(2根)
●VCC(Pin40):电源输入,接+5V电源 ●GND(Pin20):接地线 ②、外接晶振引脚(2根)
●XTAL1(Pin19):片内振荡电路的输入端 ●XTAL2(Pin20):片内振荡电路的输出端 ③、控制引脚(4根)RST/VPP(Pin9):复位
引脚,引脚上出现2个机器周期的高电平将使单片机复位。 ●ALE/PROG(Pin30):地址锁存允许信号 ●PSEN(Pin29):外部存储器读选通信号
●EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
④、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控制电机、交通灯、霓虹灯等。
4
3.2 单片机模块功能介绍
该模块有以下几个部分组成:
复位电路:为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即 4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器 稳定工作时,复位信号才被撤除,微机电路开始正常工作[4]。
目前为止,单片机复位电路主要有四种类型: (1) 微分型复位电路; (2) 积分型复位电路; (3) 比较器型复位电路; (4) 看门狗型复位电路。 3.3 振荡电路原理及分析:
图3 复位电路
晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分,其中较低 的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶 振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄, 所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化,震荡电路的电路图如图4所示.
晶振有一个重要的参数,那就是负载电容值,选 择与负载电容值相等的并联电容,就可以得到晶振标 称的谐振频率[5]。
一般的晶振振荡电路都是在一个反相放大器(注 意是放大器不是反相器)的两端接入晶振,再有两个 电容分别接到晶振的两端,每个电容的另一端再接到
图4 晶振电路
地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。
5
四、 数字温度测量报警器的设计
4.1 温度传感器DS18B20的引脚介绍
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能 直接读出被测温度,并且可根据实际要求通过简单的编 程实现9~12位的数字值读数方式。
TO-92封装的DS18B20的引脚排列见下图5, 其引脚功能描述见表4.1。
表4-1 DS18B20详细引脚功能描述
序号 1 2 3 名称 GND DQ 以向器件提供电源。 VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 引脚功能描述 地信号 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可图5 DS18B20引脚图
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能; ●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V; ●零待机功耗;
●温度以9或12位数字; ●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
4.2 数字温度测量报警器的电路实现
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图5
6
所示。
I/O 64位ROM 存储器与控制C 和单线 接口 高速缓存 温度传感器 高温触发器低温触发器TL 配置寄存器 Vdd 8位CRC发生器 图5 DS18B20内部结构
64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限[6]。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3-4所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图E所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率[7]。
表4—2 DS18B20字节定义
温度 LSB 温度 MSB TH用户字节1 TL用户字节2 配置寄存器 保留 保留 7
由表4.2可见,DS18B20温度转换的时 间比较长,而且分辨率越高,所需要的温度 数据转换时间越长。因此,在实际应用中要 将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未 用,表现为全逻辑1。第9字节读出前面所
保留 CRC 有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。
表4—3 DS18B20温度转换时间表
R1 0 0 1 1 R0 0 1 0 1 分辨率/位 9 10 11 12 温度最大转换时间/ms 93.75 187.5 375 750 DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索[8]。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
4.3 数字数码显示模块
采用动态节能四位共阳极数码管显示,由
8
四个三极管驱动,三级管是位选,和数码管共 的那个阳串联控制开和管,数码管别的连段选, 和控制器连接。为什么要用三级管驱动,因为 它的功率相对大,并且数码管显示几段是不定 的,这里要通过足够的电流。由于不定,所以 每段要分别串联限流电阻。
4.4 报警系统
本报警系统中有三个独立式按键可以分别 调整温度计的上下限报警设置,电路中蜂鸣器 可以在被测温度不在上下限范围内时,发出报 警鸣叫声音,同时红色LED闪烁,实现报警 功能。
复位的实现是通过单片机的复位电路实现
上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。
4.5 DS18B20的测温原理[9]
DS18B20 的测温原理4.4如所示,图中低温度系数晶振的振荡频率受温度的影响很小〔1〕,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2 的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20 就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1 和温度寄存器中,减法计数器1 和温度寄存器被预置在-55 ℃ 所对应的一个基数值。减法计数器1 对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1 的预置值减到0 时温度寄存器的值将加1,减法计数器1 的预置将重新被装入,减法计数器1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2 计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图4.4中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直
图4.9 报警系统电路图
9
至温度寄存器值达到被测温度值,这就是DS18B20 的测温原理。
另外,由于DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,因 此读写时序很重要。系统对DS18B20 的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM 功能命令→发存储器操作命令→处理数据。各种操作的时序图与
DS1820 相同。
五、系统软件设计
系统程序主要包括主程序,温度转换命令子程序,计数据刷新子程序等。 5.1 主程序
序,读出温度子程算温度子程序,显示
5.2 读出温度子程序
读出温度子程序的主RAM中的9字节,在读出验,校验有错时不进行温度序流程图如图5.2所示。
要功能是读出时需进行CRC校数据的改写。其程
10
图5.2 读温度流程图
5.3 温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图5.3所示.
发DS18B20复位命令 发跳过ROM命令 发温度转换开始命令 结束 图5.3 温度转换流程图
5.4 计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5.4所示。
11
开始 N 温度零下? Y 温度值取补码置“—”标置“+”标志 计算小数位温度BCD计算整数位温度BCD 结束 图5.4 计算温度流程图
5.5 显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图5.5。
温度数据移入显示寄存器 N 十位数0? Y 百位数0? N Y 十位数显示符号百位数不显示 百位数显示数据(不显示符号) 结束 图5.5 显示数据刷新流程图
五、小 结
本设计是利用数字温度传感器DS18B20作为温度传感器件,采用较为便宜,
12
性能稳定的AT 89S51单片机作为主控芯片,用四位一体共阳极的数码管作为显示器件,蜂鸣器及报警电路器件构成了整个系统整体。
本设计的优点是价格较低、性能稳定、精确度较高、测量准确、方便携带、便于用在工农业等温度控制领域。其电源部分采用了比较普通的三端稳压器L7805,便于提供比较稳定的电源。另外,本系统采用了宽电源设计,可以用+7 ~+12V的直流电源供电,也可以直接用+5V 的直流电源。通过具体设计及实际测试,充分证明了该系统设计方案的可行性和有效性,各项性能指标均达到了预期的要求。传感器技术与单片机技术有机结合的综合体将会是现代通信的一个必然的趋势!
如果把单片机换成贴片的封装器件利于大规模的工业商业生产。在毕业设计过程中,巩固了在校期间内学过的知识,尤其是单片机和模拟电子方面的知识,同时通过这次毕业设计提高了单片机编程的能力,尤其是获得的软件调试经验,同时加强了我的实际编程能力,同时也让自己更加的知道了自己知识领域里的不足和缺陷。该温度测量报警器只是DS18B20在温度控制领域的一个简单实例,还有许多需要完善的地方,例如可以将测得的温度通过单片机与通讯模块相连接,以手机短消息的方式发送给用户,使用户能够随时对温度进行监控。此外,还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业。本温度报警系统可以应用于多种场合,像的温度、育婴房的温度、水温的测量报警。用户可灵活选择本设计的用途,有很强的实用价值。
13
致 谢
在学校日子即将结束,我也将走入社会。在此毕业论文完成之际,我想感谢那些在我大学生活中深深影响我的老师、同学。
我要感谢指导过我的老师们,在学术上的精心指导和严格要求,在思想、学习和生活等各个方面的典范作用,在科研中创造的良好学术气氛,在系统研究和调试过程中给予的及时帮助。从老师们的身上我不仅学到了专业知识,学到了积极的人生态度和做人的道理,更重要的是明确了今后努力的方向。在此,我再一次对我敬爱的所有老师的培养和关怀表示诚挚的谢意!老师们培养出我的科研探索精神,吃苦耐劳精神,不断创新精神,将对我终身受益!
其次我要感谢在校期间来所有教授过我知识的老师们,是你们让我打下了坚实的基础,让我的大学生涯变得更为充实。
最后感谢我的家人和朋友,谢谢你们不断的支持和鼓励我,愿你们永远健健康康,快快乐乐。
在论文即将完成之际,再次向给予我帮助的老师们同学们说一声:您们辛苦了!
14
参考文献
[1] 谭浩强.C程序设计(第4版)[M].北京:清华大学出版社,2010:52-58. [2] 郭天祥.新概念51单片机c语言教程[M].北京:电子工业出版社,2009:125-128. [3 http://wenku.baidu.com/view/05ca0fea998fcc22bcd10ded.html
[4] 黄智伟,王彦.全国大学生设计竞赛训练教程[M].武汉:华中科技大学出版社,2006:82-86. [5] 王成安.电子产品生产工艺与生产管理[M].北京:人民邮电出版社,2010:163-166. [6] 戢卫平.单片机系统开发实例经典[M].北京:冶金工业出版社,2008:38-42. [7] 黄庆华.单片机开发技术与实训[M].北京:电子工业出版社,2009.
[8] 于京.51系列单片机C程序设计与应用方案[M].北京:中国电力出版社,2007. [9 http://wenku.baidu.com/view/f66fe7add1f34693daef3e8d.html
[10] CHRISTIAN P, ANNE F. Ultrasonic waster- water treatment:incidence of ultrason- ic frequency on the rate of phenol and carbon tetrachloride degradation [J] . Ultrasonic So-nochemist Chemistry, 1997( 4) : 295- 300.
15
因篇幅问题不能全部显示,请点此查看更多更全内容