1、目录iii摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术。本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此为传感器,STC89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。它以STC89C52单片机为主控制芯片,采用数字温度传感器DS18B20实现温度的检测,测量精度可以达到0.5度。该系统采用了1602显示模块,形象直观的显示测出的温度值,在实际工程中得到广泛应用。关键词:STC89C52单片机 数字温度传感器 DS18B20 温度测量AbstractWith the era
2、of progress and development, single-chip technology has spread to our lives, work, research, in various fields, which has become a relatively mature technology. This subject introduces the temperature measurement system based on STC89C51 single-chip and DS89C20 digital temperature sensor. Adopting t
3、he STC89C51 single-chip microcomputer in the system to collected temperature from various temperature positions realizes the temperature display and control function. Applying STC89C51 single-chip microcomputer-based as main control chip, it realizes the multi-temperature testing by using of digital
4、 temperature sensor DS18B20,and measurement accuracy reaches to 0.5.At the time the system uses a 1602 display module to show the measured temperature values. Based on STC89C51 single-chip single-bus multipoint temperature measurement and control systems hardware assemble simply, reading data conven
5、iently, high accuracy and widely temperature measuring, in the actual projects it is widely applied.Keywords: STC89C51 microcontroller digital temperature sensor DS18B20 temperature measure 目录第1章 概述11.1 温度传感器的发展史11.2 温度传感器的分类31.3 选题背景和研究意义3第2章 测温电路的方案设计52.1 热电阻测温电路设计方案52.2 热电偶测温电路设计方案52.3 DS18B20测温电
6、路的设计方案62.4 方案选择6第3章 基于单片机的恒温电路设计93.1 关键器件的介绍93.1.1 DS18B20温度传感器93.1.2 单片机123.1.3 LCD1602液晶显示器143.2 总体设计163.2.1 设计思路163.2.2 总体设计方框图173.3 硬件设计173.3.1 单片机模块电路设计173.3.2 DS18B20电路设计183.3.3 1602显示电路设计193.3.4 控制电路设计原理193.3.4 恒温电路总设计原理图203.4 软件设计203.4.1 软件设计中所用到的工具203.4.2 C51程序设计213.4.3 软件流程设计213.4.4 程序代码26
7、第4章 结论与展望274.1 结论274.2 体会与展望274.3 结束语28致 谢29参考文献31附录1 实物图33附录2 程序代码35第1章 概述3第1章 概述 随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造
8、、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运
9、而生。1.1温度传感器的发展史目前的智能温度传感器 (亦称数字温度传感器) 是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等高科技的方向迅速发展。与传统的温度计相比,其具有读数方便,测温范围广,测温准确的特点。输出温度采用数字显示,主要用于对测温要求比
10、较准确的场所,或科研实验室使用。该设计控制器使用STC公司的STC89C52单片机,测温传感器使用DALLAS公司DS18B20。传感器主要大体经过了三个发展阶段1:1.模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速度快、传输距离远、体积小、微功耗等,适合远距离测温、控温,不需要进行非线性校准,外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、AD592、TMP17、LM135等;2.模拟集成温度控制器。模拟集成温度控制器主要包括温控开关、可编程温度控
11、制器,典型产品有LM56、AD22105和MAX6509。某些增强型集成温度控制器(例如TC652/653)中还包含了A/D转换器以及固化好的程序,这与智能温度传感器有某些相似之处。但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别;3.智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的。它是微电子技术、计算机技术和自动测试技术(ATE)的结晶。智能温度传感器内部都包含温度传感器、A/D转换器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器的特点是能输出温度数据及相
12、关的温度控制量,适配各种微控制器(MCU),并且它是在硬件的基础上通过软件来实现测试功能的,其智能化程度也取决于软件的开发水平。 进入21世纪后,温度传感器的发展趋势正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。所以数字温度传感器得以更加广泛的应用。 数字温度传感器DS18B20是智能温度传感器一种,它将非电模拟量温度值转换为数字信号输出仅需占用 1 位 I/O 端口,能够直接读取被测物体的温度值。它体积小,电压适用范围宽 3 V5 V,用户还可以通过编程实现 912 位的温度读数,即具有可调的温度分辨率,因此它的实用性
13、和可靠性比同类产品更高。针对测温系统的发展趋势,本课题提出了使用DS18B20做为传感器的测温系统。1.2 温度传感器的分类 温度传感器按传感器与被测介质的接触方式可分为两大类:一类是接触式温度传感器,一类是非接触式温度传感器。接触式温度传感器的测温元件与被测对象要有良好的热接触,通过热传导及对流原理达到热平衡,这时的示值即为被测对象的温度。这种测温方法精度比较高,并可测量物体内部的温度分布。但对于运动的、热容量比较小的及对感温元件有腐蚀作用的对象,这种方法将会产生很大的误差。非接触测温的测温元件与被测对象互不接触。常用的是辐射热交换原理。此种测温方法的主要特点是可测量运动状态的小目标及热容量
14、小或变化迅速的对象,也可测量温度场的温度分布,但受环境的影响比较大。1.3选题背景和研究意义温度的测量和控制在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体 PN 结 如AD590 之类的模拟传感器经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。被测温度信号从敏感元件接收的非电模拟量开始,到转换为微处理器可处理的数字信号之间,设计者须考虑的线路环节较多,相应测温装置中元器件数量难以下降,随之影响产品的高可靠性及体积微缩化。这样,由于各种因素会造成传输检测系统较大的偏差;又因为
15、检测环境复杂、测量点多、信号传输距离远及各种干扰的影响,会使检测系统的稳定性和可靠性下降 。本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此为传感器,STC89C52单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用STC89C52单片机,测温传感器使用DALLAS公司的DS18B20,用LCD1602液晶屏来实现温度显示。第2章 测温电路的方案设计7第2章 测温电路的方案设计2.1 热电阻测温电路设计
16、方案由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,热电阻是基于电阻的热效应进行温度测量的,即电阻体的阻值随温度的变化而变化的特性。因此,只要测量出感温热电阻的阻值变化,就可以测量出温度。其系统框图设计如图2.1所示。信号放大调整电路PT100温度传感器A/D转换电路时钟电路按键控制电路AT89S51单片机LED数码管显示电路图2.1 系统框图2.2 热电偶测温电路设计方案如图2.2所示:此方案采用AT89C2051单片机系统为核心开发热电偶测温系统。图2
17、.2 系统方案图系统由四大部分组成:(1)温度测量电路及放大电路;(2)冷端补偿电路;(3)A/D转换电路;(4)AT89C2051驱动的LED显示电路。热电偶测温范围为0到1200度,利用集成温度传感器进行冷端补偿,放大电路选用自动调零放大电路,集成温度传感器测量冷端温度,其输出电流与绝对温度成正比,它相当于一个无温度系数为1uA/K的高阻恒流源。将输出电流通过电阻及放大器转换成电压信号,送入A/D转换器转换为数字量,从放在内存单元中,完成了对补偿电势的采样。通过热电偶测量热端温度,经放大器放大,再由A/D转换器转换成数字信号,单片机将该信号与内存中的补偿电势相加,得到真实的热电势值,并编程
18、实现计算温度值,转换为BCD码,利用单片机串口工作方式0外扩四个74LS164及LED数码管,显示被测温度。2.3 DS18B20测温电路的设计方案 接下来考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度,进行转换,电路简单,精度高,软硬件都可以实现,而且使用单片机的借口便于系统的再扩展,满足设计要求。2.4方案选择从以上三种方案,很容易看出,热电阻测温这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦,而且在对采集的信号进行放大时容易受温度的影
19、响出现较大的偏差。而热电偶测温设计方案在温度处理部分比较麻烦,因此,最终决定采用数字温度传感器测量温度。该电路比较简单,费用较低,可靠性高,软件设计也比较简单。 第3章 单片机的恒温电路设计25第3章 基于单片机的恒温电路设计3.1 关键器件的介绍3.1.1 DS18B20温度传感器美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 一线总线接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18
20、B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。目前DS18B20批量采购价格仅6元左右。在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。新的一
21、线器件DS18B20体积更小、适用电压更宽、更经济。一、DS18B20的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为2C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继一线总线的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使
22、电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 DS18B20 一线总线数字化温度传感器同DS1820一样,DS18B20也支持一线总线接口,测量温度范围为-55+125C,在-10+85C范围内,精度为0.5C。DS1822的精度较差为2C。现场温度直接以一线总线的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3.0V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。二、DS18B20的性能特点2(1)适应电压范围更宽,电压范围:3.05
23、.5V,在寄生电源方式下可由数据线供电;(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(5)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;(7
24、)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;(8)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 三、DS18B20的内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。其内部结构图3.1所示。DS18B20的管脚排列如图3.2所示。图3.1 DS18B20内部结构图DS18B20引脚定义: (1) GND为电源地; (2) DQ为数字信号输入/输出端; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。图3.2 DS18B2
25、0四、 DS18B20温度传感器的工作原理DS18B20的测温原理如图3.3所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数当计数器1的预置值减到0时,温度寄存器的值将加1计数器1 的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0 时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正
26、测温过程中的非线性,其输出用于修正计数器1的预置值。图3.3 DS18B20的工作原理图五、DS18B20的测温流程DS18B20测温流程图如图3.4所示。初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器转换成显示码液晶显示图3.4 DS18B20测温流程3.1.2 单片机单片机是一种集成在硅片上的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
27、一、STC89C52单片机STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、
28、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 单片机的40个引脚大致可分为4类3:电源、时钟、控制和I/O引脚。 电源: VCC - 芯片电源,接+5V; VSS - 接地端; 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 控制线:控制线共有4根, ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址 PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 PSEN:外R
29、OM读选通信号。 RST/VPD:复位/备用电源。 RST(Reset)功能:复位信号输入端。 VPD功能:在Vcc掉电情况下,接备用电源。 EA/Vpp:内外ROM选择/片内EPROM编程电源。 EA功能:内外ROM选择端。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。 I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。二、STC89C52单片机芯片封装图 STC89C52芯片的封装有PLCC、PQFP以及DIP40,本设计采用的是引脚双列直插式封装。其封
30、装形式如图3.4所示。图3.4 STC89C52 DIP-40封装3.1.3 LCD1602液晶显示器液晶显示器各种图形的显示原理线段的显示:点阵图形式液晶由MN个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=
31、FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理4。一、LCD液晶屏分类字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图3.5所示。图3.5 1602字符型液晶显示器实物图二、LCD1602主要技术参数: 1、显示容量:162个字符; 2、芯片工作电压:4.55.5V;3、工作电流:
32、2.0mA(5.0V); 4、模块最佳工作电压:5.0V5、字符尺寸:2.954.35(WH)mm。三、引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表一引脚接口说明表一编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度
33、最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。3.2总体设计3.2.1设计思路温度传感器 DS18B20 从设备环境的不同位置采集温
34、度,单片机STC89C52 获取采集的温度值,温度只要在所设定的上下温度界限内,就会在显示设备中精确的显示出来。当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备 (压缩制冷器) ,当采集的温度经处理后低于设定温度的下限时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) 。 当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声。 3.2.2总体设计方框图电路设计总体设计方框图如图3.7所示,控制器采用单片机STC89C52,温度传感器采用D
35、S18B20,用LCD1602屏实现温度显示。DS18B20温度传感器数据采集单片机1602液晶显示电路控制电路图3.7 系统框图3.3硬件设计3.3.1单片机模块电路设计单片机是此次设计中的核心。通过其它部件的引脚和单片机相连,从而使得整个系统工作。单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊的工作的。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机的稳定性。常用的时钟电路设计有两种方式:一种是内部时钟方式,另一种方式为外部时钟方式。本次设计中用得是内部时钟方式,由于单片机内部本身有一个用于构成振荡器的高增反相放大器的输入端为芯片引脚XTA1,输出端为XTA2。
36、这两个引脚跨接石英晶体振荡器和微调电容,就构成的一个自激振荡器5。其中两个电容为30pf,晶振的振荡频率为12MHz。单片机原理图如图3.8所示。图3.8 单片机系统模块电路图3.3.2 DS18B20电路设计DS18B20与单片机的接口电路非常简单。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机I/O口,电源与数字输入输出脚间需要接一个4.7K的电阻6。图3.9 DS18B20与单片机的连接图3.3.3 1602显示电路设计采用技术成熟,价格便宜的1602液晶显示器做为输出显示。本次设计使用的1602液晶显示器为5V电压驱动,带背光,可显示两行,每行16个字符
37、,不能显示汉字,内置128个字符的ASCII字符集字库,只有并行接口,无串行接口7。其原理图如图3.10所示。图3.10 1602液晶显示原理图3.3.4 控制电路设计原理单片机通过三极管控制继电器的通断,最后达到控制电热器的目的。当温度未达到要求时,单片机发送高电平信号使三极管饱和导通,继电器使电源与电热器接通,电热器加热。温度慢慢升高。当温度上升到预定温度时,单片机发送低电平信号三极管进入截止状态,继电器的弹片打到另一侧,使电热器与电源断开,电热器停止加热。继电器电路中有一个三极管8050的保护电路,即将一个二极管反向接到三机管的两端。连接方法如图3.11所示。图3.11 单片机控制信号其
38、原理是8:当继电器突然断电时,继电器产生很大的反向电流。二极管的作用是将反向电流分流,使流过三级管8050的电流比较小,达到保护三极管8050的作用。3.3.4恒温电路总设计原理图硬件设计的总原理图如图3.12所示。图3.12 电路原理图3.4软件设计3.4.1软件设计中所用到的工具本次设计中主要用到三种软件,分别是Protel99SE9,KEIL和C51。Protel99SE可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作。KEIL软件是目前最流行开发 MCS-51 系列单片机的软件,通过一个集成开发环境将这些部份组合在一起。C51是一种专为MCS-51系列单片机设计的高级语
39、言编译器。3.4.2 C51程序设计C51是一种专为MCS-51系列单片机设计的高级语言编译器。它支持符合ANSC标准的C语言程序设计,同时针对MCS-51系列单片机的自身指令体系做了一些特殊扩展。即,C51既有高级语言的特点,又具备汇编语言的功能,它运算速度快、编译效率高、有丰富的库函数,而且可以实现对系统硬件的直接控制;支持广泛采用的由顶向下结构化程序设计,为软件开发中采用模块化设计方法提供了有效支持;可以大大缩短应用程序的开发周期,使软件的可读性明显增加,编写效率明显提高10。其特点如下:(1) 吸取了汇编语言的精华;(2) 继承和发扬了高级语言的长处;(3) 可移植性好;(4) 生成的
40、代码质量高。3.4.3 软件流程设计1.主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的的测量温度值。其程序流程图如图3.13所示。开始调用读温度子程序数字变换程序显示子程序图3.13主程序流程图主程序模块代码为:void main()8 init_play(); /初始化1602显示 while(1) read_temp(); /读取温度 ds1820disp(); /在第二行显示温度 2.读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。子程序代码:/*lcd1602程序*/void dela
41、y(unsigned int n) /延时 unsigned int i,j; for(i=0;in;i+) for(j=0;j100;j+);void wr_com(unsigned char com) /写指令 delay(1); RS=0; RW=0; E=0; P0=com; delay(1); E=1; delay(1); E=0; void wr_dat(unsigned char dat) /写数据 delay(1); RS=1; RW=0; E=0; P0=dat; delay(1); E=1; delay(1); E=0;void lcd_init() /初始化设置 dela
42、y(15); wr_com(0x38);delay(5); wr_com(0x08);delay(5); wr_com(0x01);delay(5); wr_com(0x06);delay(5); wr_com(0x0c);delay(5);void display(unsigned char *p) /显示第一行字母 while(*p!=0) wr_dat(*p); p+; delay(1); init_play() /初始化显示 lcd_init(); wr_com(0x80); display(firstline); 3.温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采
43、用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。read_temp() /读取温度值并转换 uchar a,b; ds1820rst(); ds1820wr(0xcc); /跳过读序列号 ds1820wr(0x44); /启动温度转换 ds1820rst(); ds1820wr(0xcc); /跳过读序列号 ds1820wr(0xbe); /读取温度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvalue0x0fff) /判断温度的正负值 tflag=0;
44、else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(0.625); /DS18B20的精确度为0.0625度, 即读回数据的最低位代表0.0625度 /将它放大10倍, 使显示时可显示小数点后一位, 并对小数点后第二2进行4舍5入(也就是说tvalue中有n个0.0625) return(tvalue);4.温度显示部分子程序void ds1820disp() /温度值显示函数 uchar flagdat; disdata0=tvalue/1000+0x30; /百位数,其中0的ASCII代码为 disdata1=tvalue%1000/100+0x30; /十位数 disdata2=tvalue%100/10+0x30; /个位数 disdata3=t