基于单片机的水温控制系统方案_第1页
基于单片机的水温控制系统方案_第2页
基于单片机的水温控制系统方案_第3页
基于单片机的水温控制系统方案_第4页
基于单片机的水温控制系统方案_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./摘要温度控制系统可以说是无所不在,热水器系统、空调系统、冰箱、电饭煲、电风扇等家电产品以至手持式高速高效的计算机和电子设备,均需要提供温度控制功能。本系统的设计可以用于热水器温度控制系统和饮水机等各种电器电路中。它以单片机AT80C51为核心,通过3个数码管显示温度和4个按键实现人机对话,使用单总线温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。关键词:单片机,数码管显示,单总线,DS18B20AbstractTemperaturecontrolsystemcanbesaidtobeubiquitous,waterheaters,airconditioningsystems,refrigerators,ricecookers,electricfansandotherhomeappliancesaswellashigh.speedandefficienthand.heldcomputersandelectronicequipmentarerequiredtoprovidetemperaturecontrol.Thesystemdesigncanbeusedfordrinkingwaterheatertemperaturecontrolsystemsandotherelectricalcircuits.AT80C51microcontrollerasthecoreofit,throughthethreetemperaturedigitaldisplayand4keystoachieveman.machinedialogue,theuseofsingle.chipbustemperatureconversiontemperatureDS18B20real.timeacquisitionandthroughthedigitaldisplayandoffersavarietyofoperatinglighttoindicatesystemnowliveinthestate,suchas:temperaturesetting,heating,andstopheating,theentiresystemthroughthefourbuttonstosettheheatingtemperatureandcontroltheoperatingmodeKeywords:Microcontroller,digitaldisplay,singlebus,DS18B20.目录TOC\o"1-3"\h\u307731绪论160991.1课题的背景及研究意义1296921.2国外现状及发展趋势186151.3论文主要工作概述1144972系统方案论证283042.1系统方案设计及论证2319302.2功能模块设计及论证279122.2.1温度采样模块2319142.2.2键盘及显示模块267012.3总体设计简介3210502.3.1硬件总体设计365282.3.2软件总体设计3209543硬件系统设计4104933.1单片机控制系统4253343.2人机交互电路5304833.2.1键盘电路5133283.2.2数码管及指示灯显示电路648103.3温度采集控制电路8287913.3.1温度采集电路8309943.3.2加热管控制电路1232753.4电源电路12209133.5报警电路13104294系统软件设计141434.1主程序设计14142454.2子程序设计1557424.2.1DS18B20读取子程序15283854.2.2键盘扫描子程序17174883.2.3报警中断子程序18123185系统调试19202455.1系统工作流程1958815.2软件调试19115545.3硬件电路调试20196115.4数据测试201540总结226460致2319567参考文献2410927附录1:系统源程序2511541附录2:系统硬件总图36.1绪论1.1课题的背景及研究意义及时准确地得到温度信息并对其进行适时的控制,在许多工业场合中都是重要的环节.水温的变化影响各种系统的自动运作,例如冶金、机械、食品、化工各类工业中,广泛使用的各种加热炉、热处理炉、反应炉等,对工件的水处理温度要求严格控制。对于不同控制系统,其适宜的水质温度总是在一个围。超过这个围,系统或许会停止运行或遭受破坏,所以我们必须能实时获取水温变化。对于,超过适宜围的温度能够报警。同时,我们也希望在适宜温度围可以由检测人员根据实际情况加以改变。1.2国外现状及发展趋势单片机对对温度的控制是工业生产中经常使用的控制方法.自从1976年Intel公司推出第一批单片机以来,80年代单片机技术进入快速发展时期,近年来,随着大规模集成电路的发展,单片机继续朝快速、高性能方向发展。单片机主要用于控制,它的应用领域遍及各行各业,大到航天飞机,小至日常生活中的冰箱、彩电,单片机都可以大显其能。单片机将微处理器、存储器、定时/计数器、I/O接口电路等集成在一个芯片上的大规模集成电路,本身即是一个小型化的微机系统。单片机技术与传感与测量技术、信号与系统分析技术、电路设计技术、可编程逻辑应用技术、微机接口技术、数据库技术以及数据结构、计算机操作系统、汇编语言程序设计、高级语言程序设计、软件工程、数据网络通信、数字信号处理、自动控制、误差分析、仪器仪表结构设计和制造工艺等的结合,使得单片机的应用非常广泛。同时,单片机具有较强的管理功能。采用单片机对整个测量电路进行管理和控制,使得整个系统智能化、功耗低、使用电子元件较少、部配线少、成本低,制造、安装、调试及维修方便。传统的温度采集电路相当复杂,需要经过温度采集、信号放大、滤波、AD转换等一系列工作才能得到温度的数字量,并且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。1.3论文主要工作概述课题采用的是单总线数字温度传感器DS18B20,可直接将温度转换值以16位数字码的方式串行输出:将温度转化为数字编码只需1秒左右。而且它具有独特单线接口方式,即与微处理器接口时仅需占用1个I/O口;支持多节点;测温时无需任何外部元件,可以通过数据线直接供电,具有超低功耗工作方式。测温围为—55℃~+125℃本文主要结构:为绪论,介绍水温控制背景发展及现状;为系统的方案论证,比较了几种不同的方案,为本设计筛选出合适的方案;为硬件系统设计,在合理方案的基础上,选定合适的元器件,组成基本系统,实现相应的功能;为软件设计,论述了主程序以及各个子程序的功能;为系统调试,对设计的系统进行测试,发现并解决在调试阶段的问题。2系统方案论证2.1系统方案设计及论证方案1:采用传统的二位模拟控制方法,选用模拟电路,用电位器设定给定值,采用上下限比较电路将反馈的温度值与给定的温度值比较后,决定加热或者不加热。由于采用模拟控制方式,系统受环境的影响大,不能实现复杂的控制算法使控制精度做得教高,而且不能用数码显示和键盘设定。方案2:采用单片机AT89C51为核心。采用了温度传感器18B比较上述两种方案,方案2明显的改善了方案缺点,并具有控制简单、控制温度精度高的特点,因此本设计电路采用方案2。2.2功能模块设计及论证本设计以单片机为控制核心,系统由温度采集模块、加热模块、键盘显示模块及电源模块等四大模块组成。现将各部分主要元件及电路做以下的论证:温度采样模块方案1:采用热敏电阻,可满足35℃..95℃的测量围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1方案2:Dallas最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822"一线总线"数字化温度传感器同DS18B20一样,DS18B20也支持"一线总线"接口,测量温度围为.55℃~+125℃,在.10℃~+85℃围,精度为±0.5℃。经上述比较,方案2明显优于方案1,故选用方案2。键盘及显示模块控制与显示电路是反映电路性能、外观的最直观部分,所以此部分电路设计的好坏直接影响到电路的好坏。方案1:采用可编程控制器8279与数码管及地址译码器74LS138组成,可编程/显示器件8279实现对按键的扫描、消除抖动、提供LED的显示信号,并对LED显示控制。用8279和键盘组成的人机控制平台,能够方便的进行控制单片机的输出。方案2:采用数码管与地址译码器74LS138组成显示系统,按键直接与80C对比两种方案可知,方案1虽然也能很好的实现电路的要求,但考虑到电路设计的成本和电路整体的性能,我们采用方案2。2.3总体设计简介硬件总体设计设计并制作一个基于单片机的热水器温度控制系统的电路,其结构框图如图2.1:电源电源单片机AT8051数码管显示继电器温度传感器DS18B20报警键盘指示灯图2.1系统结构框图Figure2.1SystemStructurecurve软件总体设计良好的设计方案可以减少软件设计的工作量,提高软件的通用性,扩展性和可读性。本系统的设计方案和步骤如下:<1>根据需求按照系统的功能要求,逐级划分模块。<2>明确各模块之间的数据流传递关系,力求数据传递少,以增强各模块的独立性,便于软件编制和调试。<3>确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。<4>按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值和下限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时检测,调用显示子程序显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过继电器起动加热装置,直到达到设定值停止加热,之后进行保温,如果温度高于上限进行报警。3硬件系统设计本设计主要思路是通过对单片机编程将由温度传感器DS18B20采集的温度外加驱动电路显示出来,通过对继电器的控制,进行升温,当温度达到上下限蜂鸣器进行报警。P1.7开关按钮是用于确认设定温度的,初始按下表示开始进入温度设定状态,然后通过P1.5和P1.6设置温度的升降,再次按下P1.7时,表示确认所设定的温度,然后转入升温或降温。P2.3所接的发光二极管用于表示加热状态,P2.5所接的发光二极管用于表示保温状态。P2.3接继电器。P3.1是温度信号线。整个电路都是通过软件控制实现设计要求。3.1单片机控制系统80C51单片机部自带8K的ROM和256字节的RAM,不必构建单片机系统的扩展电路。如图3.1,单片机最小系统有复位电路和振荡器电路。值得注意的一点是单片机的31脚必须接高电平,否则系统将不能运行。因为该脚不接时为低电平,单片机将直接读取外部程序存储器,而系统没有外部程序存储器,所以必须接VCC。在按键两端并联一个电解电容,滤除交流干扰,增加系统抗干扰能力。图3.1单片机最小系统图Figure3.1Smallestsingle.chipsystemcurve3.2人机交互电路键盘电路键盘是单片机应用系统中的主要输入设备,单片机使用的键盘分为编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。因此使用方便,但硬件较复杂。非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代码,转入执行该键的功能程序。非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。图为按键和AT80C<1>SW1:设定按键<设定按键><2>SW2:加法按键<当前位加5><3>SW3:减法按键<当前位减5><4>SW4:退出设置键<系统初始化>图3.2单片机按键和AT80C51的接线图Figure3.2AT80C51microcontrollerbuttonsandwiringcurve数码管及指示灯显示电路数码管显示各个数码管的段码都由单片机的数据口输出的信号控制,数码管可以采用静态显示和动态显示两种驱动方式。①静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二.十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在实际应用中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低,过程如表3.1。因此选用动态驱动方式。表3.1数码管编码表Tab.3.1Digitalcoding段码位码显示器状态08H01H□□□□□□□0abH02H□□□□□□1□12H04H□□□□□2□□22H08H□□□□3□□□a1H10H□□□4□□□□24H20H□□5□□□□□04H40H□6□□□□□□aaH80H7□□□□□□□本论文中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提示目前处在温度设置状态。第三位数码管静态显示符号"℃"。〔2运行指示灯说明本热水器温度控制系统中共使用到3个LED指示灯和3个数码管。绿色LED1为电源指示灯,即接通电源后该灯会亮起;红色LED2是加热指示灯,当刚开机或温度降到设定温度5℃黄色LED3为保温状态指示灯,用户可以使用热水器;当温度再次下降到设定温度5℃图3.3LED数码管显示电路图Figure3.3LEDdigitaldisplaycircuitcurve3.3温度采集控制电路温度采集电路〔1DS18B20介绍Dallas最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822"一线总线"数字化温度传感器同DS18B20一样,DS18B20也支持"一线总线"接口,测量温度围为.55℃~+125℃,在.10℃~+85℃围,精度为±0.5℃。DS1822的精度较差为±2图3.4DS18B20管脚图Figure3.4DS18B20pincurve引脚定义:①DQ为数字信号输入/输出端;②GND为电源地;③VDD为外接供电电源输入端〔在寄生电源接线方式时接地。〔2DS18B20的单线〔1.wirebus系统单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且DS18B20智能程度较低〔这点可以与微控制器和SPI器件间的通信做一个比较,所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏级开路输出,这里给出一个微控制器和DS18B20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件与〔wiredAND关系。这就决定:〔1微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误的观点。如果当前DS18b20发送0,即使微控制器I/O口置1,总线状态还是0;置1操作是为了是I/O口截止〔cutoff,以确保微控制器正确读取数据。〔2除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保:1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。由于DS18B20采用的是1.Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。〔3DS18B20的供电方式在图3.5中示出了DS18B20的寄生电源电路。当DQ或VDD引脚为高电平时,这个电路便"取"的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可以读ROM。为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。有两种方法确保DS18B20在其有效变换期得到足够的电源电流。第一种方法是发生温度变换时,在DQ线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图3.5所示,通过使用一个MOSFET把DQ线直接接到电源可实现这一点,这时DS18B20工作在寄生电源工作方式,在该方式下VDD引脚必须连接到地。图3.5DS18B20供电方式1Figure3.5DS18B20PowerSupply1curve另一种方法是DS18B20工作在外部电源工作方式,如图3.6所示。这种方法的优点是在DQ线上不要求强的上拉,总线上主机不需要连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。图3.6DS18B20供电方式2Figure3.6DS18B20PowerSupply2curve〔4DS18B20设计中应注意的几个问题DS18B20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送。因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS18B20有关资料中均未提及1Wire上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当1Wire上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。本文以广泛应用的数字温度传感器DS18B20为例,说明了1Wire总线的操作过程和基本原理。事实上,基于1Wire总线的产品还有很多种,如1Wire总线的E2PROM、实时时钟、电子标签等。他们都具有节省I/O资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。本设计将温度传感器DS18B20与单片机TXD引脚相连,读取温度传感器的数值。DS18B20与单片机连接图如图所示3.7所示。图3.7DS18B20与单片机连接图Figure3.7ConnectionwiththeMCUDS18B20curve加热管控制电路继电器是常用的输出控制接口,可以做交直流信号的输出切换。它具有控制系统〔又称输入回路和被控制系统〔又称输出回路,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种"自动开关"。故在电路中起着自动调节、安全保护、转换电路等作用。继电器控制接点操作说明如下:●COM:Common,共同点。输出控制接点的共同接点。●NC:NormalClose常闭点。以Com为共同点,NC与COM在平时是呈导通状态的。●NO:NormalOpen常开点。NO与COM在平时是呈开路状态的,当继电器动作时,NO与COM导通,NC与COM则呈开路状态。当89S52的P2.5输出高电平时,继电器不导通,反之当输出低电平时,继电器导通,这样就激活了连接回路。图3.8单片机控制继电器电路Figure3.8MCUcontrolrelaycircuitcurve3.4电源电路采用L7805稳压块,输出为5V。电子组件要正常运作都需要电源电压供电,一般常用的电源电压为+5V或+12V,因为数字IC〔IngegratedCircuit:集成电路所供给的电压为+5V,而CMOSIC所供给的电压为+12V,7805是一个稳压块。7805稳压管把高电压转换到低电压,7805稳压管具有保护单片机的作用。L7805输出端要并联上一个电解电容,滤除交流电干扰,防止损坏单片机系统。本设计采用两种供电方式,一种为DC7.18V直流稳压电源变换成5V的直流电;另一种为四节干电池共6V经二极管加压后得到将近5V的直流电源,电源配以开关和指示灯,以方便使用。黄色发光二极管表示保温,红色的表示加热状态。图3.9系统电源设计图Figure3.9Systempowersupplydesigncurve3.5报警电路同时可以在系统里设定温度上限值,由于加热停止后,加热管还有余热当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。报警电路原理图如图所示。图3.10报警电路图Figure3.10Alarmcircuitcurve图中的三极管8550的作用是增加驱动能力,比9012的驱动电流还大些,因此选用8550。当程序进入报警子程序时,把P2.7置0,就会触发蜂鸣器,为了使报警声音效果更好,对P2.7取反,发出报警嘟噜声音。4系统软件设计本系统采用的是循环查询方式,来显示和控制温度的。主要包括的程序:DS18B20读温度程序,数码管的驱动程序,键盘扫描程序,以及报警处理程序。4.1主程序设计运行程序后,首先进行初始化,然后温度传感器DS18B20即可对环境进行温度采集,并送LED数码管显示。我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。低于设定温度时启动加热程序,对水温进行加热。主程序流程图如图4.1所示。图4.1主程序流程图Figure4.1Mainprocessescurve此流程为加热程序处理,CPU通过检测温度数值,确定温度是否在围,确定是否需要加热。加热管理程序的功能是检测温度是否等于规定值,如果温度低于固定值,启动加热,达到预定温度值时停止加热。加热流程图如图4.2所示。.图4.2加热程序流程图Figure4.2Heatingprocessescurve4.2子程序设计DS18B20读取子程序由于DS18B20采用的是单数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20〔发复位脉冲→发ROM功能命令→发存储器操作命令→处理数据DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,DS18B20必须首先调用启动温度转换函数,根据数据手册上对应转换时间来超作,如为12位转换,则应该是最大750mS,另外在对DS18B20超作时,时序要求非常严格,因此最好禁止系统中断。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的读时序:〔1对于DS18B20的读时序分为读0时序和读1时序两个过程。〔2对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序:〔1对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。〔2对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的"0"电平,当要写1时序时,单总线被拉低之后,在15us之就得释放单总线。系统程序设计主要包括三部分:读出温度子程序、温度转换命令子程序、显示温度子程序。图4.3读取温度DS18B20模块的流程图Figure4.3ReadthetemperatureDS18B20moduleprocessescurve程序代码为:GET_TEMPER: SETBDQ ;读出转换后的温度值LCALLINIT_1820 ;先复位DS18B20JBFLAG1,TSS2RET ;判断DS1820是否存在?若DS18B20不存在则返回TSS2: MOVA,#0CCH ;DS18B20已经被检测到!!!!!!!!!!!!!!!跳过ROM匹配LCALLWRITE_1820MOVA,#44H ;发出温度转换命令LCALLWRITE_1820LCALLDISPLAY ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒LCALLINIT_1820 ;准备读温度前先复位MOVA,#0CCH ;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH ;发出读温度命令LCALLWRITE_1820LCALLREAD_18200 ;将读出的温度数据保存到35H/36HRET键盘扫描子程序此流程为键盘扫描处理,CPU通过检测各数据线的状态<0或1>就能知道是否有按键闭合以及哪个按键闭合。键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图4.4所示。图4.4键盘扫描子程序流程图Figure4.4Keyboardscanroutineprocessescurve3.2.3报警中断子程序运行程序后,温度传感器DS18B20即可对环境进行温度采集,并送LED数码管显示。我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。其程序流程图如图4.5所示。图4.5报警子程序流程图Figure4.5Processalarmsubroutinecurve5系统调试5.1系统工作流程本系统上电后数码管显示当前测量温度,此时加热指示灯和保温指示灯均不点亮;若此时按"自动加热"键,则单片机自动将预加热温度设置为80℃5.2软件调试如果硬件电路检查后,没有问题却实现不了设计要求,则可能是软件编程的问题,首先应检查初始化程序,然后是读温度程序,显示程序,以及继电器控制程序,对这些分段程序,要注意逻辑顺序,调用关系,以及涉及到了标号,有时会因为一个标号而影响程序的执行,除此之外,还要熟悉各指令的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入到单片机中,如果这一过程出错,那不能实现设计要求也是情理之中的事。本人在设计的时候在伟福仿真软件进行调试,通过此软件进行调试可以很方便的观察单片机部各个寄存器及部存储器变化情况,以方便进行调试。图为单片机功能调试图:图5.1单片机功能调试图Figure5.1Single.chipdebugfunctioncurve硬件与软件调试相结合,仔细检查各个模块的设计,实现设计要求,在调试过程中必须认真耐心,不能有一点马虎,否则遗漏一个小的问题就会导致整个设计的失败。5.3硬件电路调试仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,则应该检查线路是否正确,或是因为单片机没有工作,还有集电极和发射极是否接对。如果只显示两个"8",则可能是DS18B20没有接正确,检查上拉电路是否接好。另外要注意的是,由单片机输出的控制信号比较小,需要进行放大才能驱动继电器工作,否则就不能实现升温过程,通常选用8550三极管来进行放大。还有220V交流电绿色接头和加热管黄色接头必须接正确,否则导致电路烧坏。蜂鸣器为低电平有效。5.4数据测试1.静态数据测试取一桶净水,改变它的温度,观察数码管上显示的温度值,并用温度计进行测温,记录两组数据,比较差异。记录表如下:表5.1静态温度数据测试表温度℃123456显示温度234763778490测量温度244763808491有测试数据可知,本系统测温结果与温度计测温基本一致,能满足设计,证明了设计的合理性。2.动态数据测试进行温度设定,通过设定温度值〔75℃,观察加热管的加热情况,以及数码管的显示值,再用温度计测量水温,每隔一段时间记录一次数据,将两组值进行比较。记录表如下:〔设定前温度为表5.2静态温度数据测试表组数分组12345678910111213显示温度25293439424853586267707375测量温度25283438424953596367717475通过上表可看出在加热的过程中,显示的温度与实测的温度近似一样,说明系统的设计达到精度要求,但还是略有偏差,基本不影响设计结果。整个测试过程表明设计达到了任务书的要求,证明了该方案是合理可行的,顺利完成了设计,达到了预想结果。总结通过本次的设计,使我们不仅对单片机这门课程有了更深刻的认识,懂得了如何运用课本知识结合实际来完成定时器的显示和编程方法以及数码显示电路的驱动方法,使我们能够很快的适应现代控制技术发展的需求,同时也提高了我们的思维能力和实际操作能力,为以后更好的走上工作岗位奠定了坚实的基础。另外,这次的设计还让我更进一步的认识了关于AT80C在做硬件电路的这段时间里,从思考设计到对电路的调试经过了许多困难。同样在对软件进行设计时,也可为一路坎坷。但是通过对软硬件不断撞墙,不断思考解决问题的过程中,我学会了很多东西,同时对单片机也有了更深的认识。在做设计的时候,很需要耐心和对事物的细心,很多时候一个简单问题的一个简单的疏忽就会导致整个电路的不工作,只有不断的检查不断的调试,才能真正完成一个设计的制作。只有不断的发现问题解决问题,才能从问题中改变自己,提升自己对单片机的能力。此设计虽然能够完成温度的显示和控制,但功能和精度有待于进一步提高。以后可以通过加入PID算法优化控制功能,并通过液晶显示屏实时显示温度。致经过半年的忙碌和工作,本次毕业设计已经接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。首先感光老师出的这些论文选题,给了我这么一个展现自己能力的平台,并在毕业设计过程中对我的悉心帮助。在这一个论文设计之中,涉及到了方方面面的知识,没有老师的辛勤栽培,也不会有我今天的成果。在这里也要感我的室友们,是他们在平时无微不至的照顾,才有了我更棒的身体,和更多的学习时间。四年的时间里,我们没有红过脸,我们一直保持着那份纯真的友谊,是我们的互相帮助,才有了今天的这份德业双修。所以在这里也要感我们的交通学院,是学校给了我们这么宽广的一个交流平台,能够在获得知识的同时,也能得到同样珍贵的友谊。在论文即将完成之际,我的心情很是激动,那些埋头苦干和终日坐在电脑跟前的场景还是历历在目,辛勤劳动的付出,相信也能够给我带来同样分量的收获。从开始进入课题到论文的顺利完成,有太多太多需要感的朋友和老师,在这里请接受我真挚的感!参考文献[l]乐建波编著《温度控制系统》化学工业[2]自美编著《电子线路设计·实验·测试〔第二版》华中科技大学2000[3]武庆生仇梅编著《单片机原理与应用》电子科技大学1998.2[4]谭浩强编著《C程序设计》.:清华大学1999年[5]华中理工大学电子学教研室编《电子技术基础数字部分〔第四版》高等教育2000.6[6]《电子制作》2004.10[7]王彬任艳颖编著《DigitalICSystemDesign》电子科技大学2005.9[8]丽娟邵欣编著《基于单片机的温度监控系统的设计与实现》机械制造[9]郭炳坤简单的恒温箱温控电路[J].仪器与未来,1991附录1:系统源程序EMPER_LEQU 29H ;用于保存读出温度的低8位TEMPER_HEQU 28H ;用于保存读出温度的高8位FLAG1 EQU 38H ;是否检测到DS18B20标志位A_BITEQU 20H ;数码管个位数存放存位置B_BITEQU 21H ;数码管十位数存放存位置B1 EQU 70H ;温度小数点位A1 EQU 71H ;设定温度值DQEQUP3.1 ;DQ为DS18B20数据位BELLEQUP2.7 ;//蜂鸣报警ORG 0000H ;单片机存分配申明!AJMPMAIN0 ;///////////////////////////////////前面的都是定义MAIN: MOVR0,#10M1: CPLP2.3ACALLDELAY125DJNZR0,M1 ;//此段为灯闪5次,无实际意义 ;///////////////////////////////////////////////MAIN0: MOVA1,#80 ;默认加热为80度MAIN1: LCALLD1820 ;调用读温度子程序LCALLDISPLAY ;调用数码管显示子程序MOVA,29HCLRCCJNEA,A1,MAIN1_1SETBBELL ;//温度相等,关闭蜂鸣器AJMPMAIN1_1_A ;//下等不用叫蜂鸣器MAIN1_1: JCMAIN1_2 ;为1转移,表示小于设定温度CPLBELL ;蜂鸣器断续鸣叫MAIN1_1_A: CLRP2.3 ;//下面是表示没达到温度SETBP2.5AJMPMAIN2 ;/////////////////////////////////////主要是检测温度是否小于设定的温度,小于,则开发热管CLRP2.3MAIN1_2: SETBBELL ;//关闭蜂鸣器CLRP2.5 ;//开发热管SETBP2.3 ;///////////////////////////////上面的是大于,关发热管MAIN2: JBP1.0,MAIN1 ;//看P1.0有否按下ACALLDELAY125 ;//延时防抖动,常用的手法,网上很多介绍的JBP1.0,MAIN1 ;//再次查看CLRP2.3JNBP1.0,$ ;//等按键完全松手才进入!SETBP2.3SETBP2.5 ;///检测到P1.0按键后后进入设定温度MAIN2_1: ACALLDISPLAY1JBP1.2,MAIN2_2ACALLDELAY125JBP1.2,MAIN2_2JNBP1.2,$MOVA,#5ADDA,A1CLRCCJNEA,#100,MAIN2_1_1MOVA,#99AJMPMAIN2_1_3 ;////////////////上面这一段是+5度按键,按下+5度MAIN2_1_1: JCMAIN2_1_3MAIN2_1_2: CLRCMOVA,#99MAIN2_1_3: MOVA1,AMAIN2_2: JBP1.4,MAIN2_3ACALLDELAY125JBP1.4,MAIN2_3JNBP1.4,$MOVA,A1CJNEA,#99,ZY1MOVB,#4AJMPZY2ZY1: MOVB,#5ZY2: CLRCMOVA,A1SUBBA,BMAIN2_2_1: JNCMAIN2_2_2MOVA1,#0AJMPMAIN2_3 ;////////////////上面这一段是.5度按键,按下.5度MAIN2_2_2: MOVA1,AMAIN2_3: JBP1.6,MAIN2_1ACALLDELAY125JBP1.6,MAIN2_1CLRP2.3JNBP1.6,$SETBP2.3AJMPMAIN1 ;/////////////上面这一段是退出的意思的!D1820: LCALLGET_TEMPER ;调用读温度子程序MOVB1,29HMOVA,29HMOVC,40H ;将28H中的最低位移入CRRCAMOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOV 29H,AMOVA,B1MOVB,#10HMULABMOVB,#10HDIVABMOVB,#10MULABMOVB,#10HDIVABMOVB1,ARET ;//////////上面这一段是读取温度后进行转换的意思! ;///////////////////////////////// ;//////////////////////////////// ;///////////////////////////////INIT_1820: SETBDQ ;这是DS18B20复位初始化子程序NOPCLRDQ ;主机发出延时537微秒的复位低脉冲MOVR1,#3TSR1: MOVR0,#107DJNZR0,$DJNZR1,TSR1SETBDQ ;然后拉高数据线NOPNOPNOPNOPMOVR0,#25HTSR2: JNBDQ,TSR3 ;等待DS18B20回应DJNZR0,TSR2LJMPTSR4 ;延时TSR3: SETBFLAG1 ;置标志位,表示DS1820存在LJMPTSR5TSR4: CLRFLAG1 ;清标志位,表示DS1820不存在LJMPTSR7TSR5: MOVR0,#117TSR6: DJNZR0,TSR6 ;时序要求延时一段时间TSR7: SETBDQRETGET_TEMPER: SETBDQ ;读出转换后的温度值LCALLINIT_1820 ;先复位DS18B20JBFLAG1,TSS2RET ;判断DS1820是否存在?若DS18B20不存在则返回TSS2: MOVA,#0CCH ;DS18B20已经被检测到!!!!!!!!!!!!!!!跳过ROM匹配LCALLWRITE_1820MOVA,#44H ;发出温度转换命令LCALLWRITE_1820LCALLDISPLAY ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒LCALLINIT_1820 ;准备读温度前先复位MOVA,#0CCH ;跳过ROM匹配LCALLWRI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论