基于单片机的温度测量系统(共40页).doc
精选优质文档-倾情为你奉上摘 要随着现代信息技术的飞速发展和传统工业改造的逐步实现,温度自动检测和显示系统在很多领域得到广泛应用。人们在温度检测的准确度、便捷、快速等方面有着越来越高的要求。而传统的温度传感器已经不能满足人们的需求,其渐渐被新型的温度传感器所代替。本文设计并制作了一个简易温度计。本设计采用了单片机AT89S52和温度传感器DS18B20组成了温度自动测控系统,可根据实际需要任意设定温度值,并进行自动控制。在此设计中利用了AT89S52单片机作为主控制器件,DS18B20作为测温传感器通过LCD数码管串口传送数据,实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,能够设置温度上下限来设置报警温度。并且在到达报警温度后,系统会自动报警。本文设计是从测温电路、主控电路、报警电路等几个方面来分析说明的。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度。从而简化数据传输与处理过程。此设计的优点主要体现在可操作性强,结构基础简单,拥有很大的扩展空间等。关键词:单片机;温度传感器;温度计;报警AbstractWith the rapid development of modern information technology and the gradual transformation of traditional industries to achieve, automatic temperature detection and display systems are widely used in many fields. People in the temperature measurement accuracy, convenient, rapid, and has a growing demand. This article was designed and produced a simple thermometer. This design uses a microcontroller AT89S52 and temperature sensor DS18B20 automatic temperature control system formed can be arbitrarily set the temperature according to the actual value and for automatic control. In this design using the AT89S52 microcontroller as the main control device, DS18B20 as an LCD digital temperature sensor tube through the serial transmission of data, to achieve temperature display. DS18B20 measured by direct reading temperature values, data conversion, to set the temperature to set the alarm on the lower temperature. And the temperature reaching the alarm, the system will automatically alarm. This design is from the temperature measurement circuit, main control circuit, alarm circuit, and several other aspects of the note. The device can transmit digital signals directly to the microcontroller, easy to handle and control MCU. In addition, the thermometer temperature measurement device can be used directly to measure temperature. The major advantages of this design is reflected in operable structural basis is simple, lots of expansion space.Keywords:AT89S52;DS18B20;thermometer;alarm目 录专心-专注-专业1 引言1.1 选题的背景随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的。单片机在测控领域中具有十分广泛的应用,它既可以测量电信号,又可以测量温度湿度等非电信号。由单片机构成的温度检测、温度控制系统可广泛应用于很多领域。单片机在工业控制、尖端武器、通信设备、信息处理、家用电器等各测控领域的应用中独占鳌头。今天,我们的生活环境和工作环境有越来越多称之为单片机的小电脑在为我们服务。时下,家用电器和办公设备的智能化、遥控化、模糊控制化己成为世界潮流,而这些高性能无一不是靠单片机来实现的。人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域。温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器、模拟集成温度传感器、智能集成温度传感器。目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。1.2 选题的目的及意义随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。无论是在工业方面,农业方面或者是平民大众的生活当中,我们都能看到温度计的身影。传统的温度检测以热敏电阻和AD590为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差。测温准确度低,检测系统也有一定的误差。因此,利用新型温度传感器取代旧式的温度传感器是必然的趋势,新型的温度传感器的优势越来越得到体现,越来越普及。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。本设计的温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,测温传感器使用DS18B20,LCD以串口传送数据,实现温度显示,能准确达到以上要求。同时计时器的应用,使得温度计在使用时能够提示运行时间,设置报警时间等。1.3 论文结构第一章主要介绍了此设计的历史背景和存在的意义。第二章主要通过叙述设计的整体思路,即如何将单片机,温度传感器和显示屏结合在一起以达到设计目标。第三张主要叙述了选择AT89S52单片机和DS18B20的原因,还简要叙述了显示设备。第四章主要选取合适的引脚连接电路。第五章主要分析编程过程中,如何利用流程图来编写合适的程序;第六章通过仿真软件来模拟温度计,为实物的焊接做准备;第七章记录了在焊接过程中遇到的问题,和在焊接完后,遇到的问题和解决方法;第八章客观评价本设计存在的优缺点,及作品的发展。2 设计的整体方案2.1 设计的主要内容根据系统的设计要求,当温度传感器DS18B20把所测得的温度发送到AT89S52单片机上,经AT89S52处理,将把温度在显示电路上显示,除了显示温度以外还可以设置一个报警温度,对所测温度进行监控。利用外接的键盘设置电路,对温度进行上下限设置。当温度高于或低于设定温度时,开始报警并启动相应程序。同时,系统还会显示温度计已经工作的时间,方便用户进行简单的人机对话。当开机后,计数器自动运行,开始记录已开机时间,在进行上下限操作时,计时的功能不关闭,持续计时。同时,能够设置报警温度,在到达报警时间后能够提示报警。利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。系统框图如下图:AT89S52温度控制报警电路温度传感器键盘设定显示设备图1-1 系统框图选择DS18B20作为本系统的温度传感器,选择单片机AT89S52为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS18B20,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路,省却了采样保持电路、运放、数模转换电路以及进行长距离传输时的串并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。当LCD液晶显示器接收到来自AT89S52单片机传送来的温度信息后,分别显示了当前的温度,温度上限,温度下限和温度计运行时间。2.2 设计性能要求设计的主要功能和指标如下:(1)提示开机,当按下开机键后,响起开机声。(2)利用温度传感器(DS18B20)测量某一点环境温度。(3)测量范围为-55110,精度为±0.5。(4)用液晶进行实际温度值显示。(5)能够根据需要方便设定上下限报警温度。(6)当达到报警温度后,能够自动发出报警声。(7)显示测温时间,方便控制。(8)设计开机时间报警功能。3 器件的选择本设计是选用DS18B20作为温度传感器,选用AT89S52单片机作为整个设计的核心处理器部分。通过处理作为温度传感器传输的温度信息后,将处理后的信息传输给LCD液晶显示器。所以用到的器件有AT89S52、DS18B20、LCD等。3.1 单片机的选择3.1.1 AT89S52的特点及选择原因AT89S52作为温度测试系统设计的核心器件该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术具有高性能的8位单片机,属于标准的MCS一51的CMOS产品。片内含8K bytes的可贩毒擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件兼容标准的MCS-51指令系统。片内置通用8位中央处理器(CPU)和Flash存储单元。结合了HMOS的高速和高密度技术及CHMOS的低功耗特征。其具有如下性质:(1)与MCS-51 产品指令系统完全兼容(2)8K字节可重擦写Flash闪烁存储器。(3)寿命:1000写/擦循环。(4)数据保留时间:10年。(5)全静态工作:0Hz-24Hz。(6)三级程序存储器锁定。(7)128*8位内部RAM。(8)32可编程I/O线。(9)三个16位定时器/计数器。(10)8个中断源。(11)可编程串行通道。(12)低功耗的闲置和掉电模式。(13)片内振荡器和时钟电路。AT89S52单片机提供以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。由于此设计需要编写程序,需要将程序烤入单片机中,因此单片机必须具有足够多的存储空间,其具有8K字节的Flash完全满足要求。32位的I/O 口线能够使得单片机与温度显示器、温度传感器、键盘、报警电路、按键电路和指示灯连接等等变得可能。16位的定时计数器使得读取数据变得更加简单,同时其结构有利于晶振电路和复位电路的连接。最重要的是,能够在掉电状态下保存RAM内的数据。同时,与同类51单片机相比,AT89S52具有更强的可操作性。因此,对于本设计来说,选择AT89S52是最有利的。3.1.2 AT89S52的工作模式及注意事项AT89S52单片机有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON1)和IDL(PCON0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是空闲等待方式,当IDL=1,激活空闲工作模式,点偏激进入睡眠状态。如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在空闲工作状态下,CPU保持睡眠状态而所有的片内的外设都保持激活状态,这种方式由软件产生,此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。终止空闲工作模式的方法有两种,进入中断服务程序,执行完中断服务程序并紧随RST1(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式的那条指令后面的一条指令。其二是通过硬件复位可以将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的吓一跳指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其他端口。为了避免可能对端口产生意外写入,激活空闲状态的那条指令后一条指令不应是一条端口或外部存储器的写入指令。在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令。片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但并没有因此改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,但必须保持一定时间以使振荡器重启动并稳定工作。AT89S52单片机具有一些极限参数:(1)工作温度:-55摄氏度至+125摄氏度(2)储藏温度:-65摄氏度至+150摄氏度(3)任一引脚对地电压:-1.0V至+7.0V(4)最高工作电压:6.6V(5)直流输出电流:15.0mA表3-1 空闲和掉电模式外部引脚状态模式程序存储器ALEPSENP0P1P2P3空闲模式内部11数据数据数据数据空闲模式外部11浮空数据地址数据掉电模式内部00数据数据数据数据掉电模式外部00浮空数据数据数据3.2 温度传感器的选择 3.2.1 DS18B20的特点及选择原因DS18B20是美国DALLAS公司继DS1820之后推出的增强型单总线数字式温度传感器,它在转换速度、转换时间、传输距离、分辨率等方面较之前产品有了很大的改进,给用户带来了更方便、更令人满意的效果。DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源; GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻.DS18B20 的性能特点如下:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 64位ROM和单线接口存储器与控制逻辑高速缓存温度传感器8位CRC发生器配置寄存器高温触发器低温触发器图3-1 DS18B20内部结构框图DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。其具有9条特点:(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。(2)温范围55125,在-10+85时精度为±0.5。(3)零待机功耗。(4)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(5)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(6)用户可定义报警设置。(7)报警搜索命令识别并标志超过程序限定温度的器件。(8)结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。DS18B20作为新型的一线器件,能够方便的和中心处理器进行连接,并具有很大的扩展空间。温度范围较广,使得整体的测温范围能大幅度的上升,零待机消耗更是起到了节能的作用。利用用户能自定义报警设置这一特点,能够在实现报警功能上得到很大的便利,同时极强的抗干扰性能使得温度的检测更加准确,作为温度计最基本的要求,准确必须满足。这些好处使得DS18B20最终被选择。3.2.2 DS18B20的测温原理DS18B20的测温原理如图3-2所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。首先用DS1820提供的读暂存寄存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数部分T整数,然后再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度,考虑到DS1820测量温度的整数部分以0.25、0.75为进位界限的关系,实际温度T实际可用下式计算得到:T实际=(T整数0.25)+(M每度M剩余)/M每度。 低温度系数晶振高温度系数晶振预置斜率累加器计数器 1=0计数器 2=0比较预置温度寄存器图3-2 DS18B20测温原理图3.3 显示器的选择由于设计中要求同时显示测试温度、温度上限、温度下限和开机时间,因此显示屏首先要能够一次性容纳这些字符。工作电压不能太高,与单片机的连接方式需要简单,显示准确。本设计中采用的是1602型LCD液晶屏能够很好的满足这些要求。此液晶属于工业字符型液晶,能够同时显示16x02即32个字符。LCD液晶显示器是一种低压、微功耗的显示器件,只要23伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。在仪表和低功耗应用系统中得到了广泛的应用。1602拥有很多出色的优点:(1) 显示质量高,由于液晶显示器的每一个点收到信号后就一直保持那种色彩和亮度恒定发光,因此液晶显示器的画质高而且不会闪烁。(2) 数字式接口,液晶显示器都是数字式的,和单片机的接口简单操作也很方便。(3) 功率消耗小,相比而言液晶显示器的主要功耗在内部电极和驱动IC上,因而耗电量比其他器件要小很多。4 电路原理整个设计的电路包括了最小系统电路、温度控制电路、温度显示电路、按键电路和报警电路五部分电路组成。4.1 晶振电路与复位电路晶振电路和复位电路与单片机连接构成最小系统电路,如何选取合适的引脚,选取何种连接方式都至关重要。因此需要了解AT89S52的引脚特点。图4-1 AT89S52单片机引脚图在晶振电路中,主要用到了XTAL1和XTAL2两个引脚。(1)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。(2)XTAL2:来自反向振荡器的输出。在晶振电路中,AT89S52具有两种晶振方式,一种是片内时钟振荡方式,但需要在引脚外接石英晶体和振荡电容,振荡电容的值一般取10-30pf。另一种是外部时钟方式,即将XTAL1接外部时钟,XTAL2脚悬空。本设计的晶振电路如图4-2所示。图4-2 晶振电路单片机的晶振频率采用11.0592MHZ,加两个30pF电容。XTAL1和XTAL2分别为反向放大器的输入和输出,外接石英晶体和振荡电容,构成了片内时钟振荡方式。而振荡周期指的就是单片机外接石英晶体振荡器的周期。当时钟起振后,产生一定的频率的时钟信号,单片机的CPU在时钟信号的控制下能一步一步完成自己的工作,同时与整个系统相关的周期还有振荡周期、状态周期、机器周期和指令周期。电容C1和C2主要用于校正波形,振荡器的作用主要是产生时钟振荡。而整个电路的作用则是为了产生自激振荡。对于复位电路,AT89S52有两种复位方式,分别是上点复位和按键复位。本设计采用的是按键复位,即利用一个复位电容和按键的组合使得复位变得更加直接和简单。引脚RST作用是复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。在按下按键后,系统自动复位,十分方便。在复位电路中添加按键主要是为了能够使得复位更加方便,电容主要是在复位后进行充电,而上拉电阻起到限流的作用,保护了电路。图4-3 复位电路4.2 温度采集电路温度控制电路主要运用到了DS18B20和AT89S52。如何使两者连接实现功能是温度控制电路的主要设计目的。图4-4 DS18B20管脚图在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。内部寄生电源I/O口线要接5K左右的上拉电阻。这里采用的是第一种连接方法,如图4-5所示:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。图4-5 温度采集电路传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.4口。4.3 显示电路液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。在显示电路中,VSS接地,VDD接5V正电源, VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,为了获得最佳对比度,VEE接地。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。RS和R/W选用不同的高低电平,将影响寄存器的选择。表4-1 寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01读busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据 由于液晶显示器的功能是显示各字符,所以RS置高电平,R/W接地。8位双向数据线D0-D7与双向I/O口相连。图4-6 液晶显示电路图4.4 报警系统利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。而另一端则直接和单片机的P2.3A11端口相连。至于报警电路,连接方式如4-4所示。图4-7 报警电路4.5 按键电路和指示灯电路按键电路的一端接地,一端和AT89S52的P1相应端口相连。图4-8 按键电路四个按键的功能分别能进行加减、修改和复位功能,配合指示灯电路,进行温度上下限的设置。图4-9 指示灯电路5 程序原理及系统流程图5.1 主程序 YYN初始化中断和定时器开始显示初始化SET键被按下?从DS18B20读取温度并显示温度极限返回执行报警程序N按键设置图5-1 主程序流程主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每250ms进行一次。主程序的第二个功能是查询SET键是否被按下,以实现设置温度上下限的功能。其程序流程见图5-1所示。由总的流程图可以分析出,在整个程序中应该包括如下几个部分:读写DS18B20子程序,温度转换子程序,处理温度数据子程序,动态数据显示子程序等。5.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的数据,在读出时需进行CRC校验,校验有错时不进行温度数据的读取。其程序流程图如图5-2所示。图5-2 读温度子程序YN开始初始化DS18B20写DS18B20读取温度指令温度转移成功?移入温度寄存器单片机读取温度数据结束CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。void Init_DS18B20(void) unsigned char x=0; DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20);上述程序中将DQ拉低,精确延时,再将DQ拉高,通过判断x的值来确定是否已经初始化完成。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。ROM操作命令 总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一。对DS18B20操作,先跳过ROM,即是启动DS18B20进行温度变换,之后通过匹配ROM 再逐一地读回每个DS18B20的温度数据。在DS18B20组成的测温系统中,主机在发出跳过ROM命令之后,再发出统一的温度转换启动码44H,就可以实现所有DS18B20的统一转换,再经过250ms后,就可以用很少的时间去逐一读取。这种方式使其T值往往小于传统方式。 unsigned char a,b; signed int temp; EA=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); delay_18B20(70); EA=1; Init_DS18B20(); EA=0; WriteOneChar(0xCC); WriteOneChar(0xBE);a=ReadOneChar(); b=ReadOneChar(); EA=1; temp=b; temp<<=8;temp=temp|a; return temp; 这段程序中,主要作用是在确保了DS18B20的工作状态后,从DS18B20的温度寄存器中提取出温度值的高位和低位,再将两个字节合并为一个字节,经过处理后从输出端输出。5.3 温度数据显示子程序显示温度数据子程序主要是对显示缓冲数组中的显示数据进行刷新操作,查表送段码至LCD,点亮数码管,显示数字。一个字节不能直接在显示屏上显示,这就需要将字节通过处理转化成能在LCD上显示的数。 if(shuju>0) data_T4=shuju/100+0x30;else shuju=shuju+0x01; data_T4='-' data_T5=shuju%100/10+0x30; data_T6=shuju%10+0x30; 段程序的作用在于,在接收到温度信息后,通过转化,变成能在LCD上显示的字符。再通过LCD显示出来。5.4 设置温度上下限程序该系统可以设置温度上下限,当SET=1,开启中断,可以设置温度上限,如果DEC有效,减一;如果ADD有效,加一。当SET=2,开启中断,可以设置温度下限,如果DEC有效,减一;如果ADD有效,加一。流程图如5-3所示。对于设置上下限来说,最重要的是切换到底是对TH还是TL进行设置,可加减温度。因此在设计过程中必须满足这两点, NYNY开始SET等于0?SET等于1?开中断设置温度上限SET等于2开中断设置温度下限复位结束NY图5-3 设置温度上下限程序用于说明进入加减状态,方便修改温度上限。sbit point=P13;sbit th=P14;sbit tl=P15;void delay(uchar k) uchar i,j; for(j=0;j<k;j+) for(i=0;i<200;i+); 5.4 计时时间设置 计时器作为本设计的特点,其程序时间相当重要。 YN初始化计时器开始开始计时到达报警时间?继续计时结束报警图 5-4 计时器工作流程当计数器被初始化后,根据AT89S52的内部晶振周期,开始计时。当达到设置的报警温度时,报警电路发出报警声,此报警声有别于当温度到达温度上限时的报警声,使得用户不会发生混淆。在程序编写过程中,最为重要的是如何在进行其他设置时,计时器还持续工作,并且如何使得计时器的跳动变得正确,如何使计时期在到达报警时间后,能够发出警报,如何使报警的声音又别于温度到达上限时发出的报警声。write1602com(0x80);data_T5='.'for(i=0;i<10;i+) dealdata();write1602dat(data_Ti);delay(1);整段程序过于繁琐,不作赘述。本段