毕业设计(论文)基于单片机控制的水温控制系统的设计.doc
2 系统方案设计现在的电子产品朝着密集型发展,而电子产品的温度特性普遍比较差,这就对温度的自动控制提出了新的要求。如果采用国外进口的温度检测与自控系统,虽然性能较好,但是结合国情,其价格相当昂贵,又全是英文,推广起来比较困难2。基于以上问题,本论文设计出一个温度传感器,配合单片机计算机系统,从软件的编制上实现对各外围硬件的控制,最终实现对水温的自动控制。在硬件的设计上,所有的元器件都采用了通用型产品,使得设计出来的产品及维修都相当方便,可以有效地降低成本,同时另外一点就是能用软件实现的功能尽量选用软件进行操作,更加突出了产品的简单性和高可靠性。2.1系统设计技术指标 本设计水温设定由人工设定,温度设定范围为40-90,最小区分度为1,标定温差1;环境温度降低时,温度控制的静态误差1;用十进制数码管显示水的实际温度;采用适当的控制方法,当设定温度突变(由40提高到90)时,减小系统的调节时间和超调量。2.2方案的选择与论证根据任务和测量控制现象以及现有的条件,现提出了以下两个方案。方案一:采用传统的二位模拟控制方法,选用模拟电路,用电位器设定给定值,采用上下限比较电路将反馈的温度值与给定的温度值比较后,决定加热或者不加热。由于采用模拟控制方式,系统受环境的影响大,不能实现复杂的控制算法使控制精度做得较高,而且不能用数码显示和键盘设定3。方案二:此方案采用了AT89C51单片机为核心,采用温度传感器DS18B20进行温度采集,用继电器控制加热,使其达到电路简单、可靠的目的。使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系统还具有控制精度高的特点。 将两个方案比较便可以得出一个结论,方案二明显的改善了方案一得不足及缺点,并具有控制简单,控制温度精度高的特点。因此本设计电路采用方案二。2.3系统总体方案设计本系统的电路设计方框图如图2-1所示,它由七部分组成:控制部分主芯片采用单片机AT89C51;显示部分采用3位LED数码管以动态扫描方式实现温度显示;温度采集部分采用DS18B20温度传感器;加热控制部分采用继电器电路;时钟电路;复位电路;单列3按键键盘输入设定温度值。 图2-1 系统设计方框图 2.3.1 温度传感器DS18B20简介温度传感器是整个控制系统获取被控对象特征的重要部件,它的特性直接影响系统的精度。美国DALLAS公司生产的单线数字温度传感器DS1820,可把温度信号直接转换成串行数字信号供微机处理,是最新的“一线器件”4。它具有体积小、适用电压宽、经济、实用、线性度很好,精度较高且其本身已经进行了校正,使用时不需再进行调整等特点。本设计采用DS18B20作为智能温度传感器,采集的数据以“一线总线”的数字方式传输直接送到单片机中,同时可传送CRC校验码,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。DS18B20的特性有:温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路;电源极性接反时,芯片不会因发热而烧毁,但不能正常工作等。以上特点使DS18B20非常适用于远距离多点温度检测系统,性能价格比也非常出色5!因此选择DS18B20作为本电路的温度传感器。其外部结构如图2-2所示6。 图2-2 DS18B20外部结构DS18B20的引脚及特性:GND:接地;DQ:数据输入输出脚(单线接口,可作寄生供电);VDD:为外接供电电源输入端(在寄生电源接线方式时接地)。DS18B20的内部结构:1、64位光刻ROM。开始8位是产品类型的编号,接着是每个器件的唯一的序号,共有48位,最后8位是前56位的CRC校验码。光刻ROM的作用是使每一个DS18B20都各不相同,实现一线进行通信的目的。64位闪速ROM的结构如图2-3所示。图2-3 64位闪速ROM结构图2、非挥发的温度报警触发器TH和TL,可通过软件写入用户报警上下限值;3、高速缓存存储,可以设置DS18B20温度转换精度。DS18B20温度传感器内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的E2PRAM。高速暂存RAM的结构为8字节的存储器。前两个字节包含测得的温度信息,第三和第四字节是TH和TL的易失性拷贝,每次上电复位被刷新。第五个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,低五位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式。 2.3.2 控制芯片 AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位处理器,俗称单片机。单片机的可擦除存储器可以反复擦除100次7。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,其结构图及各管脚如图2-4所示。图2-4 AT89C51结构图管脚说明:VCC:供电电压。GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。当因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位期间时,要保持RST脚两个机器周期的高电平。当51芯片通电,时钟电路开始工作,在RST引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM的状态。各特殊功能寄存器初始状态如表2-1所示。 表2-1 各特殊功能寄存器初始状态表特殊功能寄存器初始态特殊功能寄存器初始态ACC00HB00HPSW00HSP00HDPH00HTH000HDPL00HTL000HIPxxx00000BTH100HIE0xx00000BTL100HTMOD00HTCON00HSCONxxxxxxxxBSBUF00HP0-P311111111BPCON0xxxxxxxBALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出,可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP:当EA保持低电平时,只允许外部程序存储器(0000H-FFFFH)使用,不管是否有内部程序存储器。注意加密方式为“1”时,EA将内部锁定为RESET;当EA端保持高电平时,只允许内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:反向振荡放大器的输出及内部时钟工作电路的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 2.3.3 键盘与LED数码显示电路简介数码管由7个发光二极管组成,行成一个日字形,它们可以共阴极,也可以共阳极。通过解码电路得到的数码接通相应的发光二极而形成相应的字。数码管具有:低耗能、低损耗、低压、寿命长耐老化,对外界环境要求低。同时数码管采用BCD编码显示数字,程序编译容易、资源占用少。说到七段数码管,它在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等等,具有显示醒目、直观的优点,七段数码管是由7个独立的二极管采用共阴或共阳的方法连接而成。通常将这7个独立的二极管做成a、b、c、d、e、f、g这7个笔划,数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。本电路采用三位LED 7段共阴数码管分别显示温度的十位、个位和小数位,用单列3按键进行温度设定。扫描电路,节约了单片机的输出端口,便于程序的编写8。其显示数字对应的二进制电平信号如表2-2所示。表2-2 显示数字对应的二进制电平信号显示数字abcdefg01111110101100002110110131111001401100115101101160011111711100008111111190001101数码管使用条件: 段及小数点上加限流电阻; 使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定; 使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流 4-5mA 峰值电流 100mA;数码管使用注意事项说明: 数码管表面不要用手触摸,不要用手去弄引角; 焊接温度:260;焊接时间:5s 表面有保护膜的产品,可以在使用前撕下来 2.3.4 加热控制电路简介根据设计要求,可以使用电热丝进行加热,控制电热丝的功率即可以控制加热的速度。当水温过高时,关掉电热丝进行降温处理,让其自然冷却。在设计中,装设一个小电风扇,当水温超高时关闭电热丝打开风扇散热,当需要加热时,开启电热丝关闭风扇。由于加热的功率较大,考虑到简化电路的设计,本设计直接采用220V的电源,采用继电器控制。使用继电器可以很容易实现通过低电压、低电流控制高电压、高电流,在正常条件下,工作十分可靠。继电器无需外加光耦,自身即可实现电气隔离,这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能9。因此,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,可以达到更好的效果。 2.3.5 复位电路简介单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。只有一个可靠的复位电路才能使系统避免出现“死机”、“程序走飞”等现象10。为此本系统设置了既可以通电后自动复位,也可以手动强制复位的复位电路。 2.3.6 时钟电路简介时钟电路是计算机的心脏,它控制着计算机的工作节奏。CPU就是通过复杂的时序电路完成不同的指令功能的。时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。时钟电路频率范围为1.212MHz。单片机虽然有内部振荡电路,但要形成时钟,外接晶振以及电容,构成并联谐振电路,接在放大器的反馈回路中,这种方式称为内部时钟方式。对外接电容的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度稳定性。当时钟频率为12MHz时典型值为30pF11。本控制器采用的是内部振荡方式,振荡频率为12MHz,因为这种方式得到的时钟信号比较稳定。3 系统硬件电路设计本系统的执行方法是循环查询执行的,键盘扫描也是循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。各电路的关系图如图3-1所示。单片机初始化DS18B20测得温度值,存放到Buffer中处理温度值,转换成BCD码温度显示电路键盘扫描(有无ENTER按下)继电器电路 图3-1 系统硬件电路关系3.1 温度采集电路的设计本系统采用半导体智能温度传感器DS18B20作为敏感元件,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图3-2所示。图3-2 DS18B20测温电路(1) DS18B20的测温功能的实现:内部计数器对一个受温度影响的振荡器的脉冲计数,低温时振荡器的脉冲可以通过门电路,而当到达某一设置高温时振荡器的脉冲无法通过门电路。计数器设置为-55时的值,如果计数器到达0之前,门电路未关闭,则温度寄存器的值将增加,这表示当前温度高于-55。同时,计数器复位在当前温度值上,电路对振荡器的温度系数进行补偿,计数器重新开始计数直到回零。如果门电路仍然未关闭,则重复以上过程。其具体的实现主要依靠单片机软件的编程上。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存器的0、1字节上。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625/LSB形式表示。温度值格式如表3.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DS18B20完成温度转换后,就把测得的温度值与TH、TL做比较,若TTH或TTL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应12。表3-1 DS18B20温度值格式表LS Byte22222222MS ByteSSSSS222(2)DS1820单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS1820的各种操作必须按协议进行。DS18B20工作过程中的协议13: 初始化DS18B20发ROM功能命令发存储器操作命令处理数据 初始化 单总线上的所有处理均从初始化开始 ROM操作命令 总线主机检测到DS18B20的存在便可以发出ROM操作命令之一。3.2 加热控制电路的设计 由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。在器件选择上留足余量,增加安全性。加热部分采用继电器控制,电路简单可靠14。电路如图3-3所示。图3-3 继电器控制当实际温度低于设定值时,由单片机输出高电平信号。三极管9014导通,继电器开始对水加温,为了防止继电器频繁动作,在软件中对水温测量精确到0.1,而在温度设定时只取整数,可以有1的余量。当实际温度高于设定值时,为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低,使系统整体性能得到提高。原理图如图3-4所示。图3-4 风扇控制电路3.3 键盘、显示电路的设计本设计中以动态显示方式采用共阴极连接来驱动三个七段数码管,分别显示温度的十位、个位和小数位。数码管采用共阴极,由于AT89C51单片机每个I/O的电流只有1-2mA,所以在位码和段码上加了相同驱动器15。其编码方法如表3-2所示。表3-2 编码方法表dpgfedcba显示的字符编码P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0110000000C0H111100111F3H101001002A4H101100003B0H10011011499H10010000592H10000000682H111110007F8H10000000880H10010000990H10001000A88H10001100F8EH键盘采用按键开关经上拉电阻分别接P1.0、P1.1、P1.2口上,起到控制、上调和下调作用。每按上调和下调键,设定温度值增1减1。原理图如图3-5所示。 图3-5 键盘按键电路3.4 复位电路的设计单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。本系统采用的复位方式为上电复位或开关复位,电源接通后,单片机自动复位,并且在系统运行期间,用按键S5操作也能使单片机复位16。上电后16V的电解电容充电,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位按键后松开,也能使RST为一段时间的高电平,从而实现了上电复位或开关复位的操作。具体电路图如图3-6所示。 图3-6 复位电路3.5 时钟电路的设计在引脚XTALI和XTAL2外接12MHz晶体振荡器,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲,两个电容器起稳定振荡频率、快速起振的作用,具体电路如图3-7所示。图3-7 单片机时钟电路4 系统软件设计 系统的软件设计采用汇编语言,对单片机进行编程实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘和继电器电路,用的是循环查询方式来显示和控制温度。 4.1 读取DS18B20温度模块子程序 每次对DS18B20操作时多要按照DS18B20中的协议进行。初始化DS18B20发ROM功能命令发存储器操作命令处理数据。程序流程图如图4-1所示。图4-1 读取DS18B20温度子程序流程图4.2 数据处理子程序由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是0.0625的精度,小数部分的值可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可17。也就是说,本系统的温度精确到了0.1。首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码,需要对其低八位取反加一变成原码。处理过后把DS18B20的温度复制到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中18。数据处理子程序流程图如图4-2所示。 图4-2 数据处理子程序流程图4.3 键盘扫描子程序按键功能:1、Enter P1.0(K2) 控制键 2、Up P1.1(K3) 加1键 3、Down P1.2(K4) 减1键键盘子程序流程图如图4-3所示19。 图4-3键盘扫描子程序4.4 系统主程序流程图总模块流程图如图4-4所示。本软件设计采用循环查询来处理各个模块,温度是缓慢变化量,所以可以满足性能要求。 初始化开始数据处理子程序显示子程序调用A/D转换子程序DS188B20?键盘扫描子程序继电器控制子程序错误显示888否是图4.4 主程序流程图5 结论本论文设计了一种用AT89C51单片机为核心的水温控制。通过用一块51芯片外加扩展系统及一些相应的功能部件,经过预研、硬件设计、绘制原理图、系统软件的设计等一系列操作,最后组成一个水温的设定、检测、显示和控制的自动调节系统,使系统达到要求的性能指标,实现预期目的。本文给出了该设计方法的原理说明和具体的设计电路,叙述了系统硬件线路的设计要点和结构以及软件的设计要点,同时给出了各个重要子程序的流程图。本设计的不足之处还有待进一步完善,使其更好的服务于控制应用中。本设计的主要特点有:(1)模块化设计,扩展性强。模块化设计,使控制器具有一定的通用性,而且运行安全可靠。只要对控制器稍加改变就可以实现别的控制功能。(2)成本低,易于推广。所有的元器件都采用了通用型产品,使得设计出来的产品及维修都相当方便,可以有效地降低成本。(3)操作简单,控制器正面只有一排数码管和3个按键,人们只要通过3个按键设定好水温后,就不需做其他操作了。(4)体积小,安装方便,反应灵敏,控制精度高。本控制器还不够完善,有许多值得改进的地方,以下几个方面有待进一步提高:(1)目前本控制器采用的是动态显示,当单片机执行其他程序,没执行显示程序时,数码管就会熄灭,不能稳定地显示数值。采用静态显示,使温度数值显示更加稳定连续。(2)进一步提高测量测度,提高系统集成度和可靠性。控制算法的种类有很多,不断试验找出控制精度更高,更加有效的控制算法。参考文献1 张毅坤.单片微型计算机原理及应用.西安:西安电子科技大学出版社,2006:17-182 涂序彦.智能控制理论方法与技术.北京:清华大学出版社,2008:56-583 高吉祥.全国大学生电子设计大赛培训系列教程.北京:电子工业出版社,2007:45-464 DS18B20官方英文站点下载.DS18B20官方英文文档.5 黄贤武.传感器实际应用电路设计.成都:电子科技大学出版社,2005:54-686 肖亮,陶学恒.新型的智能化液位温度测量系统.仪表技术与传感器,2005(3):34-377 余锡存等.单片机原理及接口技术.西安:西安电子科技大学出版社,2008:56-578 付家才.单片机控制工程实践技术.武汉:化学工业出版社,2009:67-689 翟玉文等.电子设计与实践.北京:中国电力出版社,2005:98-11010 ANDY SZATKOWSKI,WILLIAM PRUEHSNER, JOHN D.ENDERLE, Water Temperature Control System .Proceedings of the IEEE 25th Annual Northeast Bioengineering Conference,Piscataway,NJ,2007:61-7511 何立民.单片机应用系统设计.北京:北京航空航天大学出版社,2007:34-4012 上海半导体器件研究所.美国国家半导体公司线性集成电路特性与应用.上海:上海出版社,2008:76-8813 王振红,张常年.综合电子设计与实践.北京:清华大学出版社,2005:63-7014 NORIAKI SAKAMOTO,MASAMI MASUBUCHI, SEIICHI KAWATA,Variable-structurecontrol using the ideal of a fictitious set point temperature tracking control of a batch reactorprocess. Control Engineering Practice,2006:28-4015 沙占友.智能化温度测试系统的优化设计.电子测量与仪器学报,2008(3):57-7016 边春元等编著.单片机应用开发实用子程序.北京:人民邮电出版社,2007:89-11217 雷思孝.单片机原理及实用技术-凌阳16位单片机原理及应用.西安:西安电子科技大学出版社,2005:76-8018 江力.单片机原理与应用技术.北京:清华大学出版社,2006:88-9019 Szatkowski A, PruehsnerW, Enderle J D.Water temperature control system. Proceedings of the IEEE 25thAnnualNortheast Bioengineering Conference. Piscataway NJ, 2009:66-72The Design of Water Temperature Control System Based on MicrocontrollerXxxxxx(Department of Physics ,xxx University,xxx,)Abstract At present, most of the temperature control system used by the analog temperature sensor,multi-channel analog switches,A/D converter and single-chip,such as the transmission system components. This system requires a large number of temperature measurement arrangement of cables,to the scene to the sensor signal acquisition card,the installation and removal of complex,high cost. At the same time,the transmission lines is the analog signal,and are prone to interference and loss,relatively large measurement error is also not conducive to control of temperature change in accordance with a decision in time. In the paper,a kind of AT89C51 microcontroller as the core of the use of high-precision data acquisition systems DS18B20 given details the hardware circuit design and soft elements and structure. The design features,all important routines are given a flow chart. The temperature control system of small size, easy installation,rapid response,high control precision,and low cost,simple,easy to spread. Keywords AT89C51; DS18B20; Temperature control致 谢大学四年的学习和生活就要随着这篇设计的答辩而结束了.有许多许多的舍不得,也有许多许多的感谢要说。毕业设计,事实上就是综合地运用四年所学知识去分析、解决一个问题,在做毕业设计的过程中,把所学知识得梳理一遍,它既是一次检阅,又是一次锻炼。在XX老师的指导下我学会和懂得了很多,逐渐完成了对硬件电路与软件编程两方面的设计,掌握了硬件调试、软件调试的基本方法,掌握了从子程序到总程序、从基本功能到复杂功能等程序编写的基本思路及方法。首先要衷心感谢的是XX老师!在我学习期间不仅传授了做学问的秘诀,还传授了做人的准则,这些都将使我终生受益。无论是在理论学习阶段,还是在论文的选题、资料查询、开题、研究和撰写的每一个环节,无不得到XX老师的悉心指导和帮助,我愿借此机会向XX老师表示衷心的感谢!其次要感谢所有教育过我的老师!你们传授给我的专业知识是我不断成长的源泉,也是完成本设计的基础。我还要向关心和支持我学习的朋友们表示真挚的谢意!感谢他们对我的关心、关注和支持!最后感谢我的母校XX学院四年来对我的大力栽培。我还要感谢含辛茹苦培养我长大的父母。谢谢你们! 大学的生活让我有了坚强的性格、冷静的头脑和永远乐观的态度,最重要的是让我有了责任感,对自己、对家人和对社会。附录1:系统硬件原理图附录2:软件程序清单TEMPERATURE_L DATA 31H; DS18B20低八位BuffTEMPERATURE_H DATA 30H; DS18B20高八位BufferTEMPERATURE_HC DATA 32H; 计算后的十位BCD码存放BufferTEMPERATURE_LC DATA 33H; 计算后的个位和小数位的BCD码TEMPERATURE_ZH DATA 34H; 计算后的十位和个位的HEX码DIS_BUF_X DATA 35H; 数码管小数位BufferDIS_BUF_G DATA 36H; 数码管个位BufferDIS_BUF_S DATA 37H; 数码管十位BufferKEY_BUF_G DATA 39H; 键盘输入后的个位值KEY_BUF_S DATA 49H; 键盘输入后的十位值K_ENTER EQU P1.0; 输入数据确认按钮K_UP EQU P1.1; 上调按钮K_DOWN EQU P1.2; 下调按钮P_DS18B20 EQU P3.0; 读取DS18B20的输入端口P_SWITCH EQU P1.7; 继电器控制端口1-加热,0-断开P_FAN EQU P1.5; 风扇端口1-降温,0-断开FLAG EQU 20H.0; 标志位确定是否存在DS18B20,1-存在, 0-不存在ENTER_FLAG EQU 20H.1; 键盘输入标志位0-输入,1-退出,程序开始执行 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#60H; 初始化 MOV KEY_BUF_G,#00H;由于KEY_BUF是由用户输入的, 所以先赋值初始化 MOV KEY_BUF_S, #00H;NEXT: LCALL READ_TEMP; 调用读温度子程序 JB FLAG,NORMAL; 判断是否有DS18B20的存在 CALL ERR; 不存在时显示错误信息AJMP NEXT;NORMAL: LCALL DATA_DEAL; 处理从DS18B20得到的数据 LCALL SET_DIS_