1、1XX大学毕业设计(论文)题目电热恒温控制系统姓名XXX学号20060714113年级2011级专业电子信息工程指导教师XXX完成日期2015年05月6日2摘要温度是日常生活中无时不在的物理量,温度的控制在各个领域都有积极的意义。很多行业中都有大量的用电加热设备,如用于热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,采用单片机对它们进行控制不仅具有控制方便、简单、灵活性大等特点,而且还可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量。因此,智能化温度控制技术正被广泛地采用,给生活带来很大的方便。本温度设计采用现在流行的AT89S51单片机,配以DS18B20数字温
2、度传感器,该温度传感器可自行设置温度上下限。单片机将检测到的温度信号与输入的温度上、下限进行比较,由此作出判断是否启动继电器以开启设备。本设计还加入了常用的数码管显示及状态灯显示灯常用电路,使得整个设计更加完整,更加灵活。该设计已应用于花房、实验室,可对花房和实验室的温度进行智能监控。关键字恒温;控制系统;AT89C51单片机;DS18B20;设计3ABSTRACTTHETEMPERATUREISCONSTANTLYINTHEDAILYLIFEOFPHYSICALANDTEMPERATURECONTROLSINVARIOUSFIELDSHAVEAPOSITIVEMEANINGALOTOFBUS
3、INESSESHAVEALOTOFPOWERHEATINGEQUIPMENT,SUCHASTHATUSEDFORTHEHEATTREATMENTFURNACE,FORMELTINGMETALCRUCIBLERESISTANCEHEATERSANDTHEVARIOUSUSESOFTEMPERATUREBINS,SCMUSINGTHEIRRIGHTTOCONTROLNOTONLYEASYTOCONTROL,SIMPLE,SUCHASTHECHARACTERISTICSOFFLEXIBILITY,BUTCANALSOSIGNIFICANTLYINCREASETHETEMPERATUREWASCHAR
4、GEDWITHTHETECHNICALINDICATORS,WHICHCANGREATLYENHANCETHEQUALITYOFTHEPRODUCTSTHEREFORE,INTELLIGENTTEMPERATURECONTROLTECHNOLOGYISBEINGWIDELYADOPTED,ANDITCANBRINGMORECONVENIENCEINOURDAILYLIFETHETEMPERATUREWASDESIGNEDWITHTHENOWPOPULARAT89S51SCM,ANDWITHDS18B20DIGITALTEMPERATURESENSOR,THETEMPERATURESENSORC
5、ANSETUPTHEIROWNTEMPERATURECOLLARSSCMWILLDETECTTHATTHETEMPERATUREOFTHEINPUTSIGNALANDTEMPERATURE,THELOWERCOMPARISONSTHISJUDGMENTWHETHERTOACTIVATETHERELAYTOOPENTHEEQUIPMENTTHEDESIGNALSOINCLUDESCOMMONLYUSEDDIGITALDISPLAYANDCONTROLSTATELIGHTSCOMMONLYUSEDCIRCUIT,MAKINGTHEWHOLEDESIGNMORECOMPLETE,MOREFLEXIB
6、LETHEDESIGNHASBEENAPPLIEDTOSOMEONELIKEFLOWERROOMSANDLABORATORYROOMS,TOSOMEONEINTELLIGENTTEMPERATURECONTROLLIKETHESEFIELDSKEYWORDSTEMPERATUREKEEPING;CONTROLSYSTERMAT898C51SCMDS18B20DESIGN4目录1引言11恒温控制控制系统设计的意义112恒温控制系统设计的背景113恒温控制系统设计的目的114恒温控制系统的功能12系统测温设计方案的比较和总结221方案一22方案二23方案的总结3DS18B20温度传感器的介绍31温
7、度传感器的发展历史及简介32DS18B20的封装及组成33DS18B20的测温原理331测温原理332测温流程34DS18B20与单片机的连接4AT89C51单片机的介绍31AT89C51的封装及组成32AT89C51的部分引脚说明5电路控制系统的整体设计51系统硬件设计511总的电路主板的设计52其他部分硬件电路及说明53系统软件设计531系统软件设计的整体思路532系统程序流程图的设计54程序的调试结束语致谢参考文献附录电热恒温控制系统51引言11恒温控制系统设计的意义随着社会的发展,科技的进步,以及测温仪器在各个领域的应用的深入,智能化已成为现代温度控制系统发展的主流方向。特别是近些年来
8、,温度控制系统已广泛应用到人们生活的各个方面,但温度控制一直是一个有待深入开发的领域,它是与人们生活息息相关的一个实际问题。针对这种实际情况,设计一个温度控制系统,根据人们生活过程中对温度的需要,让温度控制在所需要的范围之内,这将给人们的生活带来更多的方便和利益,故智能化的恒温控制系统具有广泛的应用前景与实际意义。12恒温控制系统的设计背景温度是科学技术中最基本的物理量之一,也是日常生活中经常用到的名词,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像大棚生产、温室温度控制、电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域,也都离不开温度的测量和控制。温度常常
9、是表征对象和过程状态的最重要的参数之一。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行;炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品;医院在做手术的时候要求在一定的温度环境下进行没有适宜的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障,手术就无法进行因此,各行各业对温度控制的要求都越来越高。可见,温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。随着温度控制器应用范围的日益广泛和多样化,各种适用于不同场
10、合的智能温度控制器应运而生。13恒温控制系统的设计目的本设计的内容是温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域的应用相当广泛,比如温室、水池、发酵缸、电源、电子设备等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,电源是有直流蓄电池提供,小巧美观,便于携带,是一款既实用又廉价的温度控制系统。14恒温控制系统的功能本设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度检测与控制功能当温度低于设定下限温度值时,系统自动启
11、动加热继电器加热,使温度上升,同时绿灯亮。当温度上升到下限温度以上时,停止加温,同时灯灭;当温度高于设定上限温度时,系统自动启动风扇降温,使温度下降,同时红灯亮。当温度下降到上限温度以下时,电风扇停止工作,降温停止。温度在上下限温度之间时,不执行降温或升温功能。四个数码管即时显示温度,精确到小数点一位。若单单由系统进行温度的控制较难实现对环境温度的控制,可以经过人工的方法进行控制,比如可以开空调降温,或者开加热器进行升温等。当然也可以进行功能改进和拓展,将本系统和空调或散热器连接,当温度高于上限时开空调或散热器进行散热降温;同样的,把该系统与加热器也连接,当温度低于下限电热恒温控制系统6时,启
12、动加热器加热升温,更好的实现智能化控制。2系统测温设计方案的比较和总结21方案一测温电路的设计,可以使用热敏电阻之类的器件进行温度的检测,利用其感温效应,将随被测温度的变化而变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。22方案二使用温度传感器对温度的检测,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,然后进行数据的转换,通过单片机的处理后,再将温度在数码管显示器上显示出来,将依次完成设计要求。比较以上两种方案,很容易看出,采用方案二,电路比较简单,
13、不需要进行A/D转换,软件设计也比较容易实现,因此,实际设计中采用方案二。23方案二的总体设计本系统的电路设计方框图如图11所示,它由三部分组成控制部分主芯片采用单片机AT89C51;显示部分采用四位共阴极LED数码管以动态扫描方式显示温度;温度采集部分采用DS18B20温度传感器进行温度采集。图21电路总体设计方案(1)控制部分单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用,系统应用三节电池供电。(2)显示部分DS18B20AT89C51单片机LED数码显示加热继电器和散热继电器控制指示灯控制电热恒温控制系统7
14、显示电路采用4位共阴极LED数码管,从P0口送数,P2口扫描。(3)温度采集部分DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温。这一部分主要完成对温度信号的采集和转换工作,由DS18B20数字温度传感器及其与单片机的接口部分组成。数字温度传感器DS18B20把采集到的温度通过数据引脚传到单片机的P10口,单片机接受温度并存储和处理。此部分只用到DS18B20和单片机,硬件电路很容易实现。电热恒温控制系统83DS18B20温度传感器的介绍31温度传感器的发展历史及简介温度的测量是从金属物质的热胀冷缩开始。
15、水银温度计至今仍是各种温度测量的计量标准。可是它的缺点是只能近距离观测,而且水银有毒,玻璃管易碎。代替水银的有酒精温度计和金属簧片温度计,它们虽然没有毒性,但测量精度很低,只能作为一个概略指示。不过在居民住宅中使用已可满足要求。在工业生产和实验研究中为了配合远传仪表指示,出现了许多不同的温度检测方法,常用的有电阻式、热电偶式、PN结型、辐射型、光纤式及石英谐振型等。它们都是基于温度变化引起其物理参数如电阻值,热电势等的变化原理来进行温度检测的。随着大规模集成电路工艺的提高,出现了多种集成的数字化温度传感器。32DS18B20的封装及组成321DS18B20的封装如图21所示,采用3脚式封装。图
16、31DS18B20的封装及引脚说明322DS18B20的内部结构它主要由四部分组成(1)64位光刻ROM。开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。64位闪速ROM的结构如下8B检验CRC48B序列号8B工厂代码(10H)MSBLSBMSBLSBMSBLSB引脚说明GND接地DQI/O数据接口VDD接电源电热恒温控制系统9内部电源探测位和单线端口位产生器暂存器下限触发上限触发温度传感器存储器和控制逻辑图32DS18B20的内部结构示意图(2非挥发的温度报警触发器TH和TL,可通过软件写
17、入用户报警上下限值。(3高速暂存存储,可以设置DS18B20温度转换的精度。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的电可擦除的E2PRAM。高速暂存RAM的结构为8字节的存储器,结构如表33所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。它的内部存储器结构和字节定义如表32所示。低5位一直为,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,表31DS18B20内部
18、存储器结构BYTE0温度测量值LSB(50H)BYTE1温度测量值MSB(50H)E2PROMBYTE2TH高温寄存器TH高温寄存器BYTE3TL低温寄存器TL低温寄存器BYTE4配位寄存器配位寄存器BYTE5预留(FFH)BYTE6预留(0CH)BYTE7预留(IOH)BYTE8循环冗余码校验(CRC)DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,如表32。表32DS18B20字节定义TMR1R011111电热恒温控制系统10由表33可见,分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RA
19、M的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以00625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表22是一部分温度值对应的二进制温度数据。表33DS18B20温度转换时间表R1R0
20、分辨率/位温度最大转向时间/MS00993750110187510113751112750表34部分温度对应值表温度/二进制表示十六进制表示125000001111101000007D0H8500000101010100000550H25062500000001100100000191H10125000000001010000100A2H0500000000000000100008H000000000000010000000H051111111111110000FFF8H101251111111101011110FF5EH2506251111111001101111FE6FH551111110
21、010010000FC90H(4CRC的产生在64BROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据电热恒温控制系统1133DS18B20的测温原理331测温原理每一片DSL8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中。主机在进入
22、操作程序前必须用读ROM33H命令将该DSL8B20的序列号读出。程序可以先跳过ROM,启动所有DSL8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSL8B20的温度数据。DS18B20的测温原理如图24所示,图中低温系数晶振的振荡频率受温度的影响很小,用于产生固定的频率的脉冲信号送给减法计数器1,高温系数晶振随温度的变化,其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着技术门,当技术门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的基数分别置入减
23、法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值见到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2技术到0时,停止温度寄存器值的累加,此时,温度寄存器中的数值即为所测温度。图23中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直到寄存器温度值达到被测温度值,这就是DS18B20的测温原理。表35ROM操作命令指令约定代码功能
24、读ROM33H读DS18B20ROM中的编码符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20发温度变换命令,适用于单片工作。告警搜索命令0ECH执行后,只有温度超过设定值上限或者下限的片子才做出响应温度变换44H启动DS18B20进行温度转换,转换时间最长为500MS,结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9
25、字节的内容写暂存器4EH发出向内部RAM的第3,4字节写上、下限温度数据命令,紧跟读命令之后,是传送两字节的数据电热恒温控制系统12复制暂存器48H将E2PRAM中第3,4字节内容复制到E2PRAM中重调E2PRAM0BBH将E2PRAM中内容恢复到RAM中的第3,4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外接电源供电DS18B20发送“1”另外,由于DS18B20单线通信功能是分时完成的,它有严格是时隙概念,因此,读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为初始化DS18B20发复位脉冲发ROM功能命令发存储器操作命令
26、处理数据。图33测温原理内部结构装置332测温流程图34DS18B20测温流程图34DS18B20与单片机的连接2DS18B20与单片机的连接如下图所示初始化DS18B20跳过ROM匹配温度变换延时1S跳过ROM匹配读暂存器转换成显示码数码管显示减法计数器斜坡累加器减到0减法计数器预置低温度系数振荡器高温度系数振荡器计数比较器预置温度寄存器减到0电热恒温控制系统13这种连接方式实现了硬件电路得简单化,容易实现。AT89C51单片机DS18B20P10GNDDVCC图25DS18B20与单片机的连接电热恒温控制系统144AT89C51单片机的介绍41AT89C51的封装及组成单片机有44引脚的方
27、式有方形和40引脚的双列直插式封装形式,无总线拓展的51单片机有20引脚双列直插式封装,本系统用的是40引脚的双列直插式封装,其封装形式如下所示图41AT89C51单片机的封装各引脚功能说明如下GND接地端。20号引脚,这里已经默认没有给出VCC电源端,杰5V的直流电源。(40号引脚,单片机已经默认)XTAL1接外部晶体的一个引脚。CHMOS单片机采用外部时钟信号时,外部时钟信号引脚由此接入。XTAL2接外部晶体的一个引脚。HMOS单片机采用外部时钟信号时,外部时钟信号引脚由此接入。RST复位信号输入。VCC掉电后,此引脚可接备用电源,低功耗条件下,保持内部RAM存储器中的诗数据。ALE/PR
28、OG地址锁存允许。当单片机访问外部存储器时,该引脚输出信号ALE用于锁存P0端口的低8位地址。ALE输出的频率为时钟振荡频率的1/6。对8751单片机内EPROM编程时,编程脉冲由该引脚接入。PSEN程序存储器允许。输出读外部程序存储器的选通信号。取指令操作期间,PSEN的频率为振荡频率的1/6;单若在此期间有访问外部数据存储器的操作时,电热恒温控制系统15则有一个机器周期中的PSEN信号将不出现。EA/VPPEA0时,单片机只访问外部存储器。对于8031单片机此引脚必须接地,EA1,单片机访问程序内部存储器。对于内部有程序存储器的8XX51单片机,此引脚应该接高电平,单如果地址值超过4KB范
29、围(0FFFH),单片机将自动访问外部程序存储器。在8751单片机内EPORM编程期间,此引脚接入21V编程电源VPP。P00P07P0数据/低8位地址复用总线端口。具有双重功能,可以作为输入/输出口,外接输入/输出设备。在有外接存储器和I/O接口时,常作低8位地址/数据总线,即低8位地址与数据线分时使用P0口。此时,低8位地址由ALE信号的下跳沿使它锁存到外部地址锁存器中。P10P17P1静态通用端口,然后,P0口出现数据信息。具有单一接口功能,P1口每一位都可作为可编程输入或输出口线。P20P27P2高8位地址总线动态端口。具有双重功能,作为输入口或输出口使用,外接输入/输出设备。在有外接
30、存储器和I/O接口时,作为系统的地址总线,输出高8位地址,与P0口低8位地址一起组成16位地址总线。对于内部无程序存储器的单片机来说,P2口只作为地址总线来使用,而不作为I/O口。P30P37P3双功能静态端口。为双重功能端口,可作为输入/输出端口,外接输入/输出设备。作为第二功能使用时,每一位功能定义如下表所示表41P3口的第二功能端口引脚第二功能P30RXD串行输入线P31TXD串行输出线P32INT0(外部中断0输入线)P33INT1(外部中断1输入线)P34T0(定时器0外部计数脉冲输入)P35T1(定时器1外部计数脉冲输入)P36WR(外部数据存储器写选通信号)P37RD(外部数据存
31、储器读选通信号)电热恒温控制系统165电路控制系统的整体设计51硬件电路的设计511总的电路主板的设计本系统的硬件部分主要由控制部分的单片机AT89C51、温度采集部分的DS18B20温度传感器,振荡电路、继电器、LED数码管及报警电路等组成,其总的电路图41如下所示图51系统的总电路图电热恒温控制系统1752其他部分硬件电路及说明(1)电源部分图52电源电路电源部分由三节15V的电池串联提供,方框里的1和2分别接电路中的正极和负极。不需要经过交流电的变压和稳流,更易于实现和方便携带。(2)LED数码管显示部分图53显示电路该系统采用四联共阴极7段数码管,节约了单片机的输出端口,便于程序的编写
32、,实现了对温度的实时显示,并精确到小数点后一位,使测得的温度更加精确。(3)晶体振荡电路12VCC电热恒温控制系统18图54振荡电路单片机的时钟信号通常由两种电路形式得到内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷振荡器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后就构成了自激振荡器,并产生振荡时钟脉冲。本系统采用内部振荡方式。晶振通常选用的6MHZ、12MHZ或24MHZ,本系统采用12MHZ。(4)复位电路图55复位电路复位操作完成单片机的内部电路的初始化,使单片机从一种确定的状态开始运行。当51单片机的复位引脚RST
33、出现5MS以上的高电平状态时,单片机就完成了复位操作。如果RST引脚持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此,单片机复位后要脱离复位状态。复位操作通常有两种基本形式上电复位和开关复位。上电复位要求接通电源后自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作,使单片机复位。通常C1030UF,R110K欧姆,如果不仅要使单片机复位,而且还要使单片机的一些外围芯片也同时复位,那么上述电路中的电阻和电容的参考值应进行适当的调整。单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC0000H,P0P3FFH,SP07H,其他
34、寄存器处于零。这表明程序从0000H地址单元开始执行。单片机复位后不改变片内RAM区中的内容,21位特殊功能寄存器在复位后的状态如表32所示表52单片机复位后特殊功能寄存器的初始状态特殊功能寄存器初始状态特殊功能寄存器初始状态A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTH100H电热恒温控制系统19DPL00HTL000HDPH00HTL100HP0P3FFHSBUF不定1PXXX0000BSCON00H1E0XX0000BPCON0XXXXXXXB5继电器电路图56继电器电路图中P11引脚控制加热器继电器,P12引脚控制电风扇继电器。当P11为低电平时,三
35、极管导通,电磁铁触头被吸下来接通加热器电路,开始加热,同时红灯亮;同样当P12低电平时,三极管导通,电磁铁触头放下来开始进行散热工作,同时绿灯亮。(6)报警电路部分图57报警电路当P25为低电平时,也就是当温度低于下限温度或高于上限温度时,P25被清零,即为低电平,此时,三极管导通,蜂鸣器接通,发出警报声。(7)键盘电路部分电热恒温控制系统20图58键盘电路按下P35时,P35接地,变为低电平,待程序控制数码管显示H00后松开;按下P37,然后快速松开,温度加1,继续P37的动作可以设置温度的上限值;同养地操作P36和P37,完成温度下限的设置。43系统软件设计431系统软件设计的整体思路一个
36、应用系统要完成各项功能,首先必须有较完善的硬件作保证。同时还必须得到相应设计合理的软件的支持,尤其是微机应用高速发展的今天,许多由硬件完成的工作,都可通过软件编程来实现。甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,如数字滤波,信号处理等。因此充分利用其内部丰富的硬件资源和软件资源,采用与C51系列单片机相对应的51汇编语言和结构化程序设计方法进行软件编程。程序设计语言有三种机器语言、汇编语言和高级语言。机器语言是机器唯一能“读懂”的语言,但编程是用后两种语言,用汇编语言或高级语言编写的程序(即源程序)最终都必须翻译成机器语言的程序(成为目标程序),计算机才能“看
37、懂”,然后逐一执行程序的各项功能。高级语言是面向问题和计算过程的语言,它可通过各种不同的计算机,用户编程时不必仔细了解所用的计算机的具体性能与指令系统,而且语句的功能强,常常一个语句已相当于很多条计算机指令,于是用高级语言编制程序的速度比较快,也便于学习和交流,但是本系统却选用了汇编语言。原因在于,本系统是编制程序工作量不大、规模较小的单片机微控制系统,使用汇编语言可以不用像高级语言那样占用较多的存储空间,适合于存储容量较小的系统。同时,本系统对位处理要求很高,需要解决大量的逻辑控制问题。MCS51指令系统的指令长度较短,它在存储空间和执行时间方面具有较高的效率,编成的程序占用内存单元少,执行
38、也非常的快捷,与本系统的应用要求很适合。而且MCS51指令系统有丰富的位操作(或称位处理)指令,可以形成一个相当完整的位操作指令子集,这是MCS51指令系统主要的优点之一。对于要求反应灵敏与控制及时的工控、检测等实时控制系统以及要求体积小、系统小的许多“智能化”产品,可以充分体现出汇编语言简明、整齐、执行时间短和易于使用的特点。本装置的软件包括主程序、读出温度子程序、复位应答子程序、写入子程序、以及有关DS18B20的程序(初始化子程序、写程序和读程序)等。432系统程序流程图的设计(1)主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20所测得的当前温度值,温度测量每秒进行一
39、次。这样可以在一秒钟内测量一次被测的温度,其程序流程见图48所示。通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。通过调用读温度子程序把存入内存储中的整数部分与小数部分分别存放在不同的两个存储单元中,然后通过调用显示子程序显示出来。电热恒温控制系统21图59主程序流程图(2)读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC(循环冗余码)校验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位
40、在前,共有12位数,小数4位,整数7位,还有一位符号位。开始读温度子程序数字变换子程序温度显示子程序电热恒温控制系统22(3)复位、应答子程序跳过ROM匹配命令写入子程序温度转换命令写入子程序读温度命令子程序DS18B20复位、应答子程序显示子程序延时写入子程序跳过ROM匹配命令结束DS18B20复位、应答子程序图510读出温度子程序电热恒温控制系统23图511复位、应答子程序P10口清0延时573USP10口置150US是否有低电平标志位置1P10口置1有234US低电平标志位置0是否是否结束开始电热恒温控制系统244)写入子程序图512写入子程序进位C清0P10清0延时12US带进位右移延
41、时46USP10清0R2是否为0终止开始开始是否电热恒温控制系统25(5)总的程序流程图图512系统总流程图开始初始化DS18B20显示当前温度判断当前温度值超过设定温度上限启动风扇降低温度红灯亮并报警设定温度上、下限启动电热炉升高温度是否低于设定温度下限是绿灯亮并报警否电热恒温控制系统2644调试调试的目的就是发现并改正错误。主程序的功能是启动DS18B20测量温度,将测量值与给定值进行比较,若测得温度小于设定值,则进入加热阶段,置P11为低电平,三极管导通,这期间继续对温度进行监测,直到温度在设定范围内,置P11为高电平断三极管不导通,断开磁铁,关闭加热器,等待下一次的启动命令。当测得温度
42、大于设定值,则进入降温阶段,则置P12为低电平,这期间继续对温度进行监测,直到温度在设定范围内,置P12为高电平断开,关闭风扇,等待下一次的启动命令。第一次接电调试,设置温度上限为32,温度下限为26。加热后,温度有时超过32却不报警,后经检查,发现是进位C没有清0,于是在如下写入程序中加入进位C清零,便排除了这个异常。WR1CLRP10MOVR3,6DJNZR3,RRCAMOVP10,CMOVR3,23DJNZR3,SETBP10NOPDJNZR2,WR1RET读DS18B2再经实际接电调试,一切运行正常。加热到32摄氏度时,红灯亮起并报警,自动断电,而低于26摄氏度时,绿灯亮起并报警,开始
43、加热。电热恒温控制系统27结束语本设计使用的温度控制器结构简单、测温准确,具有一定的实际应用价值。该智能温度控制器只是DS18B20在温度控制领域的一个简单实例,基本实现了对温度的恒温控制,但还有许多需要完善的地方。比如可以将测得的温度通过单片机与通讯模块进行连接,以手机短消息或其他的方式发送给用户,使用户能够随时对温度进行监控,实现对温度的实时监测和控制。此外,它还能广泛地应用于其他一些工业生产领域,如建筑,仓储等行业,可以应用于温室的温度控制,以及某些电子设备的温度控制领域,该系统还可以应用于多种场合,像实验室的温度、育婴房的温度、水温的控制等。用户可灵活选择本设计的用途,具有一定的实用价
44、值。致谢大学四年的学习和生活就要随着这篇论文的答辩而结束了。有许许多多的舍不得,也有许许多多的感谢要说。首先要衷心感谢的是我的指导教师陈羡美老师在我做毕业设计期间不仅虚心听我提出问题,而且还很耐心的给我讲解,还传授了我些做人的准则等等,这些都将使我终生受益。无论是在理论学习阶段,还是在论文的选题、资料查询、开题、研究分析和撰写的每一个环节,都能得到导师的悉心指导和帮助,以及她的谆谆教诲,它将在我成长的路上给我指引方向。我愿借此机会向导师您表示衷心的感谢其次要感谢所有教育过我的老师是你们传授给我的知识,是我不断成长的源泉,也是完成本论文的基础。我还要向关心和支持我学习的同学们表示真挚的谢意感谢他
45、们对我的关心、关注、帮助和支持大学的生活使我学会了更加坚强,保持冷静的思考和乐观的心态。最重要的是让我更加有了责任感,对自己、对家人和对社会,也让我学会了感恩我愿在未来的社会生活和学习过程中,以更加丰厚的成果来答谢曾经关心帮助和支持过我的老师、同学和朋友们,永远以一颗诚挚的、感恩的心来回报社会,谢谢大家电热恒温控制系统28参考文献【1】单片机及嵌入式系统,李伯诚编著,清华大学出版社。【2】单片机典型系统设计实例精讲,彭为、黄科、雷道仲编著,电子工业出版社。【3】单片机原理、接口技术及应用嵌入式系统设计基础,李群芳、肖看编著,清华大学出版社。【4】模拟电子技术基础第四版,化成英、童诗白编著,高等
46、教育出版社。【5】微型计算机原理与接口技术刘彦文、张向东、谭峰主编,北京大学出版社。电热恒温控制系统29附录附录1程序代码ORG0000HTEMPER_LEQU29HTEMPER_HEQU28HFLAG1EQU38H是否检测到DS18B20标志位BWEIEQU22HA_BITEQU20H数码管个位数存放内存位置B_BITEQU21H数码管十位数存放内存位置XSEQU30HMOVA,00HMOVP2,AMOVR5,01HMAINLCALLGET_TEMPER调用读温度子程序温度转化MOVA,29HMOVB,ACLRCRLCACLRCRLCACLRCRLCACLRCRLCASWAPAMOV31H,
47、AMOVA,BMOVC,40H将28H中的最低位移入CRRCAMOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOV29H,ALCALLDISPLAY调用数码管显示子程序AJMPMAIN电热恒温控制系统30DS18B20复位初始化子程序INIT_1820SETBP10NOPCLRP10主机发出延时537微秒的复位低脉冲MOVR1,3TSR1MOVR0,107DJNZR0,DJNZR1,TSR1SETBP10然后拉高数据线NOPNOPNOPMOVR0,25HTSR2JNBP10,TSR3等待DS18B20回应DJNZR0,TSR2LJMPTSR4延时TSR3SETBFLA
48、G1置标志位,表示DS1820存在LJMPTSR5TSR4CLRFLAG1清标志位,表示DS1820不存在LJMPTSR7TSR5MOVR0,117TSR6DJNZR0,TSR6时序要求延时一段时间TSR7SETBP10RET读出转换后的温度值GET_TEMPERSETBP10LCALLINIT_1820先复位DS18B20JBFLAG1,TSS2RET判断DS1820是否存在若DS18B20不存在则返回TSS2MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,44H发出温度转换命令LCALLWRITE_1820这里通过调用显示子程序实现延时一段时间,等待AD转换结束,1
49、2位的话750微秒LCALLDISPLAYLCALLINIT_1820准备读温度前先复位MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,0BEH发出读温度命令LCALLWRITE_1820LCALLREAD_18200将读出的温度数据保存到35H/36HRET写DS18B20的子程序有具体的时序要求WRITE_1820MOVR2,8一共8位数据CLRCWR1CLRP10电热恒温控制系统31MOVR3,6DJNZR3,RRCAMOVP10,CMOVR3,23DJNZR3,SETBP10NOPDJNZR2,WR1RET读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200MOVR4,2将温度高位和低位从DS18B20中读出MOVR1,29H低位存入29HTEMPER_L,高位存入28HTEMPER_HRE00MOVR2,8数据一共有8位RE01CLRCSETBP10NOPNOPCLRP10NOPNOPNOPSETBP10MOVR3,9RE10DJNZR3,RE10MOVC,P10MOVR3,23RE20DJNZR3,RE20RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET数码管显示子程序DISPLAY