首页 基于单片机水温控制器的设计毕业论文

基于单片机水温控制器的设计毕业论文

举报
开通vip

基于单片机水温控制器的设计毕业论文基于单片机水温控制器的设计毕业论文 基于单片机的水温控制器的设计 摘 要 本系统的设计可以用于热水器温度控制系统和饮水机等各种电器电路中。它以单片机AT89S52为核心,通过3个数码管显示温度和4个按键实现人机对话,使用单总线温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。 关键词: 单片机;数码管显示;单总线;DS18B20 I 目 录 1 绪论 ............

基于单片机水温控制器的设计毕业论文
基于单片机水温控制器的设计 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 基于单片机的水温控制器的设计 摘 要 本系统的设计可以用于热水器温度控制系统和饮水机等各种电器电路中。它以单片机AT89S52为核心,通过3个数码管显示温度和4个按键实现人机对话,使用单总线温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。 关键词: 单片机;数码管显示;单总线;DS18B20 I 目 录 1 绪论 ................................................................................................................................... - 1 - 2 系统总体设计 ................................................................................................................... - 2 - 2.1硬件总体设计 .......................................................................................................... - 2 - 2.1.1硬件系统子模块 ............................................................................................ - 2 - 2.2 软件总体设计 ......................................................................................................... - 2 - 3 硬件系统设计 ................................................................................................................... - 4 - 3.1硬件电路分析和设计报告 ...................................................................................... - 4 - 3.1.1单片机最小系统电路 .................................................................................... - 4 - 3.1.2 键盘电路 ....................................................................................................... - 5 - 3.1.3 数码管及指示灯显示电路 ........................................................................... - 5 - 3.1.4 温度采集电路 ............................................................................................... - 7 - 3.1.5 电源电路 ..................................................................................................... - 11 - 3.1.6报警电路设计 .............................................................................................. - 12 - 3.1.7加热管控制电路设计 .................................................................................. - 12 - 4 系统软件设计 ................................................................................................................. - 14 - 4.1主程序流程图 ........................................................................................................ - 14 - 4.2各个模块的流程图 ................................................................................................ - 16 - 4.2.1读取温度DS18B20模块的流程................................................................. - 16 - 4.2.2键盘扫描处理流程 ...................................................................................... - 18 - 4.2.3 报警处理流程 ............................................................................................. - 18 - 5 系统调试 ......................................................................................................................... - 20 - 5.1 硬件电路调试 ....................................................................................................... - 20 - 5.2 软件调试 ............................................................................................................... - 20 - 5.3 系统操作说明 ....................................................................................................... - 21 - 5.4数据测试 ................................................................................................................ - 21 - 总 结 ................................................................................................................................. - 23 - 致 谢 ...................................................................................................... 错误~未定义书签。 参考文献 ............................................................................................................................. - 24 - 附录一:系统源程序 ......................................................................................................... - 25 - 附录二:系统硬件总图 ..................................................................................................... - 34 - II 基于单片机的水温控制器的设计 1 绪论 本系统的设计可以用于水温控制系统和电饭煲等各种电器电路中。它以单片机AT89S52为核心,通过数码管显示温度和语音提示实现人机对话,使用温度转换芯片DS18B20实时采集温度并通过数码管显示,并提供各种运行指示灯用来指示系统现在所处状态,如:温度设置、加热、停止加热等,整个系统通过四个按键来设置加热温度和控制运行模式。 温度控制系统可以说是无所不在,热水器系统、空调系统、冰箱、电饭煲、电风扇等家电产品以至手持式高速高效的计算机和电子设备,均需要提供温度控制功能。以计算机为例,当中的中央处理器的运行速度愈快,所耗散的热量便愈多,为免计算机系统过热而受损,有关系统必须加强温度过高保护功能。 传统的温度采集电路相当复杂,需要经过温度采集、信号放大、滤波、AD转换等一系列工作才能得到温度的数字量,并且这种方式不仅电路复杂,元器件个数多,而且线性度和准确度都不理想,抗干扰能力弱。现在常用的温度传感器芯片不但功率消耗低、准确率高,而且比传统的温度传感器有更好的线性表现,最重要的一点是使用起来方便。 自动控制仪器仪表总的发展趋势是高性能、数字化、集成化、智能化和网络化。智能温度控制系统的设计是为了满足市场对成本低、性能稳定、可远程监测、控制现场温度的需求而做的课题,具有较为广阔的市场前景。 本系统的核心控制芯片选用的是51系列单片机AT89S52,单片机在各个技术领域中的迅猛发展,与单片机所构成的计算机应用系统的特点有关: ? 单片机构成的应用系统有较大的可靠性。 ? 系统构建简洁、易行,能方便的实现系统功能。 ? 由于构成的系统是一个计算机系统,相当多的功能由软件实现,故具有柔性特点。 ? 有优异的性能价格比。 - 1 - 2 系统总体设计 2.1硬件总体设计 设计并制作一个基于单片机的热水器温度控制系统的电路,其结构框图如图2-1: 电源 继电器 温度传感器 DS18B20 单片机 AT89S52 报警 指示灯 键盘 数码管显示 图 2,1 系统结构框图 2.1.1硬件系统子模块 (1) 单片机最小系统电路部分 (2) 键盘扫描电路部分 (3) 数码管温度显示和运行指示灯电路部分 (4) 温度采集电路部分 (5) 继电器控制部分 (6) 报警部分 2.2 软件总体设计 良好的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 可以减少软件设计的工作量,提高软件的通用性,扩展性和可读性。 本系统的设计方案和步骤如下: (1) 根据需求按照系统的功能要求,逐级划分模块。 (2) 明确各模块之间的数据流传递关系,力求数据传递少,以增强各模块的独立性, 便于软件编制和调试。 - 2 - (3) 确定软件开发环境,选择设计语言,完成模块功能设计,并分别调试通过。 (4) 按照开发式软件设计结构,将各模块有机的结合起来,即成一个较完善的系统。 首先接通电源系统开始工作,系统开始工作后,通过按键设定温度值的上限值和下限值,确定按键将设定的温度值存储到指定的地址空间,温度传感器开始实时 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 ,调用显示子程序显示检测结果,调用比较当前显示温度值与开始设定的温度值比较,如果当前显示值低于设定值就通过继电器起动加热装置,直到达到设定值停止加热,之后进行保温,如果温度高于上限进行报警。 - 3 - 3 硬件系统设计 3.1硬件电路分析和设计报告 本次设计主要思路是通过对单片机编程将由温度传感器DS18B20采集的温度外加驱动电路显示出来,包括对继电器的控制,进行升温,当温度达到上下限蜂鸣器进行报警。P1.7开关按钮是用于确认设定温度的,初始按下表示开始进入温度设定状态,然后通过P1.5和P1.6设置温度的升降,再次按下P1.7时,表示确认所设定的温度,然后转入升温或降温。P2.3所接的发光二极管用于表示加热状态,P2.5所接的发光二极管用于表示保温状态。P2.3接继电器。P3.1是温度信号线。整个电路都是通过软件控制实现设计要求。 3.1.1单片机最小系统电路 因为89S52单片机内部自带8K的ROM和256字节的RAM,因此不必构建单片机系统的扩展电路。如图3,1,单片机最小系统有复位电路和振荡器电路。值得注意的一点是 EA/VP单片机的31脚必须接高电平,否则系统将不能运行。因为该脚不接时为低电平, EA/VP单片机将直接读取外部程序存储器,而系统没有外部程序存储器,所以必须接VCC。在按键两端并联一个电解电容,滤除交流干扰,增加系统抗干扰能力。 U2139P10P00238P11P01337P12P02436P13P03535P14P04634P15P05733P16P06832P17P07 1321INT1P201222INT0P2123P22AT89S521524T1P231425T0P2426P253127C2C3EA/VPP2628P2730PF30PF19VCCX118晶振112MX2 910RESETRXD11TXDC41730RDALE/PR310UF1629+SW5WRPSEN10K)12双1234VCC SW-PB( VCC 图3,1 单片机最小系统图 - 4 - 3.1.2 键盘电路 键盘是单片机应用系统中的主要输入设备,单片机使用的键盘分为编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘的编码,每按下一个键,键盘能够自动生成按键代码,并有去抖功能。因此使用方便,但硬件较复杂。非编码键盘仅仅提供键开关状态,由程序来识别闭合键,消除抖动,产生相应的代码,转入执行该键的功能程序。非编码键盘中键的数量较少,硬件简单,在单片机中应用非常广泛。 图为按键和AT89S52的接线图,检测仪共设有4个按键,每个按键由软件来决定其功能,4个按键功能分别为: (1) SW1:设定按键(设定按键) (2) SW2:加法按键(当前位加5) (3) SW3:减法按键(当前位减5) (4) SW4:退出设置键(系统初始化) 1SW12双)SW-PB(1234U2 P1.0SW2139双)SW-PB(P10P00P1.11223812P11P01P1.234337P12P02双)P1.3SW3SW-PB(436P13P03P1.41253512P14P04P1.534634P15P05P1.6SW4733SW-PB(双)P16P06P1.71283212P17P0734 4.7kVCC1321INT1P2012221INT0P2123comP22AT89S522P1.01524T1P23214253P1.1T0P24263P254P1.23127EA/VPP264285P1.3P27195X16P1.418X267P1.59107RESETRXD8P1.611TXD817309P1.7RDALE/P16299WRPSEN 图3,2 单片机最小系统 4.7k 3.1.3 数码管及指示灯显示电路 )数码管显示说明 (1 各个数码管的段码都是单片机的数据口输出,即各个数码管输入的段码都是一样 - 5 - 的,为了使其分别显示不同的数字,可采用动态显示的方式,即先只让最低位显示0(含点),经过一段延时,再只让次低位显示1,如此类推。由视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定清楚,过程如表3-1。 表3-1 数码管编码表 段码 位码 显示器状态 01H ???????0 08H 02H ??????1? abH 04H ?????2?? 12H 08H ????3??? 22H 10H ???4???? a1H 20H ??5????? 24H 40H ?6?????? 04H 80H 7??????? aaH 本 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 中使用了3个数码管,其中前两位使用动态扫描显示实测温度,在设置加热温度的时候,两个数码管是闪烁,以提示目前处在温度设置状态。第三位数码管静态显示符号“?”。 (2)运行指示灯说明 个LED指示灯和3个数码管。 本热水器温度控制系统中共使用到3 右上角的红色LED是电源指示灯; 数码管右边的红色LED是加热指示灯,当刚开机或温度降到设定温度5?以下时,该灯会亮,表示目前处于加热状态;当温度上升到设定温度时,该LED灭,同时数码管右边的绿色LED亮,表示目前处于保温状态,用户可以使用热水器;当温度再次下降到设定温度5?以下时,绿色LED灭,红色加热的LED灯亮,不断循环。 - 6 - R14VCC470DP1两位数码管DPY_7-SEG_DP8dp1DPYDPYa72aagdpbCOMf63cdfbfb9ggce54ed45deececgbf36ddcf27dpdpbga18aDPYdpcom19DP2 com210U2Q1139470P10P00R6238470P11P01R72337470BP12P02R8436S8550*313470P13P03ECR9535Q3470P14P04R10PNP634470P15P05R117332470P16P06VCCBR1283213470P17P07R13EC1321PNPINT1P201222R164.7KINT0P21VCC23R174.7KP221524T1P231425T0P2426P253127EA/VPP2628P2719X118X2 910RESETRXD11TXD1730RDALE/P1629WRPSEN 图3,3 LED数码管显示电路图 3.1.4 温度采集电路 (1) DS18B20介绍 Dallas最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济。Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、DS1822“一线总线”数字化温度传感器同DS18B20一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55?~+125?,在-10?~+85?范围内,精度为?0.5?。DS1822的精度较差为?2?。现场温 一线总线”的数字方式传输,大大提高了系统的抗干扰性。其DS18B20的管度直接以“ 脚配置和封装结构如图3-4所示。 - 7 - 图3-4 DS18B20封装 引脚定义: ? DQ为数字信号输入/输出端; ? GND为电源地; ? VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 (2)DS18B20的单线(1,wire bus)系统 单线总线结构是DS18B20的突出特点,也是理解和编程的难点。从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,而且DS18B20智能程度较低(这点可以与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成。第二,DS18B20的输出口是漏级开路输出,这里给出一个微控制器和DS18B20连接原理图。这种设计使总线上的器件在合适的时间驱动它。显然,总线上的器件与(wired AND)关系。这就决定:(1)微控制器不能单方面控制总线状态。之所以提出这点,是因为相当多的文献资料上认为,微控制器在读取总线上数据之前的I/O口的置1操作是为了给DS18B20一个发送数据的信号。这是一个错误的观点。如果当前DS18b20发送0,即使微控制器I/O口置1,总线状态还是0;置1操作是为了是I/O口截止(cut off),以确保微控制器正确读取数据。(2)除了DS18B20发送0的时间段,其他时间其输出口自动截止。自动截止是为确保:1时,在总线操作的间隙总线处于空闲状态,即高态。2时,确保微控制器在写1的时候DS18B20可以正确读入。 由于DS18B20采用的是1,Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件 - 8 - 的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 来模拟单总线的协议时序来完成对DS18B20芯片的访问。 ? DS18B20的复位时序,如图3-5 图3-5 DS18B20的复位时序图 ? DS18B20的读时序 对于DS18B20的读时序分为读0时序和读1时序两个过程。 对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的读时序图如图3-6所示。 图3-6 DS18B20的读时序 ? DS18B20的写时序 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。 对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。如图3-7所示。 图3-7 DS18B20的写时序图 (3)DS18B20的供电方式 - 9 - 在图3-8中示出了DS18B20的寄生电源电路。当DQ或VDD引脚为高电平时,这个电路便“取”的电源。寄生电路的优点是双重的,远程温度控制监测无需本地电源,缺少正常电源条件下也可以读ROM。为了使DS18B20能完成准确的温度变换,当温度变换发生时,DQ线上必须提供足够的功率。 有两种方法确保 DS18B20 在其有效变换期内得到足够的电源电流。第一种方法是发生温度变换时,在 DQ 线上提供一强的上拉,这期间单总线上不能有其它的动作发生。如图3-8 所示,通过使用一个 MOSFET 把 DQ 线直接接到电源可实现这一点,这时DS18B20 工作在寄生电源工作方式,在该方式下 VDD 引脚必须连接到地。 图3-8 DS18B20供电方式1 另一种方法是 DS18B20 工作在外部电源工作方式,如图 3-9 所示。这种方法的优点是在 DQ 线上不要求强的上拉,总线上主机不需要连接其它的外围器件便在温度变换期间使总线保持高电平,这样也允许在变换期间其它数据在单总线上传送。此外,在单总线上可以并联多个 DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。 图3-9 DS18B20供电方式2 (4)DS18B20设计中应注意的几个问题 DS18B20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题:较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20 与微处理器间采用串行数据传送。因此, 在对DS18B20 进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在DS18B20 有关资料中均未提及1Wire上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20, - 10 - 在实际应用中并非如此。当1Wire上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC 和地线,屏蔽层在源端单点接地。 本文以广泛应用的数字温度传感器DS18B20为例,说明了1Wire总线的操作过程和基本原理。事实上,基于1Wire总线的产品还有很多种,如1Wire总线的E2PROM、实时时钟、电子标签等。他们都具有节省I/O资源、结构简单、开发快捷、成本低廉、便于总线扩展等优点,因此有广阔的应用空间,具有较大的推广价值。 本设计将温度传感器DS18B20与单片机TXD引脚相连,读取温度传感器的数值。DS18B20与单片机连接图如图所示3-10所示。 U2139P10P00238P11P01337P12P02436P13P03535P14P04634P15P05733P16P06832P17P07 1321INT1P201222INT0P2123P22AT89S521524T1P231425T0P2426P253127EA/VPP2628P2719X118X2 910RESETRXD11TXD1730RDALE/P1629VCCWRPSENR154.7KDS18202DQU3VCCGND1VCC3 图3-10 DS18B20与单片机连接图 3.1.5 电源电路 采用L7805稳压块,输出为5V。电子组件要正常运作都需要电源电压供电,一般常用的电源电压为+5V或+12V,因为数字IC (Ingegrated Circuit:集成电路)所供给的电压为+5V,而CMOS IC所供给的电压为+12V,7805是一个稳压块。7805稳压管把高电压转换到低电压,7805稳压管具有保护单片机的作用。L7805输出端要并联上一个电解电容,滤除交流电干扰,防止损坏单片机系统。本设计采用两种供电方式,一种为DC7~18V直流稳压电源变换成5V的直流电;另一种为四节干电池共6V经二极管加压后得到将近 - 11 - 5V的直流电源,电源配以开关和指示灯,以方便使用。黄色发光二极管表示保温,红色 D3的表示加热状态。 LEDJ1J2+VCC12V12D2+VCC12V2R13112GND121KGNDD12PIN4007VCCIN4007电源座U1大)L7805(VCC2113INOUTGNDC1+2220UF 图3-11 系统电源设计图 3.1.6报警电路设计 同时可以在系统里设定温度上限值,由于加热停止后,加热管还有余热当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。报警电路原理图如图所示。 FM1P2.7 BELL R19 4.7K Q4 2B13EC 8550 VCC 图3-12 报警电路图 图中的三极管8550的作用是增加驱动能力,比9012的驱动电流还大些,因此选用8550。当程序进入报警子程序时,把P2.7置0,就会触发蜂鸣器,为了使报警声音效果更好,对P2.7取反,发出报警嘟噜声音。 3.1.7加热管控制电路设计 继电器是常用的输出控制接口,可以做交直流信号的输出切换。它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。继电器控制接点操作说明如下: - 12 - ?COM:Common,共同点。输出控制接点的共同接点。 ?NC:Normal Close常闭点。以Com为共同点,NC与COM在平时是呈导通状态的。 ?NO:Normal Open常开点。NO与COM在平时是呈开路状态的,当继电器动作时,NO与COM导通,NC与COM则呈开路状态。 当89S52的P2.5输出高电平时,继电器不导通,反之当输出低电平时,继电器导通,这样就激活了连接回路。 图3-13 单片机控制继电器电路图 - 13 - 4 系统软件设计 本系统采用的是循环查询方式,来显示和控制温度的。主要包括四段程序的设计:DS18B20读温度程序,数码管的驱动程序,键盘扫描程序,以及抱经处理程序。 4.1主程序流程图 开始 初始化 读D18B20 温度转换 显示温度 NN自动加热,设置温度, YYN 加热温度设置80? NN温度‘,’温度‘-’设置完成, YY 预设温度,5预设温度-5Y 加热 控制 - 14 - 加热 控制 N实测温度>=预设温度实测温度<预设温度 NYYY 保温指示灯亮,停止加热加热指示灯亮,开始加热 设置温度, NY 温度‘+’N 温度‘-’N设置完成, YYYN预设温度加5预设温度减5 加热 控制 读18B20 温度转换 显示温度 实测温度>=预设温度实测温度<预设温度N 加热指示灯亮,开始加热保温指示灯亮,停止加热 图 4-1 主程序流程图 - 15 - 4.2各个模块的流程图 4.2.1读取温度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之内就得释放单总线。 系统程序设计主要包括三部分:读出温度子程序、温度转换命令子程序、显示温度子程序。 - 16 - 开始 初始化 DS18B20存在吗, Y ROM操作命令 存储操作命令N 读取温度值 返回 图4-2读取温度DS18B20模块的流程图 程序代码为: GET_TEMPER: SETB DQ ;读出转换后的温度值 LCALL INIT_1820 ;先复位DS18B20 JB FLAG1,TSS2 RET ;判断DS1820是否存在?若DS18B20不存在则返回 TSS2: MOV A,#0CCH ;DS18B20已经被检测到!!!!!!!!!!!!!!!跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 LCALL DISPLAY ;这里通过调用显示子程序实现延时一段时间,等待AD转换 结束,12位的话750微秒 LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到35H/36H RET - 17 - 4.2.2键盘扫描处理流程 此流程为键盘扫描处理,CPU通过检测各数据线的状态(0或1)就能知道是否有按键闭合以及哪个按键闭合。键盘管理程序的功能是检测是否有按键闭合,如果有按键闭合,消除抖动,根据键号转到相应的键处理程序,按键流程图如图4-3所示。 开始 温度设置键是否按下? YY 调设置功能子程序 NY温度+5键是否按下?调温度+5功能子程序N N Y温度-5键是否按下?调温度-5功能子程序 NN N温度设置键是否按下? Y 返回键是否按下? Y 调显示子程序 返回主程序 图 4-3键盘扫描子程序流程图 4.2.3 报警处理流程 运行程序后,温度传感器DS18B20即可对环境进行温度采集,并送LED数码管显示。我们可以在程序里设定温度上限值,当采集到的外界温度高于当前所设定温度上限值时,程序就会进入报警子程序,触发蜂鸣器进行报警。其程序流程图如图4-4所示。 - 18 - 开始 不启动蜂鸣器,进行温度比较,超过上限值,N正常显示温度 Y P2.7取反,启动蜂鸣器 图4-4 报警子程序流程图 - 19 - 5 系统调试 5.1 硬件电路调试 仔细检查所接电路,按照硬件原理图接线,理论上是能实现的,如果数码管不显示,则应该检查线路是否正确,或是因为单片机没有工作,还有集电极和发射极是否接对。如果只显示两个八,则可能是DS18B20没有接正确,检查上拉电路是否接好。另外要注意的是,由单片机输出的控制信号比较小,需要进行放大才能驱动继电器工作,否则就不能实现升温过程,通常选用8550三极管来进行放大。还有220V交流电绿色接头和加热管黄色接头必须接正确,否则导致电路烧坏。蜂鸣器是低电平有效。如果能注意这些问题,电路基本不会出错。 5.2 软件调试 如果硬件电路检查后,没有问题却实现不了设计要求,则可能是软件编程的问题,首先应检查初始化程序,然后是读温度程序,显示程序,以及继电器控制程序,对这些分段程序,要注意逻辑顺序,调用关系,以及涉及到了标号,有时会因为一个标号而影响程序的执行,除此之外,还要熟悉各指令的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入到单片机中,如果这一过程出错,那不能实现设计要求也是情理之中的事。本人在设计的时候在伟福仿真软件进行调试,通过此软件进行调试可以很方便的观察单片机内部各个寄存器及内部存储器变化情况,以方便进行调试。图为单片机功能调试图。 图5-1 单片机功能调试图 - 20 - 硬件与软件调试相结合,仔细检查各个模块的设计,旧能顺利完成任务,实现设计要求,在调试过程中必须认真耐心,不能有一点马虎,否则遗漏一个小的问题就会导致整个设计的失败。 5.3 系统操作说明 本系统上电后数码管显示当前测量温度,此时加热指示灯和保温指示灯均不点亮;若此时按“自动加热”键,则单片机自动将预加热温度设置为80?并开始加热,送出一个加热信号,并点亮加热指示灯;若按“温度设置”键,则进入预加热温度设置界面,此时数码管闪烁显示预设置温度,此时通过按键“,”和“,”进行设置温度,预设置温度按“5”递增或递减,设置好温度后再按一次“温度设置”键确定,单片机保存预设置温度,并开始加热。此时单片机通过数码管显示实时检测的温度并和预设置温度进行对比,如果实测温度大于或等于预设置温度,则单片机发出停止加热信号并熄灭加热指示灯,点亮保温指示灯,且当超过预设温度时发出报警;当温度下降到预设置温度以下5度时,单片机再次发出加热信号,同时熄灭保温指示灯,点亮加热指示灯,依次循环控制。 5.4数据测试 1(静态数据测试 取一桶净水,改变它的温度,观察数码管上显示的温度值,并用温度计进行测温,记录两组数据,比较差异。记录表如下: 表5-1 静态温度数据测试表 温度? 1 2 3 4 5 6 23 47 63 77 84 90 显示温度 24 47 63 80 84 91 测量温度 有测试数据可知,本系统测温结果与温度计测温基本一致,能满足设计,证明了设计的合理性。 2(动态数据测试 进行温度设定,通过设定温度值(75?),观察加热管的加热情况,以及数码管的显示值,再用温度计测量水温,每隔一段时间记录一次数据,将两组值进行比较。记录表如下:(设定前温度为25?) - 21 - 表5-2 静态温度数据测试表 1 2 3 4 5 6 7 8 9 10 11 12 13 组数 分组 25 29 34 39 42 48 53 58 62 67 70 73 75 显示温度 25 28 34 38 42 49 53 59 63 67 71 74 75 测量温度 通过上表可看出在加热的过程中,显示的温度与实测的温度近似一样,说明系统的设计达到精度要求,但还是略有偏差,基本不影响设计结果。 整个测试过程表明设计达到了任务书的要求,证明了该方案是合理可行的,顺利完成了设计,达到了预想结果。 - 22 - 总 结 通过本次的设计,使我们不仅对单片机这门课程有了更深刻的认识,懂得了如何运用课本知识结合实际来完成定时器的显示和编程方法以及数码显示电路的驱动方法,使我们能够很快的适应现代控制技术发展的需求,同时也提高了我们的思维能力和实际操作能力,为以后更好的走上工作岗位奠定了坚实的基础。 另外,这次的设计还让我更进一步的认识了关于AT89S52等芯片的引脚功能以及使用方法,使我学会了应用不同的芯片来配合完成整个设计的操作。 在做硬件电路的这段时间里,从思考设计到对电路的调试经过了许多困难。同样在对软件进行设计时,也可为一路坎坷。但是通过对软硬件不断撞墙,不断思考解决问题的过程中,我学会了很多东西,同时对单片机也有了更深的认识。在做设计的时候,很需要耐心和对事物的细心,很多时候一个简单问题的一个简单的疏忽就会导致整个电路的不工作,只有不断的检查不断的调试,才能真正完成一个设计的制作。只有不断的发现问题解决问题,才能从问题中改变自己,提升自己对单片机的能力。 此设计虽然能够完成温度的显示和控制,但功能和精度有待于进一步提高。以后可以通过加入PID算法优化控制功能,并通过液晶显示屏实时显示温度。 - 23 - 参考文献 [l] 乐建波 编著《温度控制系统》化学工业出版社 [2] [美]Ken C.Pohlmann 《数字音频原理及应用》.苏菲.第4版.北京:电子工业出版社,2005,2 [3] 谢自美 编著 《电子线路设计?实验?测试(第二版)》 华中科技大学出版社 2000 [4] 陈东光 编著《单片微型计算机原理及C语言程序设计》华中科技大学出版社 2004.4 [5] 武庆生 仇梅 编著 《单片机原理与应用》 电子科技大学出版社 1998.2 [6] 谭浩强 编著《C程序设计》.北京:清华大学出版社1999年 [7] 华中理工大学电子学教研室编 《电子技术基础模拟部分(第四版)》高等教育出版社 1999.6 [8] 华中理工大学电子学教研室编 《电子技术基础数字部分(第四版)》高等教育出版社 2000.6 [9] 赵晶 编著《电路设计与制版——Protel 99se 的高级应用》 人民邮电出版社 2000.1 [10] 《电子制作》2004.10 [11] 王彬 任艳颖 编著《Digital IC System Design》 西安电子科技大学出版社 2005.9 [12] 赵丽娟 邵欣编著《基于单片机的温度监控系统的设计与实现》 机械制造 [13] 郭炳坤 简单的恒温箱温控电路[J].仪器与未来,1991 [14] Guiyun Tian 《Foundation and Application of Microcontraller 》 高等教育出版社 2004.11 [15](美)Bjarne Stroustrup 《THE C++ PROGRAMMING LANGUAGE, SPECIAL EDITION》 Addison Wesley 1997 - 24 - 附录一:系统源程序 EMPER_L EQU 29H;用于保存读出温度的低8位 TEMPER_H EQU 28H;用于保存读出温度的高8位 FLAG1 EQU 38H;是否检测到DS18B20标志位 A_BIT EQU 20H;数码管个位数存放内存位置 B_BIT EQU 21H;数码管十位数存放内存位置 B1 EQU 70H;温度小数点位 A1 EQU 71H;设定温度值 DQ EQU P3.1 ;DQ为DS18B20数据位 BELL EQU P2.7 ;//蜂鸣报警 ORG 0000H ;单片机内存分配申明! AJMP MAIN0 ;///////////////////////////////////前面的都是定义 MAIN: MOV R0,#10 M1: CPL P2.3 ACALL DELAY125 DJNZ R0,M1 ;//此段为灯闪5次,无实际意义 ;/////////////////////////////////////////////// MAIN0: MOV A1,#80 ;默认加热为80度 MAIN1: LCALL D1820 ;调用读温度子程序 LCALL DISPLAY ;调用数码管显示子程序 MOV A,29H CLR C CJNE A,A1,MAIN1_1 SETB BELL ;//温度相等,关闭蜂鸣器 AJMP MAIN1_1_A ;//下等不用叫蜂鸣器 MAIN1_1: JC MAIN1_2 ;为1转移,表示小于设定温度 CPL BELL ;蜂鸣器断续鸣叫 MAIN1_1_A: CLR P2.3 ;//下面是表示没达到温度 SETB P2.5 - 25 - AJMP MAIN2 ;/////////////////////////////////////主要是检测温度是否小于设定的温度,小于,则开发热管 CLR P2.3 MAIN1_2: SETB BELL ;//关闭蜂鸣器 CLR P2.5 ;//开发热管 SETB P2.3 ;///////////////////////////////上面的是大于,关发热管 MAIN2: JB P1.0,MAIN1;//看P1.0有否按下 ACALL DELAY125 ;//延时防抖动,常用的手法,网上很多介绍的 JB P1.0,MAIN1;//再次查看 CLR P2.3 JNB P1.0,$ ;//等按键完全松手才进入! SETB P2.3 SETB P2.5 ;///检测到P1.0按键后后进入设定温度 MAIN2_1: ACALL DISPLAY1 JB P1.2,MAIN2_2 ACALL DELAY125 JB P1.2,MAIN2_2 JNB P1.2,$ MOV A,#5 ADD A,A1 CLR C CJNE A,#100,MAIN2_1_1 MOV A,#99 AJMP MAIN2_1_3 ;////////////////上面这一段是+5度按键,按下+5度 MAIN2_1_1: JC MAIN2_1_3 MAIN2_1_2: CLR C MOV A,#99 MAIN2_1_3: MOV A1,A - 26 - MAIN2_2: JB P1.4,MAIN2_3 ACALL DELAY125 JB P1.4,MAIN2_3 JNB P1.4,$ MOV A,A1 CJNE A,#99,ZY1 MOV B,#4 AJMP ZY2 ZY1: MOV B,#5 ZY2: CLR C MOV A,A1 SUBB A,B MAIN2_2_1: JNC MAIN2_2_2 MOV A1,#0 AJMP MAIN2_3 ;////////////////上面这一段是-5度按键,按下-5度 MAIN2_2_2: MOV A1,A MAIN2_3: JB P1.6,MAIN2_1 ACALL DELAY125 JB P1.6,MAIN2_1 CLR P2.3 JNB P1.6,$ SETB P2.3 AJMP MAIN1 ;/////////////上面这一段是退出的意思的! D1820: LCALL GET_TEMPER ;调用读温度子程序 MOV B1,29H MOV A,29H MOV C,40H ;将28H中的最低位移入C RRC A MOV C,41H - 27 - RRC A MOV C,42H RRC A MOV C,43H RRC A MOV 29H,A MOV A,B1 MOV B,#10H MUL AB MOV B,#10H DIV AB MOV B,#10 MUL AB MOV B,#10H DIV AB MOV B1,A RET ;//////////上面这一段是读取温度后进行转换的意思! ;///////////////////////////////// ;//////////////////////////////// ;/////////////////////////////// INIT_1820: SETB DQ ;这是DS18B20复位初始化子程序 NOP CLR DQ ;主机发出延时537微秒的复位低脉冲 MOV R1,#3 TSR1: MOV R0,#107 DJNZ R0,$ DJNZ R1,TSR1 SETB DQ ;然后拉高数据线 NOP NOP - 28 - NOP NOP MOV R0,#25H TSR2: JNB DQ,TSR3 ;等待DS18B20回应 DJNZ R0,TSR2 LJMP TSR4 ;延时 TSR3: SETB FLAG1 ;置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在 LJMP TSR7 TSR5: MOV R0,#117 TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间 TSR7: SETB DQ RET GET_TEMPER: SETB DQ ;读出转换后的温度值 LCALL INIT_1820 ;先复位DS18B20 JB FLAG1,TSS2 RET ;判断DS1820是否存在?若DS18B20不存在则返回 TSS2: MOV A,#0CCH ;DS18B20已经被检测到!!!!!!!!!!!!!!!跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ;发出温度转换命令 LCALL WRITE_1820 LCALL DISPLAY ;这里通过调用显示子程序实现延时一段时间,等待AD转换 结束,12位的话750微秒 LCALL INIT_1820 ;准备读温度前先复位 MOV A,#0CCH ;跳过ROM匹配 LCALL WRITE_1820 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_1820 LCALL READ_18200 ;将读出的温度数据保存到35H/36H RET - 29 - WRITE_1820: MOV R2,#8 ;一共8位数据 CLR C ;写DS18B20的子程序(有具体的时序要求) WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET READ_18200: MOV R4,#2 ;将温度高位和低位从DS18B20中读出 MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入 28H(TEMPER_H) RE00: MOV R2,#8 ;数据一共有8位 RE01: CLR C ;读DS18B20的程序,从DS18B20中读出两个字节的温度数据 SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#9 RE10: DJNZ R3,RE10 MOV C,DQ MOV R3,#23 - 30 - RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 RET ;/////////////////////////////////////////上面的这些都是温度采集的! DISPLAY: MOV A,29H ;将29H中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制 DIV AB ;显示子程序 MOV A_BIT,A ;十位在A MOV B_BIT,B ;个位在B MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#1 DPL1: MOV R1,#25 ;显示1000次 DPLOP: MOV A,B_BIT ;取个位数 MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.2 ;开个位显示 ACALL D1MS ;显示1MS SETB P2.2 MOV A,A_BIT ;取十位数 MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.1 ;开十位显示 ACALL D1MS ;显示1MS SETB P2.1 MOV P0,#0FFH DJNZ R1,DPLOP ;100次没完循环 DJNZ R0,DPL1 ;4个100次没完循环 - 31 - RET ;/////////////////////////////////////上面这段显示实时温度 ;////////////////////////////////////// DISPLAY1: MOV A,A1 ;将29H中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制 DIV AB ;显示子程序 MOV A_BIT,A ;十位在A MOV B_BIT,B ;个位在B MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#1 DPL11: MOV R1,#25 ;显示1000次 DPLOP1: MOV A,B_BIT ;取个位数 MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.2 ;开个位显示 ACALL D1MS ;显示1MS SETB P2.2 MOV A,A_BIT ;取十位数 MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.1 ;开十位显示 ACALL D1MS ;显示1MS SETB P2.1 MOV P0,#0FFH DJNZ R1,DPLOP1 ;100次没完循环 DJNZ R0,DPL11 ;4个100次没完循环 RET ;/////////////////////////////上面这段显示设置温度 D1MS: MOV R7,#50 ;1MS延时 DJNZ R7,$ RET - 32 - DELAY10: MOV R6,#20 ;10MS延时 D3: MOV R5,#255 DJNZ R5,$ DJNZ R6,D3 RET DELAY125: MOV R6,#255 ;125MS延时 D1: MOV R5,#255 DJNZ R5,$ DJNZ R6,D1 RET DELAY1S: MOV R7,#8 ;1S延时 D2: LCALL DELAY125 DJNZ R7,D2 RET 长短而已 ;///////////////////////这些都是延时, NUMTAB: DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H DB 80H,90H,88H,83H DB 0C6H,0A1H,86H,8EH ;////////////////////数码管的具体值 END - 33 - S8550附录二:系统硬件总图 输入 7R14发热管输出6VCC220V47054DPY_7-SEG_DP32两位接线柱两位接线柱81dp脚3dpab继电器闭合时短接个,、DPYcQ332a9dCOMefb、2gB470f1R6DP2gecCEd31PNP三极管Q1继电器VCC分别为相当于开关10com2,2B1DPYDPYaR18CE2aab319PNP3cfbfbcom14.7Kgg4dVCC5DP1两位数码管eecec6ddf7dpdpgEC8C2dp13C3VCCQ230PF30PF2PNPB从左手边数起,DS1820 U32D413LEDVCC1D5212GNDDQLEDJ3 112J1J22VCC12D2+VCC12V2R447031GND12GNDVCCR54702PIN4007VCCVCCS8550*3 拿着平的那面正对着自己: 4.7kVCCU21139R15comP10P002P1.0R162384.7K4.7K4702P11P01R7的管脚3P1.1R173374.7K4703P12P02R84P1.2436R194704P13P03R9AT89S525P1.35354.7K4705P14P04R106P1.46344706P15P05R117P1.5733SW24707J4SW-PB(P16P06R128P1.68321247081P17P07R1312VCC9P1.71349DS18B20SW11321SW-PB(2INT1P20122122212D3INT0P21VCC3423LEDP221524))))FM1P2.7T1P23C4双双1425双双VCCT0P24R310UF26+R1BELLP251210KP1.03127SW4EA/VPP26SW-PB(SW3SW-PB(P1.11K2812P2712P1.212191234Q4X134VCCP1.318112MX2P1.443221晶振P1.5B29110RESETRXDVCCP1.6)双SW-PB(11TXDCEP1.7173031SW58550RDALE/P1629C1WRPSEN+12220UF U1L7805( 3OUT)2大GND +VCC12V D1IN4007 1电源座IN KM141L1NO - 34 - close3COM52L2NCopen 内部资料 请勿外传 - 35 - - 36 -
本文档为【基于单片机水温控制器的设计毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_624976
暂无简介~
格式:doc
大小:166KB
软件:Word
页数:42
分类:企业经营
上传时间:2017-12-11
浏览量:56