基于单片机的水温控制器的设计.doc

上传人:文****钱 文档编号:43739 上传时间:2018-05-10 格式:DOC 页数:36 大小:934.96KB
下载 相关 举报
基于单片机的水温控制器的设计.doc_第1页
第1页 / 共36页
基于单片机的水温控制器的设计.doc_第2页
第2页 / 共36页
基于单片机的水温控制器的设计.doc_第3页
第3页 / 共36页
基于单片机的水温控制器的设计.doc_第4页
第4页 / 共36页
基于单片机的水温控制器的设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、I天津机电职业技术学院毕业综合实践报告姓名专业应用电子班级应电(1)班学号200913005指导教师年月日II基于单片机的水温控制器的设计摘要本系统的设计可以用于热水器温度控制系统和饮水机等各种电器电路中。它以单片机AT89S52为核心,通过3个数码管显示温度和4个按键实现人机对话,使用单总线温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。关键词单片机;数码管显示;单总线;DS18B20III目录1绪论12系统总体设计221硬件总体设计2211硬件系统子模块22

2、2软件总体设计23硬件系统设计331硬件电路分析和设计报告3311单片机最小系统电路3312键盘电路4313数码管及指示灯显示电路5314温度采集电路6315电源电路10316报警电路设计11317加热管控制电路设计114系统软件设计1341主程序流程图1342各个模块的流程图15421读取温度DS18B20模块的流程15422键盘扫描处理流程17423报警处理流程175系统调试1851硬件电路调试1852软件调试1853系统操作说明1954数据测试19总结21致谢错误未定义书签。参考文献22附录一系统源程序23附录二系统硬件总图错误未定义书签。1基于单片机的水温控制器的设计1绪论本系统的核心

3、控制芯片选用的是51系列单片机AT89S52,单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关单片机构成的应用系统有较大的可靠性。系统构建简洁、易行,能方便的实现系统功能。由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点。有优异的性能价格比。本系统的设计可以用于水温控制系统和电饭煲等各种电器电路中。它以单片机AT89S52为核心,通过数码管显示温度和语音提示实现人机对话,使用温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运

4、行模式。自动控制仪器仪表总的发展趋势是高性能、数字化、集成化、智能化和网络化。智能温度控制系统的设计是为了满足市场对成本低、性能稳定、可远程监测、控制现场温度的需求而做的课题,具有较为广阔的市场前景。22系统总体设计21硬件总体设计设计并制作一个基于单片机的热水器温度控制系统的电路,其结构框图如图21图21系统结构框图211硬件系统子模块1单片机最小系统电路部分2键盘扫描电路部分3数码管温度显示和运行指示灯电路部分4温度采集电路部分5继电器控制部分6报警部分22软件总体设计良好的设计方案可以减少软件设计的工作量,提高软件的通用性,扩展性和可读性。本系统的设计方案和步骤如下1根据需求按照系统的功

5、能要求,逐级划分模块。2明确各模块之间的数据流传递关系,力求数据传递少,以增强各模块的独立性,便于软件编制和调试。电源单片机AT89S52数码管显示继电器温度传感器DS18B20报警键盘指示灯33确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。4按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值和下限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时检测,调用显示子程序显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过继电器起动加热装

6、置,直到达到设定值停止加热,之后进行保温,如果温度高于上限进行报警。3硬件系统设计31硬件电路分析和设计报告本次设计主要思路是通过对单片机编程将由温度传感器DS18B20采集的温度外加驱动电路显示出来,包括对继电器的控制,进行升温,当温度达到上下限蜂鸣器进行报警。P17开关按钮是用于确认设定温度的,初始按下表示开始进入温度设定状态,然后通过P15和P16设置温度的升降,再次按下P17时,表示确认所设定的温度,然后转入升温或降温。P23所接的发光二极管用于表示加热状态,P25所接的发光二极管用于表示保温状态。P23接继电器。P31是温度信号线。整个电路都是通过软件控制实现设计要求。311单片机最

7、小系统电路因为89S52单片机内部自带8K的ROM和256字节的RAM,因此不必构建单片机系统的扩展电路。如图31,单片机最小系统有复位电路和振荡器电路。值得注意的一点是单片机的31脚VPEA/必须接高电平,否则系统将不能运行。因为该脚不接时为低电平,单片机将直接读取外部程序存储器,而系统没有外部程序存储器,所以VPEA/必须接VCC。在按键两端并联一个电解电容,滤除交流干扰,增加系统抗干扰能力。4C230PFC330PF晶振112MEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178

8、P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U2C410UFVCCR310KVCCAT89S52VCC112234SW5SWPB双图31单片机最小系统图312键盘电路键盘是单片机应用系统中的主要输入设备,单片机使用的键盘分为编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。因此使用方便,但硬件较复杂。非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代

9、码,转入执行该键的功能程序。非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。图为按键和AT89S52的接线图,检测仪共设有4个按键,每个按键由软件来决定其功能,4个按键功能分别为1SW1设定按键设定按键2SW2加法按键当前位加53SW3减法按键当前位减54SW4退出设置键系统初始化5EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P

10、2627P2728PSEN29ALE/P30TXD11RXD10U2AT89S52112234SW3SWPB双112234SW4SWPB双112234SW2SWPB双112234SW1SWPB双P10P11P12P13P14P15P16P17COM1992288337744665547K47KVCCP10P11P12P13P14P15P16P17图32单片机最小系统313数码管及指示灯显示电路(1)数码管显示说明各个数码管的段码都是单片机的数据口输出,即各个数码管输入的段码都是一样的,为了使其分别显示不同的数字,可采用动态显示的方式,即先只让最低位显示0含点,经过一段延时,再只让次低位显示1,

11、如此类推。由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚,过程如表31。表31数码管编码表段码位码显示器状态08H01H0ABH02H112H04H222H08H3A1H10H424H20H504H40H6AAH80H7本论文中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提示目前处在温度设置状态。第三位数码管静态显示符号“”。6(2)运行指示灯说明本热水器温度控制系统中共使用到3个LED指示灯和3个数码管。右上角的红色LED是电源指示灯;数码管右边的红色LED是加热指示灯,当刚开机或温度降到设定温度5以下时,该

12、灯会亮,表示目前处于加热状态;当温度上升到设定温度时,该LED灭,同时数码管右边的绿色LED亮,表示目前处于保温状态,用户可以使用热水器;当温度再次下降到设定温度5以下时,绿色LED灭,红色加热的LED灯亮,不断循环。VCCE1C3B2Q1PNPE1C3B2Q3PNPR6470R7470R8470R9470R10470R11470R12470R13470VCCEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P07

13、32P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U2R1647KR1747KS85503ABFCGDEDPY1234567ABCDEFG8DPDPABFCGDEDPYDPCOM19COM210DP1两位数码管ABFCGDEDPY1234567ABCDEFG8DPDPCOM9DP2DPY_7SEG_DPR14470VCC图33LED数码管显示电路图314温度采集电路(1)DS18B20介绍DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济。DALLAS半导体公司的数字

14、化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS18B20一样,DS18B20也支持“一线总线”接口,测量温度范围为55125,在1085范围内,精度为05。DS1822的精度较差为2。现场温7度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。其DS18B20的管脚配置和封装结构如图34所示。图34DS18B20封装引脚定义DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方

15、式时接地)。(2)DS18B20的单线(1WIREBUS)系统单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线第一,单线总线只定义了一个信号线,而且DS18B20智能程度较低(这点可以与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏级开路输出,这里给出一个微控制器和DS18B20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件与(WIREDAND)关系。这就决定(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上

16、认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误的观点。如果当前DS18B20发送0,即使微控制器I/O口置1,总线状态还是0置1操作是为了是I/O口截止(CUTOFF),以确保微控制器正确读取数据。(2)除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。8由于DS18B20采用的是1WIRE总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们

17、必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20的复位时序,如图35图35DS18B20的复位时序图DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60US才能完成。DS18B20的读时序图如图36所示。图36DS18B20的读时序DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,

18、当要写0时序时,单总线要被拉低至少60US,保证DS18B20能够在15US到45US之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15US之内就得释放单总线。如图37所示。9图37DS18B20的写时序图(3)DS18B20的供电方式在图38中示出了DS18B20的寄生电源电路。当DQ或VDD引脚为高电平时,这个电路便“取”的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可以读ROM。为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。有两种方法确保DS18B20在其有效变换期内得到足够的电

19、源电流。第一种方法是发生温度变换时,在DQ线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图38所示,通过使用一个MOSFET把DQ线直接接到电源可实现这一点,这时DS18B20工作在寄生电源工作方式,在该方式下VDD引脚必须连接到地。图38DS18B20供电方式1另一种方法是DS18B20工作在外部电源工作方式,如图39所示。这种方法的优点是在DQ线上不要求强的上拉,总线上主机不需要连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便

20、可以同时完成温度变换。图39DS18B20供电方式2(4)DS18B20设计中应注意的几个问题DS18B20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送。因此,在对DS18B20进行读写10编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS18B20有关资料中均未提及1WIRE上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当1WIRE上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动

21、问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。本文以广泛应用的数字温度传感器DS18B20为例,说明了1WIRE总线的操作过程和基本原理。事实上,基于1WIRE总线的产品还有很多种,如1WIRE总线的E2PROM、实时时钟、电子标签等。他们都具有节省I/O资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。本设计将温度传感器DS18B20与单片机TXD引脚相连,读取温度传感器的数值。DS1

22、8B20与单片机连接图如图所示310所示。VCCEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U2AT89S52DQ2GND1VCC3U3DS1820VCCR1547K图310DS18B20与单片机连接图315电源电路采用L7805稳压块,输出为5V。电子组件要正常运作都需要电

23、源电压供电,一般常用的电源电压为5V或12V,因为数字IC(INGEGRATEDCIRCUIT集成电路)所供给的电压为5V,而CMOSIC所供给的电压为12V,7805是一个稳压块。7805稳压管把高电压转换到低电压,7805稳压管具有保护单片机的作用。L7805输出端要并联上一个电解电11容,滤除交流电干扰,防止损坏单片机系统。本设计采用两种供电方式,一种为DC718V直流稳压电源变换成5V的直流电;另一种为四节干电池共6V经二极管加压后得到将近5V的直流电源,电源配以开关和指示灯,以方便使用。黄色发光二极管表示保温,红色的表示加热状态。VCCD2IN40071122J22PGND2VCC1

24、2V1GND3J1电源座VCC12VD1IN4007IN1GND2OUT3U1L7805大12C1220UFVCCR11K12D3LED图311系统电源设计图316报警电路设计同时可以在系统里设定温度上限值,由于加热停止后,加热管还有余热当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。报警电路原理图如图所示。VCCR1947KE1C3B2Q48550FM1BELLP27图312报警电路图图中的三极管8550的作用是增加驱动能力,比9012的驱动电流还大些,因此选用8550。当程序进入报警子程序时,把P27置0,就会触发蜂鸣器,为了使报警声音效果更好,对

25、P27取反,发出报警嘟噜声音。317加热管控制电路设计继电器是常用的输出控制接口,可以做交直流信号的输出切换。它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上12是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。继电器控制接点操作说明如下COMCOMMON,共同点。输出控制接点的共同接点。NCNORMALCLOSE常闭点。以COM为共同点,NC与COM在平时是呈导通状态的。NONORMALOPEN常开点。NO与COM在平时是呈开路状态的,当继电器动作时,NO与COM导通,NC与COM则呈开路状态。当8

26、9S52的P25输出高电平时,继电器不导通,反之当输出低电平时,继电器导通,这样就激活了连接回路。图313单片机控制继电器电路图134系统软件设计本系统采用的是循环查询方式,来显示和控制温度的。主要包括四段程序的设计DS18B20读温度程序,数码管的驱动程序,键盘扫描程序,以及报警处理程序。41主程序流程图自动加热设置温度NYNY温度温度设置完成NNYYN加热控制开始初始化读D18B20温度转换显示温度加热温度设置80预设温度5预设温度5Y14实测温度预设温度保温指示灯亮,停止加热加热指示灯亮,开始加热设置温度温度预设温度加5温度预设温度减5设置完成加热控制实测温度预设温度加热指示灯亮,开始加

27、热实测温度预设温度保温指示灯亮,停止加热YYYNNYYNNNNNYY图41主程序流程图1542各个模块的流程图421读取温度DS18B20模块的流程由于DS18B20采用的是一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20单线通信功能是分时完成的,它有严格的时隙概念。因此系统对DS18B20的各种操作必须按协议进行。操作协议为初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用

28、口线少等优点,DS18B20必须首先调用启动温度转换函数,根据数据手册上对应转换时间来超作,如为12位转换,则应该是最大750MS,另外在对DS18B20超作时,时序要求非常严格,因此最好禁止系统中断。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序初始化时序、读时序、写时序。所有时序都是将主机作为主设备,而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS

29、18B20的读时序(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之内就得释放单

30、总线。系统程序设计主要包括三部分读出温度子程序、温度转换命令子程序、显示温度子程序。16开始初始化DS18B20存在吗ROM操作命令存储操作命令读取温度值返回YN图42读取温度DS18B20模块的流程图程序代码为GET_TEMPERSETBDQ读出转换后的温度值LCALLINIT_1820先复位DS18B20JBFLAG1,TSS2RET判断DS1820是否存在若DS18B20不存在则返回TSS2MOVA,0CCHDS18B20已经被检测到跳过ROM匹配LCALLWRITE_1820MOVA,44H发出温度转换命令LCALLWRITE_1820LCALLDISPLAY这里通过调用显示子程序实现

31、延时一段时间,等待AD转换结束,12位的话750微秒LCALLINIT_1820准备读温度前先复位MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,0BEH发出读温度命令LCALLWRITE_1820LCALLREAD_18200将读出的温度数据保存到35H/36HRET17422键盘扫描处理流程此流程为键盘扫描处理,CPU通过检测各数据线的状态0或1就能知道是否有按键闭合以及哪个按键闭合。键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图43所示。开始温度设置键是否按下调设置功能子程序温度5键是否按下温度5键是

32、否按下返回键是否按下调温度5功能子程序调温度5功能子程序调显示子程序返回主程序YNNYYYN温度设置键是否按下YNNYN图43键盘扫描子程序流程图423报警处理流程运行程序后,温度传感器DS18B20即可对环境进行温度采集,并送LED数码管显示。我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。其程序流程图如图44所示。18开始P27取反,启动蜂鸣器不启动蜂鸣器,正常显示温度进行温度比较,超过上限值NY图44报警子程序流程图5系统调试51硬件电路调试仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,

33、则应该检查线路是否正确,或是因为单片机没有工作,还有集电极和发射极是否接对。如果只显示两个八,则可能是DS18B20没有接正确,检查上拉电路是否接好。另外要注意的是,由单片机输出的控制信号比较小,需要进行放大才能驱动继电器工作,否则就不能实现升温过程,通常选用8550三极管来进行放大。还有220V交流电绿色接头和加热管黄色接头必须接正确,否则导致电路烧坏。蜂鸣器是低电平有效。如果能注意这些问题,电路基本不会出错。52软件调试如果硬件电路检查后,没有问题却实现不了设计要求,则可能是软件编程的问题,首先应检查初始化程序,然后是读温度程序,显示程序,以及继电器控制程序,对这些分段程序,要注意逻辑顺序

34、,调用关系,以及涉及到了标号,有时会因为一个标号而影响程序的执行,除此之外,还要熟悉各指令的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入到单片机中,如果这一过程出错,那不能实现设计要求也是情理之中的事。本人在设计的时候在伟福仿真软件进行调试,通过此软件进行调试可以很方便的观察单片机内部各个寄存器及内部存储器变化情况,以方便进行调试。图为单片机功能调试图。19图51单片机功能调试图硬件与软件调试相结合,仔细检查各个模块的设计,旧能顺利完成任务,实现设计要求,在调试过程中必须认真耐心,不能有一点马虎,否则遗漏一个小的问题就会导致整个设计的失败。53系统操作说明本系统上电后数

35、码管显示当前测量温度,此时加热指示灯和保温指示灯均不点亮;若此时按“自动加热”键,则单片机自动将预加热温度设置为80并开始加热,送出一个加热信号,并点亮加热指示灯;若按“温度设置”键,则进入预加热温度设置界面,此时数码管闪烁显示预设置温度,此时通过按键“”和“”进行设置温度,预设置温度按“5”递增或递减,设置好温度后再按一次“温度设置”键确定,单片机保存预设置温度,并开始加热。此时单片机通过数码管显示实时检测的温度并和预设置温度进行对比,如果实测温度大于或等于预设置温度,则单片机发出停止加热信号并熄灭加热指示灯,点亮保温指示灯,且当超过预设温度时发出报警;当温度下降到预设置温度以下5度时,单片

36、机再次发出加热信号,同时熄灭保温指示灯,点亮加热指示灯,依次循环控制。54数据测试1静态数据测试取一桶净水,改变它的温度,观察数码管上显示的温度值,并用温度计进行测温,记录两组数据,比较差异。记录表如下表51静态温度数据测试表20温度123456显示温度234763778490测量温度244763808491有测试数据可知,本系统测温结果与温度计测温基本一致,能满足设计,证明了设计的合理性。2动态数据测试进行温度设定,通过设定温度值(75),观察加热管的加热情况,以及数码管的显示值,再用温度计测量水温,每隔一段时间记录一次数据,将两组值进行比较。记录表如下(设定前温度为25)表52静态温度数据

37、测试表组数分组12345678910111213显示温度25293439424853586267707375测量温度25283438424953596367717475通过上表可看出在加热的过程中,显示的温度与实测的温度近似一样,说明系统的设计达到精度要求,但还是略有偏差,基本不影响设计结果。整个测试过程表明设计达到了任务书的要求,证明了该方案是合理可行的,顺利完成了设计,达到了预想结果。21总结通过本次的设计,使我们不仅对单片机这门课程有了更深刻的认识,懂得了如何运用课本知识结合实际来完成定时器的显示和编程方法以及数码显示电路的驱动方法,使我们能够很快的适应现代控制技术发展的需求,同时也提高

38、了我们的思维能力和实际操作能力,为以后更好的走上工作岗位奠定了坚实的基础。另外,这次的设计还让我更进一步的认识了关于AT89S52等芯片的引脚功能以及使用方法,使我学会了应用不同的芯片来配合完成整个设计的操作。在做硬件电路的这段时间里,从思考设计到对电路的调试经过了许多困难。同样在对软件进行设计时,也可为一路坎坷。但是通过对软硬件不断撞墙,不断思考解决问题的过程中,我学会了很多东西,同时对单片机也有了更深的认识。在做设计的时候,很需要耐心和对事物的细心,很多时候一个简单问题的一个简单的疏忽就会导致整个电路的不工作,只有不断的检查不断的调试,才能真正完成一个设计的制作。只有不断的发现问题解决问题

39、,才能从问题中改变自己,提升自己对单片机的能力。此设计虽然能够完成温度的显示和控制,但功能和精度有待于进一步提高。以后可以通过加入PID算法优化控制功能,并通过液晶显示屏实时显示温度。22参考文献L乐建波编著温度控制系统化学工业出版社参考文献再加点,太少了。整体内容不错,格式重新排一下,内容层次采用体例为一、(一)、1、(1)、23附录一系统源程序EMPER_LEQU29H用于保存读出温度的低8位TEMPER_HEQU28H用于保存读出温度的高8位FLAG1EQU38H是否检测到DS18B20标志位A_BITEQU20H数码管个位数存放内存位置B_BITEQU21H数码管十位数存放内存位置B1

40、EQU70H温度小数点位A1EQU71H设定温度值DQEQUP31DQ为DS18B20数据位BELLEQUP27/蜂鸣报警ORG0000H单片机内存分配申明AJMPMAIN0/前面的都是定义MAINMOVR0,10M1CPLP23ACALLDELAY125DJNZR0,M1/此段为灯闪5次,无实际意义/MAIN0MOVA1,80默认加热为80度MAIN1LCALLD1820调用读温度子程序LCALLDISPLAY调用数码管显示子程序MOVA,29HCLRCCJNEA,A1,MAIN1_1SETBBELL/温度相等,关闭蜂鸣器AJMPMAIN1_1_A/下等不用叫蜂鸣器MAIN1_1JCMAIN

41、1_2为1转移,表示小于设定温度CPLBELL蜂鸣器断续鸣叫MAIN1_1_ACLRP23/下面是表示没达到温度SETBP25AJMPMAIN224/主要是检测温度是否小于设定的温度,小于,则开发热管CLRP23MAIN1_2SETBBELL/关闭蜂鸣器CLRP25/开发热管SETBP23/上面的是大于,关发热管MAIN2JBP10,MAIN1/看P10有否按下ACALLDELAY125/延时防抖动,常用的手法,网上很多介绍的JBP10,MAIN1/再次查看CLRP23JNBP10,/等按键完全松手才进入SETBP23SETBP25/检测到P10按键后后进入设定温度MAIN2_1ACALLDI

42、SPLAY1JBP12,MAIN2_2ACALLDELAY125JBP12,MAIN2_2JNBP12,MOVA,5ADDA,A1CLRCCJNEA,100,MAIN2_1_1MOVA,99AJMPMAIN2_1_3/上面这一段是5度按键,按下5度MAIN2_1_1JCMAIN2_1_3MAIN2_1_2CLRCMOVA,99MAIN2_1_3MOVA1,AMAIN2_2JBP14,MAIN2_325ACALLDELAY125JBP14,MAIN2_3JNBP14,MOVA,A1CJNEA,99,ZY1MOVB,4AJMPZY2ZY1MOVB,5ZY2CLRCMOVA,A1SUBBA,BMAI

43、N2_2_1JNCMAIN2_2_2MOVA1,0AJMPMAIN2_3/上面这一段是5度按键,按下5度MAIN2_2_2MOVA1,AMAIN2_3JBP16,MAIN2_1ACALLDELAY125JBP16,MAIN2_1CLRP23JNBP16,SETBP23AJMPMAIN1/上面这一段是退出的意思的D1820LCALLGET_TEMPER调用读温度子程序MOVB1,29HMOVA,29HMOVC,40H将28H中的最低位移入CRRCAMOVC,41HRRCA26MOVC,42HRRCAMOVC,43HRRCAMOV29H,AMOVA,B1MOVB,10HMULABMOVB,10HD

44、IVABMOVB,10MULABMOVB,10HDIVABMOVB1,ARET/上面这一段是读取温度后进行转换的意思/INIT_1820SETBDQ这是DS18B20复位初始化子程序NOPCLRDQ主机发出延时537微秒的复位低脉冲MOVR1,3TSR1MOVR0,107DJNZR0,DJNZR1,TSR1SETBDQ然后拉高数据线NOPNOPNOP27NOPMOVR0,25HTSR2JNBDQ,TSR3等待DS18B20回应DJNZR0,TSR2LJMPTSR4延时TSR3SETBFLAG1置标志位,表示DS1820存在LJMPTSR5TSR4CLRFLAG1清标志位,表示DS1820不存在

45、LJMPTSR7TSR5MOVR0,117TSR6DJNZR0,TSR6时序要求延时一段时间TSR7SETBDQRETGET_TEMPERSETBDQ读出转换后的温度值LCALLINIT_1820先复位DS18B20JBFLAG1,TSS2RET判断DS1820是否存在若DS18B20不存在则返回TSS2MOVA,0CCHDS18B20已经被检测到跳过ROM匹配LCALLWRITE_1820MOVA,44H发出温度转换命令LCALLWRITE_1820LCALLDISPLAY这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒LCALLINIT_1820准备读温度前先

46、复位MOVA,0CCH跳过ROM匹配LCALLWRITE_1820MOVA,0BEH发出读温度命令LCALLWRITE_1820LCALLREAD_18200将读出的温度数据保存到35H/36HRETWRITE_1820MOVR2,8一共8位数据28CLRC写DS18B20的子程序有具体的时序要求WR1CLRDQMOVR3,6DJNZR3,RRCAMOVDQ,CMOVR3,23DJNZR3,SETBDQNOPDJNZR2,WR1SETBDQRETREAD_18200MOVR4,2将温度高位和低位从DS18B20中读出MOVR1,29H低位存入29HTEMPER_L,高位存入28HTEMPER_

47、HRE00MOVR2,8数据一共有8位RE01CLRC读DS18B20的程序,从DS18B20中读出两个字节的温度数据SETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,9RE10DJNZR3,RE10MOVC,DQMOVR3,23RE20DJNZR3,RE2029RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET/上面的这些都是温度采集的DISPLAYMOVA,29H将29H中的十六进制数转换成10进制MOVB,1010进制/1010进制DIVAB显示子程序MOVA_BIT,A十位在AMOVB_BIT,B个位在BMOVDPTR,NUMT

48、AB指定查表启始地址MOVR0,1DPL1MOVR1,25显示1000次DPLOPMOVA,B_BIT取个位数MOVCA,ADPTR查个位数的7段代码MOVP0,A送出个位的7段代码CLRP22开个位显示ACALLD1MS显示1MSSETBP22MOVA,A_BIT取十位数MOVCA,ADPTR查十位数的7段代码MOVP0,A送出十位的7段代码CLRP21开十位显示ACALLD1MS显示1MSSETBP21MOVP0,0FFHDJNZR1,DPLOP100次没完循环DJNZR0,DPL14个100次没完循环RET30/上面这段显示实时温度/DISPLAY1MOVA,A1将29H中的十六进制数转换成10进制MOVB,1010进制/1010进制DIVAB显示子程序MOVA_BIT,A十位在AMOVB_BIT,B个位在BMOVDPTR,NUMTAB

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。