为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 基于单片机饮水机温度控制系统设计

基于单片机饮水机温度控制系统设计

2018-01-07 48页 doc 90KB 22阅读

用户头像

is_633808

暂无简介

举报
基于单片机饮水机温度控制系统设计基于单片机饮水机温度控制系统设计 基于单片机智能饮水机温度控制系统 基于单片机饮水机温度控制系统 摘 要 在人们的日常生活之中饮水机发挥着不可取代的作用,随着科学技术的发展对于温度的控制也不断地趋于人性化、智能化。本设计是饮水机基于单片机的智能温度控制系统,其最终目的是实现对饮水机内饮水加热的温度可控性。 本设计以STC89C52为核心,通过数码管和按键来实现饮水机温度的实时显示和温度设定,从而实现人机对话。采用DS18B20来实现对饮水机水温的采集;光电耦合器MOC3041和可控硅组成的控制电路,以避免加热电路的通...
基于单片机饮水机温度控制系统设计
基于单片机饮水机温度控制系统设计 基于单片机智能饮水机温度控制系统 基于单片机饮水机温度控制系统 摘 要 在人们的日常生活之中饮水机发挥着不可取代的作用,随着科学技术的发展对于温度的控制也不断地趋于人性化、智能化。本设计是饮水机基于单片机的智能温度控制系统,其最终目的是实现对饮水机内饮水加热的温度可控性。 本设计以STC89C52为核心,通过数码管和按键来实现饮水机温度的实时显示和温度设定,从而实现人机对话。采用DS18B20来实现对饮水机水温的采集;光电耦合器MOC3041和可控硅组成的控制电路,以避免加热电路的通断对控制电路的影响,提高系统的安全、稳定性。 在温度控制方面采用PWM方式进行控制,使得饮水机对温度的控制更加的精确。 关键词:STC89C52;DS18B20;MOC3041;数码管;PWM I Water Temperature Control System Based On MCU Abstract In People's Daily life water fountain plays an irreplaceable role , with the development of science and technology,the control of the temperature also constantly tend to be more humane, intelligent. This design is the water fountain’s intelligent temperature control system based on single chip microcomputer , the ultimate goal is to realize the temperature controllability of heating the water in the water fountain. This design makes STC89C52 as the core, through the digital tube and the key to achieve the real-time display of temperature and temperature settings of the water fountain, so as to realize the man-machine dialogue. DS18B20 is used to realize to the water fountain’s water temperature acquisition; the control circuit consists of photoelectric coupler MOC3041 and TRIAC, in order to avoid the heating circuit’s on-and-off impacting the control circuit,thus to improve system’s security, stability. Using PWM mode in temperature control,the control mode makes temperature control the water fountain of more accurate. Key word: STC89C52; DS18B20; MOC3041; Digital Tube;PWM 目 录 摘要 ................................................................................................................................................... I Abstract ............................................................................................................................................. II 第一章 引 言 .................................................................................................................................. 1 1.1研究的背景及意义................................................................................................................. 1 1.2温度控制系统简介................................................................................................................. 1 1.3我国饮水机的发展现状.......................................................................................................... 1 1.4 小结..................................................................................................................................... 2 第二章 硬件设计............................................................................................................................... 3 2.1 概述..................................................................................................................................... 3 2.2 单片机控制系统 ................................................................................................................... 3 2.2.1 单片机简介................................................................................................................. 4 2.2 STC89C52 ................................................................................................................... 4 2. 2.2.3 最小系统设计 ............................................................................................................. 6 2.3 温度检测系统....................................................................................................................... 6 2.3.1 DS18B20温度传感器 ................................................................................................... 6 2.3.2 测温电路 .................................................................................................................... 7 2.4 温度控制系统....................................................................................................................... 7 2.4.1 光电耦合器................................................................................................................. 7 2.4.2 可控硅........................................................................................................................ 8 2.4.3 PWM........................................................................................................................... 8 2.4.4 控温电路 .................................................................................................................... 8 2.5显示系统............................................................................................................................... 9 2.5.1锁存器 ........................................................................................................................ 9 2.5.2 数码管.......................................................................................................................10 2.5.3 显示电路 ...................................................................................................................10 2.6 温度设定............................................................................................................................. 11 2.7 报警电路.............................................................................................................................12 2.8 小结....................................................................................................................................12 第三章 软件设计..............................................................................................................................13 3.1 显示部分.............................................................................................................................13 3.2 温度设定部分......................................................................................................................13 3.3 温度检测部分......................................................................................................................14 3.4 温度控制部分......................................................................................................................17 3.5报警部分..............................................................................................................................18 3.6小结.....................................................................................................................................19 III 第四章 结束语 .................................................................................................................................20 致 谢 ............................................................................................................. 错误~未定义书签。 参考文献 ..........................................................................................................................................21 附录一 主程序 .................................................................................................................................22 附录二 主电路图..............................................................................................................................28 第一章 引 言 1.1研究的背景及意义 温度控制在生产和生活中起着非常重要的作用,在控制过程中过高或过低的温度将会对水资源的使用产生影响。在使用效率受到制约的情况下,水资源将以我们无法察觉的形式被大量的浪费。所以我们在水的温控过程中应时刻关注水温的变化,将宝贵的资源充分应用。 随着经济发展和生活水平的提高,人们对健康的关注越来越多。饮水机因其便捷、价格低廉、结构简单等优点而被广泛用于现代生活之中。但普通的饮水机是通过对水的反复加热来维持水的温度,这样不仅会使水产生对人体有害物质,而且极大的浪费了资源。同时普通饮水机也具有温控性差,水温不能精确控制的缺点。从家电的智能化和人性化方面出发,对于饮水机能够精确定温、安全使用等性能的使用,在当前环境下是很有必要的。 此次设计是基于单片机饮水机的温度控制。在本次的设计过程中能够巩固我们所学的基础知识、专业知识以及技术能力,同时能够增强我的综合运用能力和独立分析问、解决问题的能力;加深对饮水机的工作原理的理解、培养元器件选择及电子仪器的常用设计方法的能力;进而更好的掌握应用电子线路设计的基本思想和方法。由于本设计完全面向实际,在全面的了解电子设计的基本过程和基本工艺的同时,对于设计的系统实现成本的考虑也使此设计变的更加有意义。 1.2温度控制系统简介 现代控制系统设计中,温度的控制在生产及生活中都起着重要作用。最初温度控制主要是在工业生产中使用,在化工、石油、冶金等生产过程中温度控制往往是非常重要的部分,在工业生产中需要准确地加以控制。除此之外,温度控制系统还广泛的用于其他领域,通过温度控制来保持温度的恒定或按照需要发生变化。 在成产中对温度进行实时控制,这极大提高了生产效率和产品的质量。在单片机得到应用的温控系统中,温度控制的精度能够达到很高的地步。智能化的温度控制系统极大节约了能源,而且可以实现对多点温度的控制能力。 随着科技的不断发展,温度控制逐渐深入到我们日常生活之中。电热水器、电饭煲及饮水机之类的电器成为我们生活的得力助手。因此对于温度控制的精确性不仅影响到生活质量,在能源日益紧张的现状下也产生有利的影响。 1.3我国饮水机的发展现状 随着社会经济的发展,我国的饮水机行业发展速度较快。基于生产技术水平的提高,饮水机行业在国内外市场的发展形势都十分看好。近几年来我国国民经济快速发展,人们的生活水平不断提高,饮水机行业新进企业也不断增多,因此饮水机行业的竞争也日趋激烈。新进企业的增多、原材料价格的上涨等因素促使企业只有不断提高自身的生产技术、提高创新能力才能抢占更大的市场空间。 在市场竞争中以低价来增强自身竞争力也成为企业的一种手段,但受到生产成本的限制使得企业利 1 润空间不大,从而是的企业创新能力不足。这就造成了目前饮水机产品的固话,仅以简单的重复加温来起到加温的作用,从而降低产品的生产成本。 1.4 小结 本章介绍了温度控制以及饮水机当前发展现状的相关内容。针对当前饮水机产品的不足,本次基于单片机智能饮水机温度控制系统的设计,是一次温度控制与智能化的结合。加入以单片机为核心的温度控制系统,使得饮水机在我们日常生活之中更加的便捷、安全。与普通的饮水机相比本系统所实现的饮水机的控制系统更加的智能化,便捷的人机对话、清晰的实时温度显示以及精确的温度控制等特色是目前普通单片机所不具备的。并且本次设计的结构简单、实现成本低,通过软硬件的结合极大弥补了当前饮水机过于机械化的缺陷。本设计兼具工业温度控制方面的准确性,同时也具备民用温度控制的通用性,是一次低成本与高性能的体现。 第二章 硬件设计 2.1 概述 基于单片机饮水机温度控制系统框图如下所示: 锁存器显示温度检单测片 机控制电控加热路制 系 统按键 报警 图2.1 系统框图 在该系统中通过温度传感器实现对饮水机内水温的采集并以电信号的形式发送到单片机,经单片机对输入的温度信号的处理通过数码管实时的显示出来。在对饮水机的温度控制方面,使用按键可预设定水温。单片机根据预设定的水温与温度传感器输入的温度信号的比较控制饮水机的温度控制模块对饮水机进行加热。在整个工作过程中该系统一直检测饮水机内部的水位,当水位过高或过低时,系统会发出报警并自动使饮水机的加热丝断电。当水温达到沸腾点时,系统会自动给加热丝断电从而提高其安全性。 (1)单片机控制系统采用具有丰富的指令集STC89C52 内核单片机。所有的寄存器都直接与运算 大提高了代码效率,从而提高系统的性能。 逻辑单元(ALU) 相连接,这种结构极 (2)温度采集方面通过DS18B20温度传感器对水温进行探测并转换成可被单片机理解的输入信号,根据输入的信号通过单片机输出的PWM波来控制加温系统从而保持温度的恒定。DSl820数字温度计提供9位(二进制)温度信息经过单线接口送入DSl820或从DSl820送出。从单片机到DSl820只需一条线即可实现二者的通信。同时DSl820不需要外部电源而是可以由数据线本身提供。 (3)饮水机加热系统选用光电耦合器MOC3041和可控硅组成,这样可以避免加热电路的通断对控制电路的影响,提高系统的安全、稳定性。通过单片机输出的信号和光耦的使用,可以提高系统的采样频率,使控制精度更加准确,温度控制的实时性和控制效果更好。 该在进行控制的时候采用的不是D/A转换后再控制调节阀的控制方法,而是在控制电路中直接外接一个光电耦合器,通过单片机输出的控制信号来调节控制电路的一个周期内光耦开关的导通和断开时间,从而控制加热丝的通断电。这样的设计方法既节省了硬件材料也可以在很大程度上减少电路的结构复杂度。 2.2 单片机控制系统 用单片机实现其具体控制功能如下: (1)通过传感器能够实时的测量饮水机内水的温度,并通过数码管显示出来。 3 (2)通过按键能够设定水的温度区间,其设定范围是0? ~ 98? 。 (3)通过控制电路能够实现水温的自动控制,预设水的温度,则水温能够恒定在该区间范围内。 2.2.1 单片机简介 单片机也被称为微控制器,诞生于20世纪70年代末,先后经历SMC、MCU、SOC三大阶段。最早被应用于工业控制领域,其设计理念是通过将外围设备与CPU集成在一起从而能够更容易的嵌入到控制系统中。早期的单片机都是8位或4位的,随着工业控制领域内对控制性能要求的不断提高,16位的单片机也随之产生并得到广泛的应用。在90年代以后消费型电子产品的到极大发展,单片机技术也得到巨大的提高,32位的单片机迅速的取代16位的单片机并进入电子主流市场。而且传统型的8位单片机性能也比最初提高数百倍,目前当代的单片机系统已不是只在裸机的环境下使用,在嵌入式操作系统中也被广泛的使用。单片机具有体积小、集成度高的优点,同时它也具有较高的可靠性和控制性。在便携式的电子产品中其低功效和采用点电压的特性也使得单片机得到广泛的应用。单片机具备的扩展性等优点也使得其通用性更强。 单片机主要由CPU、存储器和输入/输出接口组成,作为器件级的计算机系统,可嵌入到任何系统中去,在对象体系中进行数据的采集、处理、显示和输出等功能,从而实现系统的智能化控制系统。单片机具有计算机的系统内核,将它嵌入到系统为电子系统的智能化的实现奠定了基础。单片机的广泛使用,使得电子系统迅速的由传统的电子系统过渡到智能化现代的电子系统。单片机为了满足外部设备的要求不断提高其控制能力和接口能力,其中控制能力更加的突出。 目前市场上单片机应有尽有,它们各具特色、互补不足,为单片机的应用提供了更为广阔的空间。单片机的发展过程中显示出如下的趋势: (1)低功耗CHMOS化。现在的单片机功耗大都在100mW左右,随着当前科技的发单片机的功耗越来越低。现在大多的单片机基本采用CMOS制造工艺,以应对单片机低功耗的要求。 (2)主流与多样共存。当前的单片机种类繁多、各具特色,但仍然是几种型号占据主流地位。同时精简指令集也发展强劲,各类型号的产量也与日俱增。以其价低质优也占据一定的市场。这种情形将在一定时期内继续延续,多种单片机共存互补、相辅相成、共存发展。 (3)微型化。单片机是一种将中央处理器、只读程序存储器、随机数据存储器、通信接口、中断系统、时钟电路和定时电路集成在一起的单一芯片。面对当前电子产品体积小、重量轻的普遍要求,单片机除了功耗低和功能强外,体积小也成为其发展的方向。 (4)智能化。在控制系统中对于智能化的追求不断地提高,单片机在集成技术得到极大发展的前提下,其功能和智能化也得到飞速的发展。 2.2.2 STC89C52 STC89C52是一款高性能CMOS 8位单片机,采用高密度、非易失性存储技术,与MCS-51指令系统兼容。它的功能强大,适用于许多较为复杂的控制应用环境。 该型号的单片机具有以下的标准功能:256字节的RAM,8k的Flash存储器,3个16位的定时,计数器、32个I,O接口,全双工通信接口,片内时钟电路等[1]。提供可选的几种工作模式,在空闲方式单片机的CPU停止工作、但通讯口、定时,计数器、、RAM及中断部分仍可以继续的工作,在掉电 模式下保存单片机RAM中的内容、同时停止其他部件的工作直到复位信号的输入。 STC89C52的端口如下: (1)P0口:一组双向的8位漏极开路型I,O口,可作为地址,数据端。作为输出口,它以灌电流的方式来驱动TTL逻辑门电路。当P0口写入数字“1”时,则作为高阻抗的输入端。在访问系统外部存储器时,分时的进行地址和数据线的总线转换。在编程时,该端口接收指令。当在校验时,该端口输出指令时需要外接上拉电阻以提供需要的驱动电流。 (2)P1口:P1口是一组内部带有上拉电阻的双向8位I,O口,其输出可驱动4个TTL逻辑电路。作为输入口时,通过内部的上拉电阻将端口输出高电平。作为输出口,由外部信号将端口的电位拉低从而使得产生输出电流。在P1口的P1.0和P1.1两个位端口还可当作定时,计数器输入口。 (3)P2口:同P1口一样也是一组内部带有上拉电阻的双向输入,输出端口,输出缓冲级驱动4个TTL电路。作为输入,输出端口时该端口原理与P1相同。不同之处就在于当单片机访问外部存储器时,该口输出地址高8位的数据;单片机访问外部8位地址的数据存储器时,输出端口锁存器中的数据。 (4)P3口:P3口同P1口一样作为输入,输出端口。但P3口除了作为输入,输出口外还具有如2.1的第二功能。 [1]表2.1 P3口第二功能表 端口 第二功能 P3.0 串行口输入端 P3.1 串行口输出端 P3.2 外部中断0 P3.3 外部中断1 P3.4 定时,计数器0 P3.5 定时,计数器1 P3.6 外部存储写选通端 P3.7 外部存储读选通端 (5)RST:单片机复位输入端,当该端口有超过两个机器周期的高电平输入时单片机进行复位。 ALE,PROG:单片机地址锁存允许端。当单片机访问外部存储器时,输出锁存地址低8位字节的信号。 PSEN:外部程序存储器读选通信号。当单片机读取外部程序存储器的指令时,输出两个脉冲信号。但当访问外部数据存储器时,可以跳过两个脉冲信号。 EA,VPP:单片机外部访问允许端。该端口为持续的低电平时,单片机方可访问外部程序存储器。否则单片机执行的是内部程序存储器中的指令。 EA,VPP:外部访问允许。当仅访问外部程序存储器时,该端口保持低电平。否则单片机执行的是内部程序存储器中的指令。 XTAL1、XTAL2:外接晶振接口。通过外接的晶振来给单片机提供时钟信号。 5 2.2.3 最小系统设计 单片机最小系统设计如图2.1所示,由单片机STC89C52、复位电路和外部时钟电路三个部分组成。其中单片机STC89C52在整个系统中是作为核心的控制器而存在的;时钟电路为单片机的正常工作提供所需的时钟信号;复位电路是在单片机在出现问题时起到重启系统的作用,使系统能够正常、有序、稳定地工作。 VCC C3S1U110uF140P1.0VCC239P1.0P0.0338P1.2P0.1437P1.3P0.2R1536P1.4P0.3635P1.5P0.410K734P1.6P0.5833P1.7P0.6932RESTP0.71031P3.0/RXTEA1130P3.1/TXDALEGND1229P3.2/INT0PSEN1328P3.3/INT1P2.71427P3.4/T0P2.61526C1P3.5/T1P2.51625P3.6/WRP2.41724P3.7/RDP2.3182330pFXTAL2P2.2Y11922XTAL1P2.112MHz2021C2GNDP2.012STC89C5230pF GND 图2.2 单片机最小系统 2.3 温度检测系统 2.3.1 DS18B20温度传感器 DSl8B20温度传感器提供9位(二进制)数据信号,经过显示环节显示出器件的温度。数据信息可通过一条数据线在传感器和主机之间传递,因此从主机到DSl8B20只需一条线即可。DSl8B20的工作电源可以由数据线自身来提供而不需要外部供电电源。而且每一个DSl8B20在生产时已经给定了唯一的序列号。因此即使是多个DSl8B20进行温度的测量,仍可以通过一条线与主机进行通信。这一特性可使得在不同的地方放置多个温度传感器件。DSl8B20的温度测量范围从-55?到+125?增,其量值为0.5?,该传感器可以在1s内迅速把温度变换成为可显示出来数字信号。 [2]DS18B20采用1,Wire总线协议方式,即在一根数据线上能够实现数据的双向传输,而对于STC89C52单片机来说,硬件上不能够支持单总线的协议。因此,需采用软件方法来模拟单总线协议的时序来完成对DS18B20芯片的访问。 由于DS18B20是在一根数据线上实现数据的通信,因此,在单片机与该传感器的通信有着严格的时序的要求。并且DS18B20的通过通信协议来保证传输的各位数据完整性和准确性,并且该协议定义 [3]几种时序包括:初始化时序、写时序与读时序。在所有的时序中主机都是用来作为系统主设备,将单总线器件作为系统从设备。每一次的指令和数据的传输都应从主机的写时序开始,当要求回送数据时,在发送写命令后,需通过读时序来完成数据的接收,数据和指令由低到高逐次传输。DS18B20的管脚如表2.2所示。 表2.2 DS18B20引脚功能 管脚 名称 引脚功能 1 GND 接地端 2 DQ 数据输入,输出端 3 VDD 外接电源端 将 DSl8B20用于贮存测得的温度值的两个8位存贮器中。1号存贮器存放的是温度值的符号,若温度为负,则1号存贮器的8位全为1,否则全都是0。0号存贮器则存放温度值的补码,LSB(最低位)的1表 [4]示的是0.5。将存贮器中的二进制数求补后转换成十进制数并除以2即为被测的温度值。DS18B20存储器存储温度时,其最高位为符号位。表2.3为DS18B20的温度存储方式,MSB中S=1表示为负温度,S=0表示为正温度。 表2.3 DS18B20温度存储方式 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LSB 6543210-1 22222222 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 MSB S S S S S S S S 2.3.2 测温电路 DS18B20与单片机STC89C52通信连接如图2.2所示。 VCC R5U1140P1.0VCC239U24.7K13P1.0P0.0GNDVCC3382DQP1.2P0.1BS18B20437P1.3P0.2536P1.4P0.3635P1.5P0.4734P1.6P0.5833P1.7P0.6932RESTP0.71031P3.0/RXTEA1130P3.1/TXDALE1229P3.2/INT0PSEN1328P3.3/INT1P2.7GND1427P3.4/T0P2.61526P3.5/T1P2.51625P3.6/WRP2.41724P3.7/RDP2.31823XTAL2P2.21922XTAL1P2.12021GNDP2.0 STC89C52 图2.3 DS18B20与单片机连接图 该系统的实现是依靠温度传感器对饮水机内部水温的实时检测,经数据转换并输出可被单片机识别的信号,从而实现单片机对实时水温数据的掌控。该系统测温的精度可达到0.1度,且测量温度的范围可在零下20度到零上100度间。 2.4 温度控制系统 2.4.1 光电耦合器 光电耦合器对输入、输出的电信号起到隔离作用,在电路中具有广泛的应用。它由发射、接受和信 7 号放大三部分组成,由发光二极管发出光线,接受部分的光探测器接收光信号产生光电流,再进一步放 [5]大后输出进而起到控制作用,实现电—光—电的转换,并对输入和输出端起到隔离的作用。光耦合器的输入和输出信号间相互隔离,使得其具有较好的抗干扰能力。光电耦合器的输入端属于低阻态元件,对于共模的抑制能力较强,在长线传输中作为隔离元件使用能够极大提高信噪比,提高系统工作的可靠性。 光电耦合器有非线性光耦和线性光耦两种类型。其中非线性光耦是一种适合于开关信号的传输,其电流传输特性曲线是非线性的器件,该类型并不适合于模拟量信号的传输;线性光耦是一种能够以线性的特性来进行隔离控制,其电流传输特性曲线接近直线的器件,在小信号的情况下性能较好。 [5]光电耦合器的应用具有以下的优势: (1)光电耦合器的隔离性能和抗干扰性能较好,在逻辑电路中的使用使得电路更加可靠。 (2) 在开关电路中,光电耦合器的应用使得控制电路和开关之间的电隔离很容易实现往,这对于其他的电子开关来说是难做到。 (3) 在触发电路中光电耦合器用于双稳态输出的电路,可有效地解决控制信号与负载的隔离问题。 (4) 在脉冲放大电路中光电耦合器的应用可以将脉冲信号进行放大。 (5) 在线性电路上,光电耦合器具有较高地线性度以及较好的电隔离性能。 (6) 光电耦合器还用于高压控制,可取代变压器、代替触点继电器以及用于A/D电路等多种优势。 2.4.2 可控硅 可控硅是具有三个PN结的大功率半导体器件,又称为晶闸管。它广泛应用电子产品中,在可控整流、无触点开关等电路中起到作用。可控硅的结构简单、体积小、功能强等特性使得其在电子器件中的应用更加广泛,尤其可以用来作为高电压与电流的控制。 在使用可控硅的控制电路中,当控制端开路时器件断开可控硅在电路中起到开关的断开作用;当控制端加入正向电压时器件导通,可控硅此时起到的是开关导通的作用。 2.4.3 PWM 脉宽调制PWM是通过对逆变电路开关器件通断的控制,使得输出幅值相等的脉冲,并用这些脉冲 [6]代替所需要的波形。即在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为所需波形。通过对各脉冲的宽度进行调制,可改变逆变电路输出电压的大小及输出频率。 PWM具有从处理器到被控系统的信号都是数字形式,省去数模转换环节,从而将噪声的影响降到最小的优点。这使得PWM在通信中得到极大的有应用,并使得通信距离获得极大延长。 2.4.4 控温电路 温度控制系统如图2.3所示。 VCC+12V R101KU3 R11p1.010Q6MOC3041IGBTC12R120.27uF4.7K~220VD4 GND 图2.4 温度控制系统 该系统通过单片机输出控制信号来控制MOC3041和可控硅来实现对加热丝的通断电控制。当实际温度低于预设温度大于5?温差时,饮水机一直加热;当饮水机内的水温低于预设温度5?以内时,以PWM控制信号来控制饮水机进行加热;当实际温度达到预设值时,饮水机停止加热。通过循环往复的控制加热丝的通断电使得温度一直处于温度设定的范围。 +5V+12v R16K54.7kJP1R10帕尔贴1RES22Q4NPN R9T02K 图2.5 温度控制系统 如图2.5所示为饮水机的降温电路,通过该电路的应用可将饮水机内的水以冷水的方式流出。该电路还在加温时温度超过预设温度是起到降温的作用。途中JP1为帕尔贴的接口,该器件通电后冷端的热量移到热端,从而使得冷端温度变低,热端温度上升。 2.5显示系统 2.5.1锁存器 锁存器是种对脉冲电平比较敏感,可在特定输入脉冲作用下改变状态的存储电路,它可把信号暂存 [7]持续维持某种电平状态。锁存器最主要的作用是缓存,其他还具有解决高速控制器与外设的不同步问题、驱动的问题以及 I/O 口既能作为输出也能作为输入的问题。锁存器的输出状态不会随输入端状态变化而变化,只有使能信号输入时新状态才会被保存到输出,直到下一个使能信号的输入。 [6]74HC573是具有八进制3态非反转的高性能锁存器。它的八个锁存器都是透明的D 型锁存器,当使能端为高电平时,输出端的随数据输入端的变化而变;当使能为低电平时,输出信号将保持不变。输出控制不影响锁存器的工作状态,老数据可以保持,即使锁存器的输出被关闭, 其输入端仍可接收新的数据。基于锁存器的电路可以驱动大电容或低阻抗负载。74HC573真值表如表2.4所示,作为锁存器它具有如下特点: (1)三态总线驱动的输出信号 9 (2)数据的并行存取 (3)缓冲控制输入 (4)缓冲控制输出 表2.4 74HC573功能表 输入 输出 OE LE D Q H X X Z H L X X L H L L L H H H 在表2.4 的功能表中可以看出74HC573的输出端只需直接接入数码管即可显示出想要显示的数字。 2.5.2 数码管 数码管是数字电路中常用的显示器件,LED数码管将多个发光二极管封装在一起,每一只发光二极管的一根电极连接到外部引脚上,另一根则与其他二极管的一根电极连在一起组成公共端。根据公共端的正、负可将数码管分为共阳和共阴两种,共阳就是发光二极管的正极相连作为公共端的数码管,反之二极管的负极作为公共端的则为共阴的数码管。对于共阴极的数码管来说,当某笔段接的是低电平时,则该笔段发光。当该笔段为高电平时二极管不发光。同理,对于共阴极的数码管来说,接入高电平二极管发光,低电平时该笔段是不会发光的。 八段数码管是有a,g端对应的七只发光二极管和Dp端对应的一只数码管构成的,在共阳的八段数码管中输入的某一端位低电平时对应的该二极管点亮。通过对输入端的电平信号的变化来控制数码管的显示,其中Dp端所对应的是数码管上的小数点位。 2.5.3 显示电路 系统显示电路如图2.6所示。 RP1 1K 1ds1seg-72aaaa3ccccbbbb4gggg5efefefef6VCChphphphp7dddd8a9hpbcVCCU2U3dGND140120eP1.0VCCOEVCC239219fP1.0P0.0D0Q0338318gP1.2P0.1D1Q1437417P1.3P0.2D2Q2536516P1.4P0.3D3Q3635615P1.5P0.4D4Q4734714P1.6P0.5D5Q5com3833813P1.7P0.6D6Q6932912RESTP0.7D7Q7p1.510311011P3.0/RXTEAGNDLE1130com0P3.1/TXDALE122974HC573com1P3.2/INT0PSENGND1328com2P3.3/INT1P2.71427P3.4/T0P2.61526P3.5/T1P2.5VCC1625U4P3.6/WRP2.4GND1724120P3.7/RDP2.3OEVCC1823219XTAL2P2.2D0Q01922318XTAL1P2.1D1Q12021417GNDP2.0D2Q2516D3Q3STC89C52615D4Q4714D5Q5813D6Q6912D7Q7GNDp1.61011GNDLE74HC573GND 图2.6 显示电路 该电路通过单片机输出的数据经74HC573锁存器产生8位数据信号,从而控制数码管的显示。其中3位一体的数码管采用动态显示的控制方法。 [8]动态显示的原理为:首先显示数码管的第一位,单片机输出控制U4输出信号使得第一位数码管点亮,同时U3输出断码a,ph中输入相应的控制信息使得数码管显示第一位上的数据,但其它位的数据不会显示出来;其次是显示数码管的第二位,该过程使得第二位数码管点亮,同时段码a,g中输入相应的控制信息使得数码管显示第二位位上的数据,其他位的数据是不会显示出来的;最后显示第三位位时,先使第三位数码管点亮,同时段码a,g中输入相应的控制信息使得数码管显示第三位位上的数据,其他位的数据同样是不会显示出来的,同理再点亮第四位数码管如此循环。 单片机P1.5口控制锁存器U3的使能端,P1.6控制锁存器U4的使能端。当锁存器使能端由高电平变为低电平时,输出端数输出输入端的数据;当使能端由低电平变为高电平时,数据锁存。 2.6 温度设定 按键是向单片机发送指令的最直接和常用的功能原件,常用机械弹性开关的机械触电的通、断来发送指令。按键是否闭合反映在其输出的电平高低上,高电平表示按键处于断开状态,反之则为导通。在单片机控制系统中,为确保一次的按键动作只输出一次控制信号,需消除抖动对输出信号的影响。 对于控制系统而言,用于独立式按键的各个按钮之间是相互独立的,每一个按键都有一条输入线,线与线之间相互独立互不影响。独立式按键的实现简单,只需通过检测每条线上的电平状态即可判断出是哪个键按下。同时由于每一个按键都需以个输入端口,故这种按键较适用于按键较少的场合。 该饮水机系统的温度预设定的按键控制电路如图2.7所示。 U2140P1.0VCC239P1.0P0.0338P1.2P0.1437P1.3P0.2536P1.4P0.3635P1.5P0.4734P1.6P0.5833P1.7P0.6rst932RESTP0.71031P3.0/RXTEA1130P3.1/TXDALE1229P3.2/INT0PSEN1328P3.3/INT1P2.71427P3.4/T0P2.61526P3.5/T1P2.51625P3.6/WRP2.41724P3.7/RDP2.31823decXTAL2P2.21922addXTAL1P2.12021setGNDP2.0STC89C52 VCCVCCVCCVCC S1S2S3S4C4C5C6C7 10uF10uF10uF10uFrstsetadddec R11R12R13R14 10K10K10K10K GNDGNDGNDGND 图2.7 按键控制电路 其功能为: [9]S4:复位按钮,当按下该按钮超过两个机器周期时,系统复位。 S1:设温按钮,当第一次按下该按钮时进入设温状态的温度下限预设,第二次按下时进入温度预 11 设状。 S2:温度预设加按钮。在设温的状态下按下该按钮一次预设温度加1度。 S3:温度预设减按钮。在设温的状态下按下该按钮一次预设温度减1度。 上述功能的实现需要加入按键的机械去抖程序。即当单片机检测到按键按下后延迟一段时间,延迟过后仍然检测到得是按键按下的状态,则确定该按键按下,从而消除抖动影响。 2.7 报警电路 该系统的设有报警电路,如图2.8所示。 VCC D2 LED1LS1 R9Speaker1K R10Q5p1.1NPNRes21K GND 图 2.8 报警系统 [10]该电路使三极管来控制蜂鸣器和发光二极管的导通。三极管是一种电流控制电流的半导体,作 [11]为电流放大型器件,在本电路中不仅起到开关的作用而且对于蜂鸣器的驱动也起到极大的作用。 当饮水机的加热温度达到一百摄氏度时或者饮水机内水的液面高于、低于液面极限时,单片机在三极管的基极出产生高电平。基极的高电平使得三极管的基极和发射极的电压U高于开启电压,三极管be 导通蜂鸣器报警通时发光二极管变亮。直到U小于开启电压即单片机输出低电平时三极管重新断开,be 报警系统停止工作。 报警系统的作用是为了防止水位过低烧干、过高溢出以及水烧开沸腾的问题,确保饮水机使用过程的安全可靠。 2.8 小结 本章的硬件系统介绍描述了基于单片机的饮水机温度智能控制系统的组成部分及实现方法。在本次设计中以单片机是实现智能化的核心部分,温度传检测部分以温度传感器为基础实现温度的实时的检测,温度控制部分通过光电耦合器来实现弱点对强点的控制温并和单片机一起实现持续加热以及以PWM方式加温的切换,按键部分则是通过按钮实现人机的对话使系统能够在用户预期的要求下进行工作,显示部分则是用户了解饮水机否达到要求的通道,报警部分则为用户提供一个安全的生活环境。系统的各部份分工明确相互配合使得温度控制在可实现的基础上具有智能、精确、便捷的特色. 第三章 软件设计 3.1 显示部分 本设计的四位位共阴数码管采用动态显示的方式实现数字的显示,锁存器U3的输出控制数码管的段码,通过锁存器U4来控制数码管的位码。从而轮流的点亮每一位的数码管使其显示数字,由于每一位数码管的显示时间约1ms,通过视觉暂留的现象及发光二极管余辉效应作用,在极短时间内轮流点亮 [8]数码管的情况下,人所看到的结果就是一组稳定的数据,并且不会有闪烁的感觉。数码管的显示程序如下: void Display1(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0; DataPort0=0; LATCH1=1; LATCH1=0; DataPort0=WeiMa[i+FirstBit]; //段码数据 LATCH2=1; LATCH2=0; DataPort0=TempData1[i]; //位码数据 LATCH1=1; LATCH1=0; i++; if(i==Num) i=0; } 在锁存器U3为DataPort0中的数据,通过改变其数据来使得数码管显示相应的数字;锁存器U4为DataPort1中的数据,通过改变其数据来控制哪一位数码管点亮。程序以极短的时间间隔循环执行,以此来实现数码管的动态显示。上述程序中LATCH1和LATCH2为两个锁存器的使能端,Num表示的数码管的位数。通过中间变量i与Num的比较来控制数码管的显示与实际数码管位数相同。WeiMa[]与TempData1[]为预定义的数组,通过调用数组内部的数据来控制数码管段码与为,位码的值。 3.2 温度设定部分 该部分通过S1、S2、S3三个按键来实现温度上下限的设定,通过S1来选择温度设定和检测所得温度两种状态。S2按键实现在温度设定模式下的加操作,S2每按下一次加1;S3按键实现的是在温度设定模式下的减操作,S3每按下一次减1。在该部分的软件实现中引入了一个中间变量,程序通过这个中间变量的只来判断当前应执行的是实时显示还是温度设定程序,从而使得S2和S3只有在温度设定状态下才会起到作用,这样可以很好地避免掉由于误碰到加、减按键所产生的误操作的现象。其该部分实现如流程图3.1所示: 13 开始 S1按下, 是 Set加1 Set=0?否 执行温度设置是否 S2按下?否执行实时温度检测是S3按下,设定温度加1是设定温度减1 结束 图 3.1 温度设定流程图 在上述流程图中set作为一个状态标志变量。当set为0时系统执行的是温度实时显示的程序数码管显示的是饮水机的实时温度;当set为1时系统执行的是温度设定的程序,在该状态下可通过S2和S3来进行预设温度的调节,同时数码管显示的是温度设定的值。中间变量set的状态通过以下述指令来改变: if(KEY_SET) { while(KEY_SET); { if(set<1) set++; else set=0; } } 其中KEY_SET表示的是按键S1,当S1按下后则上述指令开始执行set状态改变。 3.3 温度检测部分 通过DS18B20来实现饮水机内水温的实时检测,同时将温度数据传到单片机内。该传感器完成温 [12]度的转换需经过初始化、ROM操作指令和存储器操作指令三个步骤。在程序内需要调用初始化子程序如图3.2、写数据子程序如图3.3和读数据子程序如图3.4来实现单片机对温度的采集。 开始 传感器初始化 否 等待480us? 是 DQ清零 DQ变低,否 是 清除FLAG标置FLAG标志志 结束 图3.2 DS18B20复位流程图 图3.2所示的流程图实现是温度传感器的初始化,18B20温度传感器具有较为严格的时序要求,每次向里读或写之前都需要先进行初始化,在初始化的过程中大于480us的等待时间是必须的。若在初始化的过程中小于该等待时间则会导致初始化失败。传感器通过以下的指令进行初始化: bit Init_DS18B20(void) { bit dat=0; DQ = 1; DelayUs2x(5); DQ = 0; DelayUs2x(200); DelayUs2x(200); DQ = 1; DelayUs2x(50); dat=DQ; DelayUs2x(25); return dat; } 其中DQ端口为传感器的数据传输口,通过该端口的高低电平即“0”与“1”的变化来实现数据的传送,在上述指令中通过调用延时子函数来满足传感器初始化的时序要求。在该过程中初始化程序会返回初始化的状态值,当接收到返回值为“1”时说明初始化成功继续执行下面的指令,否则表示初始化失败, [13]重新进行传感器初始化操作。 初始化的成功与否是传感器能否正常工作的基础,只有初始化成功才能正常的进行传感器的读写数据操作。因此在初始化的过程中必须严格遵守时序要求,必须进行相应的延时以达到传感器正常初始化的目的。 15 开始 传感器初始化 写ROM 发送转换指令 DQ清零 写一位数据否 DQ置1 8位写完, 是 结束 图 3.3 DS18B20写数据流程图 图3.3所示的流程图实现的是单片机向传感器内写数据,通过写入指令来实现对温度传感器的控制。将控制指令写入传感器使传感器进行温度转换,将检测到的热信号转换成可被单片机读取的的数据。单片机向传感器写数据指令如下: for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat>>=1; } DelayUs2x(25); 上述写指令是将数据口置低电平,延时约15us,然后发送一位,延时约45us再将数据口拉高。如此循环8次从而实现一位数据的写入。每位数据传送回都进行一定的延时等待是为了避免数据传送过程中因写入速度过快而对数据造成影响。 数据的写入是对传感器进行控制的基础,准确的控制信号才能使得传感器正常工作。在DS18B20中有44H、BEH、4EH、48H、B8H、B4H这六条指令代码分别对应的是温度转换、读暂存器、写暂存器、复制暂存器、重新调EERAM、读电源供电方式,通过相应代码的写入传感器做出相应的操作。在本设计中只需进行发送温度转换命令即44H即可,对于其他指令并没有涉及。 在数据的写操作中数据是按照由地位到高按位进行传输,因此上述程序中以左移8位的方式进行一个字节指令代码的接收。在接收中数据端口DQ的低电平表示数据“0”,高电平表示数据“1”,通过这种方式可以很好地进行八位二进制字节数据的传输。 开始 传感器初始化 写ROM 发送转换指令 DQ置1 DQ清零 否 释放DQ 读一位数据 8位读完, 是 结束 图 3.4 DS18B20读数据流程图 图3.5所示的流程图实现的是单片机对温度传感器中温度数据的读取,通数据写入想似首先将数据线拉低,延时一定时间,然后拉高,再延时一定时间后进行数据的读取。数据的读取也采用的是循环的方式进行,程序如下所示: for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ)dat|=0x80; DelayUs2x(25); } 当然数据的读取还需进一步的处理才能成为可被数码管显示出来的正确数据。 3.4 温度控制部分 温度控制部分的实现是基于单片机对预设温度实际温度的比较而做出的判断,当实际温度低于预设的温度时单片机输出控制信号控制饮水机进行加热,当实际的水温高于预设的温度是单片机发出停止加热的信号,饮水机停止加温。在加热的过程中,单片机会根据实际温度与预设温度的差值来自动选择加热模式,当实际温度与预计温度差值大于5是单片机发出控制信号持续加温,当温度差值在5?之内时单片机输出PWM波,以PWM波的形式对水进行加热。 [14]在PWM温度控制过程中,其占空比是自动调节的。随着实际温度越来越接近设定温度,PWM的占空比也越来越小。这样做的目的是控制饮水机加热的精度,由于饮水机的加热丝功率较大,即使在断电后仍存在较大的余温啊,这使得在加热时若纯粹的通断电会使得加热丝断电后水温仍会有较大的上升能力。这样会使得水温超出预设温度,饮水机的控制精度会下降。而采用以自动改变占空比的方式来 17 进行温度控制,在接近预设温度时输出较长时间的低电平,这样可以用加热丝的余温来给加热,从而避 免了达到预设温度断电所带来的水温实际温度会高于预设温度较大幅度的情况,而且这样也可以起到节 约电能充分利用加热丝余量的作用。该系统在PWM波控制系的程序如下所示: timer0_tick++; if(timer0_tick++==100) { timer0_tick=0; } m=TempH-usertemp; switch(m) { case 1:zkb=20;break; case 2:zkb=40;break; case 3:zkb=60;break; case 4:zkb=80;break; case 5:zkb=99;break; default : break; } if (timer0_tick<=zkb) { PWM=1; DelayMs(10); } else PWM=0; 其中zkb表示的是占空比,timer0_tick比较变量,PWM表示的是单片机温度控制信号的输出端,m表 示的是实际温度与预设温度的差值。通过程序中m的不同来改变单片机输出的占空比,从而使得饮水 机对水温的控制更加精确。 3.5报警部分 报警部分以LED灯和蜂鸣器来实现报警系统,当水位低于或高于上下限、温度达到100?时,该 [17]系统工作发出报警。如图3.5所示流程图实现的是报警功能,当达到报警的信号输入单片机是,单片 机发出控制信号时发光二极管点亮同时蜂鸣器也会发出响声。 开始 否 高于上否限, 低于下否限, 到达100?,是是 是 报警 结束 图 3.5 报警流程图 报警程序如下所示: if((S2==0)&&(s1==1)&&(TempH<100))LED_Red=0; else LED_Red=1; if(TempH<100)PWM=0; 其中S1、S2分别表示液位上限、下限,LED_Red表示报警信号输出端,TempH表示检测到的水的实际温度。当实际水温未达到100?时发出报警仍可进行加温,这样是为了增加使用的灵活性,避免因用户需要在报警的情况下加温却无法使用饮水机加温而带来的不变,但当水温达到100?时饮水机会自动停止加热时为了避免因沸腾时间过长而带来的安全隐患。 3.6小结 本章介绍了设计基于单片机的各部分软件实现,包括温度传感器的温度读取、温度的设定、温度的控制以及报警部份。在软件的设计上面尽量去弥补硬件上的不足,简化硬件的组成从而精简系统避免硬件上的较大偏差。程序使用C语言进行编写不仅简洁方便,而且可移植性较强,对去扩展功能的添加也较为方便。另外通过程序来实现某些功能具有灵活性强的特点,是的本设计的引用更加灵活与而人性。软件的应用为系统智能化的实现提供了条件,避免了纯元器件控制的机械性与不可控等问题。 19 第四章 结束语 本次基于单片机饮水机的温度控制系统的设计经过资料的收集、系统的设计、硬件设计、软件设计和整体的调试等过程覆盖了平时对单片机的应用与开发,器件原理参数及选型,硬件的实现、调试等知识的学习。这次系统的设计是一次对于理论知识与实际应用相结合的一次具体的实践。 本次设计尽量遵循使硬件电路简单,同时充分利用软件的编程来弥补关于元器件精度不足等缺点。实现以单片机作为为核心原件的温度控制系统在饮水机中的应用。整个设计实现了多项功能,其中包括基于DS18B20的温度采集部分、基于数码管的数据显示部分、基于按键部分的温度设定部分、基于MOC3041和可控硅的温度控制部分以及系统的报警部分。其智能化的控制方式基本实现最初的任务的要求,并且兼具电路简单、操作简便的优点,同时还还可在此基础上实现多种功能的扩展。但是鉴于存在时间及个人能力等限制的问题存在,此次设计的系统仍然还存在很多需要进一步该进和扩展的地方,例如采集数据不够精确、控制的方式还可进一步完善、系统更加智能便捷等有待发展的地方。 经过对于这次系统的设计,使我进一步掌握了有关单片机的应用系统的软、硬件的设计的知识。并且更加熟悉了单片机和各种元器件的功能及应用,特别是平时所学的关于51系列单片机的应用。基于C语言的单片机的编程,是将平时的C语言与单片机的一次融合。本次设计是我对系统的设计有了一个初步的了解,为以后的个人发展打下更加扎实的基础。 参考文献 [1]张友德、赵志英. 单片机原理应用与实验[M].北京:上海复旦大学出版社,1992. [2]燕君. 集散式多点数字温度系统应用研究[D].大连:大连理工大学硕士学位,2006. [3]雷琪. 贝叶斯网络在机床热误差动态补偿建模中的应用[D].武汉:华中科技大学硕士学位论 文,2012. [4]顾灶德. 电动汽车锂电池管理系统[D].镇江:江苏大学硕士学位论文,2010. [5]王兆安、黄俊. 电力电子技术[M].北京:机械工业出版社,2010. [6]阮毅 陈伯时. 电力拖动自动控制系统——运动控制[M].上海:机械工业出版社,2010. [7]毛玉良. 微机系统原理及应用[M]. 南京:东南大学出版社,2006. [8]彭伟编. 单片机C语言程序设计实训100例[M]. 北京:电子工业出版社,2009. [9]谭浩强. C语言程序设计[M].北京.清华大学出版社,2000. [10]刘京南. 电子电路基础[M]. 北京:电子工业出版社,2008 [11] 华成英. 模拟电子技术基本教程[M].北京:清华大学出版社,2006 [12]陈杰 黄鸿. 传感器与检测技术[M].北京:高等教育出版社,2002. [13]徐建军. MCS-51系列单片机应用及接口[M].北京:人民邮电出版社,2001. [14]陈国呈. PWM变频调速及软开关电力变换技术[M].北京:机械工业出版社,2001. [15]张国范 顾树生 王明顺. 计算机控制技术[M].北京:冶金工业出版社,2001. [16]庄丽娟. 电子技术基础[M].北京:机械工业出版社,2001. [17]倪继烈 刘新民. 微机原理与接口技术[M].成都:电子科技大学出版社,2004. 21 附录一 主程序 1、 main.c /**********主程序**********/ #include #include "18b20.h" #include "delay.h" #define DataPort0 P0 sbit LED_Red=P1^1; //报警 sbit PWM=P1^0; //MOC3041 sbit LATCH1=P1^5; sbit LATCH2=P1^6; sbit S1=P1^3; //液位上限 sbit S2=P1^4; //液位下限 sbit KEY_ADD=P3^2;//加按键 sbit KEY_DEC=P3^3;//减按键 sbit KEY_SET=P3^5;//设置按键 bit ReadTempFlag1; unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管断码 unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管位码 unsigned char TempData1[8]; unsigned char TempData2[8]; unsigned char zkb=1,timer0_tick,set=0; void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); void Display1(unsigned char FirstBit,unsigned char Num); void Display2(unsigned char FirstBit,unsigned char Num); void Init_Timer0(void); void main (void) { unsigned int TempH,TempL,temp,m; unsigned char usertemp=20; KEY_ADD=1; KEY_DEC=1; KEY_SET=1; P1=0x18; Init_Timer0(); while (1) { if(ReadTempFlag1==1) { ReadTempFlag1=0; if(set==0) { temp=ReadTemperature(); TempH=temp>>4; TempL=temp&0x0F; TempL=TempL*6/10; } else {TempH=usertemp; TempL=0; } if(TempH/10==0) TempData1[0]=0; else { TempData1[0]=DuanMa[TempH/10]; TempData1[1]=DuanMa[TempH%10]|0x80; TempData1[2]=DuanMa[TempL]; if(set==0)TempData1[3]=0x39; else TempData1[3]=0x76; } if(KEY_SET) //实际温度与设温切换 { DelayMs(10); if(KEY_SET) { while(KEY_SET); { if(set<1) set++; else set=0; } } } if((KEY_ADD)&&(set==1)) //温度+1 { DelayMs(10); if(KEY_ADD) { while(KEY_ADD); { if(usertemp<50) usertemp++; } } } if((KEY_DEC)&&(set==1)) //温度-1 { DelayMs(10); if(KEY_DEC) 23 { while(KEY_DEC); { if(usertemp>10) usertemp--; } } } if((S2==1)&&(s1==0)&&(TempH>=100))LED_Red=1; //报警 else LED_Red=0; if(TempH=usertemp) PWM=0; //停止加温 else { //PWM控制加温 LED_Red=0; timer0_tick++; if(timer0_tick++==100) { timer0_tick=0; } m=TempH-usertemp; switch(m) { case 1:zkb=20;break; case 2:zkb=40;break; case 3:zkb=60;break; case 4:zkb=80;break; case 5:zkb=99;break; default : break; } if (timer0_tick<=zkb) { PWM=1; DelayMs(10); } else PWM=0; } } } } void Display1(unsigned char FirstBit,unsigned char Num) //显示子程序 { static unsigned char i=0; DataPort0=0; LATCH1=1; LATCH1=0; DataPort0=WeiMa[i+FirstBit]; LATCH2=1; LATCH2=0; DataPort0=TempData1[i]; LATCH1=1; LATCH1=0; i++; if(i==Num) i=0; } void Init_Timer0(void) //定时器T0初始化 { TMOD |= 0x01; EA=1; ET0=1; TR0=1; } void Timer0_isr(void) interrupt 1 //定时中断子程序 { static unsigned int num; TH0=(65536-2000)/256; TL0=(65536-2000)%256; Display1(0,4); num++; if(num==300) { num=0; ReadTempFlag1=1; } } 2、18b20.c /**********18b20程序**********/ #include"delay.h" #include"18b20.h" bit Init_DS18B20(void) //18b20初始化 { bit dat=0; DQ = 1; DelayUs2x(5); DQ = 0; DelayUs2x(200); DelayUs2x(200); 25 DQ = 1; DelayUs2x(50); dat=DQ; DelayUs2x(25); return dat; } unsigned char ReadOneChar(void) //读一字节 { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; dat>>=1; DQ = 1; if(DQ) dat|=0x80; DelayUs2x(25); } return(dat); } void WriteOneChar(unsigned char dat) //写一字节 { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; DelayUs2x(25); DQ = 1; dat>>=1; } DelayUs2x(25); } unsigned int ReadTemperature(void) //温度数据读取 { unsigned char a=0; unsigned int b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); DelayMs(10); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); b<<=8; t=a+b; return(t); } 3、18B20.H /**********18b20头文件**********/ #ifndef __DS18B20_H__ #define __DS18B20_H__ #include #include #define uchar unsigned char #define uint unsigned int sbit DQ=P1^2; //18b20数据口 unsigned int ReadTemperature(void); bit Init_DS18B20(void); unsigned char ReadOneChar(void); void WriteOneChar(unsigned char dat); #endif 4、delay.c /**********延时程序**********/ #include "delay.h" void DelayUs2x(unsigned char t) { while(--t); } void DelayMs(unsigned char t) { while(t--) { DelayUs2x(245); DelayUs2x(245); } } 5、DELAY.H /**********延时程序头文件**********/ #ifndef __DELAY_H__ #define __DELAY_H__ void DelayUs2x(unsigned char t); void DelayMs(unsigned char t); #endif 27 D1 LED1 R21K 附录二 主电路图 R3Q1p1.1VCCNPNRes21K GNDU3R1p1.0120OEVCCp1.1219U14.7K13D0Q0GNDVCCS13182D1Q1DQBS18B20417D2Q2516D3Q3S2615D4Q4714D5Q5813D6Q6912D7Q71011VCCGNDLEVCC+12Vadd74HC573GNDdecGNDR5setC11KU5U4120OEVCCR71230pF219p1.010D0Q0Y1318Q2D1Q1MOC304112MHz417IGBTC7C3D2Q2516R80.27uFD3Q36154.7KD4Q430pF714D5Q5D2813D6Q6912D7Q7GND1011GNDLE74HC573S3C2U2GND140VCCVCCP1.0VCC10uF239P1.0P0.0338P1.2P0.1437P1.3P0.2536S4S5S6P1.4P0.3635R4P1.5P0.4C4C5C6734P1.6P0.583310K~220VP1.7P0.610uF10uF10uF932RESTP0.71031setadddecP3.0/RXTEA1130P3.1/TXDALE1229P3.2/INT0PSEN1328R9R10R11GNDVCCP3.3/INT1P2.71427P3.4/T0P2.6152610K10K10KP3.5/T1P2.51625P3.6/WRP2.41724P3.7/RDP2.31823XTAL2P2.21922XTAL1P2.12021GNDGNDGNDGNDP2.0LS1RP11kSTC89C52123aSpeaker4567VCC89 ds1aefadgbccdbeaS6S5S4S3S2eff:减按键:加按键:设置按键:复位按键:液位下限:液位上限ggdhpcbVCCefGNDdg cbcom0efcom1p1.5dgacom2p1.6com3cbhphphphpp1.5 GND VCCGND GNDp1.6 GND S1
/
本文档为【基于单片机饮水机温度控制系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索