毕业论文电热水器水温水位控制系统的研究_第1页
毕业论文电热水器水温水位控制系统的研究_第2页
毕业论文电热水器水温水位控制系统的研究_第3页
毕业论文电热水器水温水位控制系统的研究_第4页
毕业论文电热水器水温水位控制系统的研究_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

PAGEANYANGINSTITUTEOFTECHNOLOGY本科毕业论文电热水器水温水位控制系统的研究ResearchonControlSystemofElectricWaterHeaterTemperatureandWaterLevel院(部)名称:电子信息与电气工程专业班级:自动化(专升本)2011级学生姓名:学号:指导教师姓名:指导教师职称:高级实验师讲师2013年5月PAGEPAGEII目录摘要: IAbstract II引言 1第一章系统方案设计 3水温水位控制系统的设计任务和要求 3系统总体方案的选择 3温度传感器的选择 4水位传感器的选择 5第二章元器件介绍及硬件电路设计 6元器件介绍 6温度传感器 6单片机AT89C52 8LCD1602液晶屏 9超声波测距仪 10键盘 11硬件电路设计 11温度采集电路 11温度控制电路 12LCD1602液晶显示电路 12水位监测电路 13键盘电路 14水位控制电路 14语音播报电路 15第三章系统软件设计 17程序结构说明 17程序流程图 17主程序 17LCD1602显示程序流程图 19温度采集处理程序 20超声波测距程序 20键盘程序 21操作指引 22第四章实验测试 24LCD1602显示“ABCD1234” 24键盘及数字显示结合 24整机调试 24结论 26致谢 27参考文献 28附录A 29附录B 30PAGEPAGE51电热水器水温水位控制系统的研究摘要:本设计介绍了一种以AT89C52单片机为控制核心、以一种新型的可编程温度传感器(DS18B20)为温度采集器件来实现水温水位控制系统。文章着重介绍核心器件的选择、各部分电路及软件的设计。AT89C52单片机完善的内部结构、优良的性能和强大的中断处理能力,决定了该控制系统的特点:电路结构简单、程序简短、系统可靠性高等。水位以AT89C52单片机检测缺水溢流,实现自动控制,温度检测采用新型的可编程温度传感器(DS18B20),不需要复杂的信号调理电路和A/D转换电路,能直接与单片机完成数据的采集和处理,采用LCD1602液晶实时显示温度值,并由语音模块实时播报。实现方便、简单。本系统根据不同需要可用于各种场合。关键词:单片机;DS18B20;LCD1602;语音播报;控制ResearchonControlSystemofElectricWaterHeaterTemperatureandWaterLevelAbstract:ThisdesignintroducesaAT89C52MCUasthecontrolcore,anewprogrammabletemperaturesensor(DS18B20)forthetemperatureacquisitiondevicetoachievethewatertemperaturecontrolsystem.Thedesignofthisarticlemainlyintroducesthecoredeviceofchoice,eachpartofthecircuitandsoftware.AT89C52microcontrollerperfectinternalstructure,excellentperformanceandpowerfulinterruptprocessingability,determinesthecharacteristicsofthecontrolsystem:thecircuitstructureissimple,quick,highreliability.ThewaterlevelbasedonAT89C52singlechipmicrocomputerdetectingwateroverflow,toachieveautomaticcontrol,programmabletemperaturesensorwithtemperaturedetection(DS18B20),donotneedcomplexsignalconditioningcircuitandA/Dconversioncircuit,canbedirectlywiththeMCUtocompletethedatacollectionandprocessing,usingLCD1602liquidcrystaldisplaythetemperaturevalue,andthevoicemodulereal-timebroadcast.Easyimplementation,simple.Thissystemcanbeusedforavarietyofoccasionsaccordingtodifferentneeds.Keywords:microcontroller;DS18B20;LCD1602;voicebroadcast;control;水温水位控制系统PAGE引言自70年代以来,由于工业过程控制的需要,特别是在电子技术的迅猛发展,以及自动控制理论和设计方法的推动下,国外温度控制系统发展迅速,并在智能化自适应参数自整定等方面取得了优异成果。在这方面日本、美国、德国、瑞典等国技术处于领先地位,并且都生产出了一批商品化性能优异的温度控制器及仪器仪表,并在各行业广泛应用。目前,国外温度控制系统及仪器仪表正朝着高精度、智能化、小型化等方面快速发展。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等技术先进的国家相比,仍然有着较大的差距。目前,我国在这方面总体技术水平处于20世纪80年代中后期水平。成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后复杂时变温度系统控制,而且应用于较高控制场合的智能化、自适应控制仪表国内的技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。现在,我国在温度等控制仪表业与国外还有着一定的差距。温度、压力,流量和液位是四种最常见的过程变量,其中温度是一个非常重要的过程变量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形,结晶以及空气流动等物理和化学过程。温度控制在工业领域应用非常广泛,由于其具有工况复杂、参数多变、运行惯性大、控制滞后等特点,它对控制调节器要求较高。温度控制不好就可能引起生产安全,产品质量和产量等一系列问题。尽管温度控制很重要,但是要控制好温度常常会遇到意想不到的困难。随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大、本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。本文主要介绍以单片机控制水温、水位的系统设计过程,其中涉及系统结构设计、元器件的选取、程序的调试和系统参数的整定。在系统构建时选取了AT89C52芯片作为该控制系统的核心,温度信号由新型的可编程温度传感器(DS18B20)提供。通过软件实现对水温的控制,使用继电器作执行部件对水位的自动控制。系统控制对象为水箱。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变,具有较好的快速性与较小的超调。该系统为一实验系统,要求系统有控制能力,实现对主要可变参数的实时监控。使用软件编程既减少了系统设计的工作量,又提高了系统开发的速度,使用软件还可以提高所设计系统的稳定性。第一章系统方案设计水温水位控制系统的设计任务和要求该系统为一实验系统,系统设计任务:设计一个水温水位自动控制系统,控制对象为水杯。水位实现自动加水和自动溢出控制,水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。利用AT89C52单片机实现对水温水位的智能控制,使水温水位在设定范围内控制温度和水位恒定。利用仪器读出水温,并在此基础上将参数调节到我们通过键盘输入的范围之内,而且能够将温度显示在LCD1602液晶上并由语音模块实时播报。系统设计具体要求:(1)由键盘设定温度,设定范围为0一99℃,最小区分度为l℃(2)温度低于设定温度值时加热,温度高于设定值时降温(3)用LCD1602液晶实时显示水的实际温度。(4)实现容器中水位低于设定下限时自动加水,,防止烧干;高于设定上限时自动抽水,从而使水位恒定。系统总体方案的选择(1)方案一(如图1.1)此方案是传统的二位式模拟控制方案,其基本思想与方案采用上下限比较电路,控制精度比较高。这种方法还是模拟控制方法,因此也不能实现复杂的控制算法使控制温度做的更精确。而且不能用数码管显示和键盘设定。信号采集信号采集信号放大上限比较下限比较信号处理固态继电器负载温度预置图1.1模拟电路(2)方案二(如图1.2)此方案采用AT89C52单片机系统来实现。单片机软件编程灵活,自由度大,可用软件编程实现各种控制算法和逻辑控制。单片机系统可用数码管显示水温的实际值,能用键盘输入设定值等功能。本方案选用了AT89C52芯片,不需要外扩展存储器,可使系统整体结构更为简单。方案论证方案一是传统的模拟控制方式,而模拟控制系统难以实现复杂控制规律,控制方案的修改也较麻烦。而方案二是采用以AT89C52为控制核心的单片机控制系统,尤其对温度控制,可以达到模拟控制所达不到的控制效果,并且可以实现显示、键盘设定,报警等功能。大大提高系统的智能化,也使得系统所测结果的精度大大提高了。所以本次设计采用方案二。图1.2控制系统框图温度传感器的选择本设计方案的选择主要是感温元件的选择,经查阅资料,IC式感温器在市场上应用比较广泛的有以下几种:1.AD590:电流输出型的测温组件,温度每升高1摄氏度K(凯式温度),电流增加1μA,温度测量范围在一55℃~1502.DS18B20:除了测量温度外,它还可以把温度值以数字的方式(9Bit)送出,温度送出的精度为℃,温度测量范围在-55℃—1253.SMARTEC感温组件:这是一只3个管脚感温IC,温度测量范围在-45℃~13℃,误差可以保持在本设计选用DS18B20感温IC,这是因其性能参数符合设计要求,接口简单,内部集成了A/D转换,测温更简便,精度较高,反应速度快,且经过市场考察,该芯片易购买,使用方便。1.4水位传感器的选择本设计过程中,主要对一下三种传感器进行了比较选择。方案一:浮子式水位计浮子式水位计利用液体浮力测液位的原理,靠浮力随水面升降的位移反映水位变化。漂浮通过绳索经滑轮与编码器相连,编码器的数字输出即为水位高度。但是由于技术比较落后,不予采用。方案二:压力传感器目前的液位压力传感器大部分是投入式静压液位变送器,而投入式静压液位传感器只有参考大气压才能进行准确测量,然而连接电缆中的通气会受到环境的影响,造成气管内壁冷凝,结露。露水滴到电子器件和传感器上,会影响精度或者输出漂移。同时,结露过快,变送器的使用寿命也会大大缩短。此压力传感器容易受到环境的影响而造成测量不准确,并且安装不方便。方案三:超声波传感器超声波传感器是工业领域内第一款在产品上带有按键设定功能和自诊断功能的小型传感器。它虽然体积小,但是具有其他大型传感器所具有的功能,安装使用方面而且不受被测物体的颜色影响,有许多特设功能,如:具有自诊断LED显示和按键设定功能,温度补偿功能,可选择模拟量或开关量输出等;气供电电压为10~30V,测量范围为30mm~300mm,输出电压0V~10V,输出电流为4mA~20mA,最小负载阻抗欧,精度可达到,外形分为直线型和直角形。感应口径为18mm。此传感器只需要提供一个10us以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。本设计选用超声波传感器监测水位,因为它具有接线操作简单、独立性适应性强、精确度高、反应灵敏等特点。第二章元器件介绍及硬件电路设计元器件介绍温度传感器温度传感器选用可编程温度传感器(DS18B20)芯片。DS18B20是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。它在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户使用带来了更多方便。(1)DS18B20产品的特点(a)单线接口:仅需一根线与单片机相连;(b)由用总线提供电源,也可用数据线供电,电压范围:3.0~5.5V;(c)测温范围为-55℃~+125℃,在-10~85℃时,精度为℃(d)可编程的分辨率为9~12位,对应的分辨率为0.5~0.0625℃(e)用户可编程的温度报警设置;(f)12位分辨率时最多在750ms内把温度值转换为数字量。(2)DS18B20的引脚介绍DS18B20可编程温度传感器有3个管脚。GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3.O~5.5V。本文使用外部电源供电。(3)DS18B20的内部结构DS18B20内部功能模块主要由4部分组成:64位光刻R0M、温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器。R0M中的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码,每个DSI8B20的64位序列号均不相同。高低温报警触发器TH和TL,配置寄存器均由一个字节的E2PROM组成,使用一个存储器功能命令可对TH,TL或配置寄存器写入。配置寄存器中R1,R0决定温度转换的精度位数:R1R0=’00’,9位精度,最大转换时间为93.75ms;R1R0=‘01’,10位精度,最大转换时间为187.5ms;R1R0=‘10’,11位精度,最大转换时间为375ms;R1R0=’11’,12位精度,最大转换时间为750ms;未编程时默认为12位精度。(4)DS18B20的使用方法由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89C52单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。(5)DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。其工作原理如图2.1所示。对于DS18B20的读时序是从主机把单总线拉低之后,在15us之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20要完成一个读时序过程,至少需要60us才完成。图2.1DS18B20的读时序图(6)DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。工作原理图如图2.2所示。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。图2.2DS18B20的写时序图单片机AT89C52本设计使用的是AT89C52的单片机。它是一个低电压,高性能CMOS

8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。内置功能强大的微型计算机的AT89C52提供了高性价比的解决方案。单片机晶振电路设计:引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与回馈组件的片外石英晶体或陶瓷谐振器构成一个自激振荡器。外接晶体以及电容C5和C6构成并联谐振电路,接在放大器的反馈回路中。对外接电容值虽然没有严格的要求,但是电容的大小多少会影响振荡器频率的高低、荡器的稳定性、震的快速性和温度稳定性。本设计c5和c6采用的电容值约为30PF,晶振电路如图所示:图2.3晶振电路图单片机复位电路的设计:复位电路的实现可以有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。本设计使用了第一种方法,其电路图如图2.4所示。图2.4复位电路LCD1602液晶屏本设计中由于要对温度进行显示,所以选择液晶显示屏1602模块作为输出。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。管脚功能如表2.1所示:表2.1LCD1602引脚功能编号符号引脚说明1VSS电源地2VDD电源正极3VL液晶显示偏压信号4RS数据/命令选择端5R/W读/写选择端6E使能信号8-14D0-D7DataI/O15BLA背光源正极16BLK背光源负极LCD1602主要管脚介绍:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。R/W为读写信号线端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址;当RS为高电平R/W为低电平时可以写入数据。E为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。2.1.4超声波测距仪此模块目标是利用HC-SR04超声波测距模块测量距离。通过超声波发射器向某一方向发射超声波,在发射时刻同时开始计时,超声波在空气中传播,途中遇到障碍物就立即返回来,超声波接收器接收到反射波就立即停止计时。超声波在空气中的传播速度为c(本次设计默认值为340m/s),从超声波信号发送到接收器接收到返回信号所用的时间为t,由此可以计算出超声波发射点距障碍物的距离s。计算公式:s=(c×t)/2其中,s为被测物与测距仪的距离,c为声速,t为声波往返所用的时间。要设计出超声波测距仪,首先超声波传感器发射部分发射超声波信号的同时要让定时器0开始计时;再要让超声波传感器接受部分接受超声波信号的同时让定时器停止计时;最后要使计时的时间转换为测量的距离,并且要达到一定的精度。这个设计中,在发射超声波信号的同时打开了总中断,用定时器0计时,接收超声波信号的同时,用外部中断0关闭总中断,这时定时器0中断停止计时,定时器0中断定时时间定为294us(超声波传播经过所需要的时间)来计数。这样可以把测量的时间转化为测量的距离值,又可以使测量达到所需要的精度。超声波测距仪的软件设计主要由主程序、定时子程序、计算子程序及显示子程序组成。设计中单片机内的程序开了定时器0中断和外部中断0,使定时器工作在方式1状态,使THO=00H,TL0=00H,每过294us(超声波传播所需要的时间)中断一次,到到对测量距离计数,外部中断0接受到超声波回波时。外部中断0产生中断,使定时器0停止计时。电气参数如表2.2所示。表2.2HC-SR04超声波模块的电气参数电气参数HC-SR04超声波模块工作电压DC5V工作电流15mA工作频率40Hz最远射程4m最近射程2cm测量角度15度输入触发信号10μS的TTL脉冲输出回想信号输出TTL电平信号,与射程成正比规格尺寸45*20*15mm2.1.5键盘键盘选用轻触开关,只用三个键来输入,它们的功能分别为“加一”,“减一”和“设定”三个功能按键,详细电路和程序见后面章节。硬件电路设计温度采集电路DS18B20为单总线器件,接口电路简单,如下图2.5所示。图2.5温度采集电路2.2.2温度控制电路本设计由于考虑到了系统工作时的安全性,故使用功率较小的电阻来实现水温的加热。并用IRF640来驱动电路工作,其mos管开关电路中要用到MOS场效应管来代替开关,场效应管有三个极:源极S、漏极D和控制极G.当在给源极和漏极之间加上正确极性和大小的电压(因为管型而异)后,再给G极和源极之间加上控制电压,就会有相应大小的电流从源极流向漏极,如果信号电压够大,这个电路就能瞬间饱和而成为一个开关了。GS间加电压,DS间就可以导通,从而电阻丝的工作电路导通。来实现加热的效果。其接线如图2.6所示。图2.6温度控制电路2.2.3LCD1602液晶显示电路将L1602的RS端和P2.5,R/W端和P2.6,E端和P2.7相连,当RS=0时,对LCD1602写入指令;当RS=1时,对LCD1602写入数据。当R/W端接高电平时芯片处于读数据状态,反之处于写数据状态,E端为使能信号端。当R/W为高电平,E端也为高电平,RS为低电平时,液晶显示屏显示需要显示的示数。图2.7为1602液晶显示屏与单片机的硬件连接图。图2.7LCD1602显示电路2.2.4水位监测电路HC--SR04超声波测距模块可提供2CM--44000CM的非接触式距离感测功能,测距精度可达3MM;模块包括超声波发射器、接收器与控制电路。基本工作原理:(1)采用IO口TRIG触发测距,给至少10US的高电平信号;(2)模块自动发送8个40KHz的方波,自动检测是否有信号返回;(3)有信号返回,通过IO口ECH0输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。由通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:距离=高电平时间*声速(340m/s)/2,其硬件连接图如图2.8所示。图2.8水位监测电路2.2.5键盘电路本键盘电路采用独立键设计,三个键接到单片机的三个中断源上。当按下时为低电平。其中S2为“确认”键、S3为“减一”键、S4为“加一”键。接线图如图2.9所示。图2.9键盘电路2.2.6水位控制电路本设计的水位控制模块采用由L9110芯片驱动的齿轮泵来实现抽水,注水动作。L9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。该芯片有两个较大的电流驱动能力,每通道能通过800mA的持续电流,峰值电流能力可达;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。管脚定义如表2.3所示。表2.3序号符号功能1OAA路输出管脚2VCC电源电压3VCC电源电压4OBB路输出管脚5GND地线6IAA路输入管脚7IBB路输入管脚8GND地线芯片L9110的IB引脚连接单片机的P3.1引脚。IA接P3.2。并通过判断IA,IB两处极性来控制电机的转动,当IA,IB极性相同的时候电动机不转,反之则反转;若A路电平高于B,则电机正转,反之则反转。从而实现抽水、注水的过程,达到自动控制液位的目的。其原理图如图所示。图水位控制电路2.2.7语音播报电路NY3P035是一款具有PWM输出的OTP语音标准芯片。共有3个IO口,外围最低仅需要一个104电容就可以稳定的工作。性能优点:工作电压2.2-5.5V,适用范围很宽。输出方式:PWM有8PIN,DIP8或者SOP8封装片,或者裸片可以选择,可以烧录裸片出货的OTP语音芯片,喇叭是8欧-16欧范围内的任何喇叭。此芯片是特定的固定标准模块,可以通过单片机最少一个IO口控制多达32段声音任意调用和组合的语音标准芯片。通常最常用的控制方式是3个IO,芯片基本脚位。其电路图如图所示。图语音播报电路第三章系统软件设计程序结构说明任何一个系统的软件设计都离不开硬件电路的连接,所以本次硬件设计的高度模块化决定了软件设计的模块化。其程序结构应包括:主控程序模块、键盘扫描及处理子程序、数据采集处理子程序、显示等子程序几个部分。主控程序模块在整个结构中充当管理者,管理所有子程序的调用。它主要负责初始化各个I/O口,等待键盘事件的发生,并做出相应的处理。并在适当的时候调用数据采集程序,并将采集到的数据与键盘设定值比较。再通过计算后用于控制继电器的通断,从而控制电机等,来达到水温水位的调整。程序流程图主程序程序按照模块化设计,所有功能都可通过调用子程序完成,主程序较简单,流程图如图3.1所示。图3.1主程序流程LCD1602显示程序流程图显示程序流程图如图3.2。流程图分析:首先对1602显示屏进行初始化(初始化大约持续10ms左右),然后检查忙信号,若BF=0,则获得显示RAM的地址,写入相应的数据显示;若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。图3.2显示流程图温度采集处理程序读取温度DS18B20模块的流程图如图3.3所示,DS18B20温度传感器的内部存储器包括一个高速暂存RAM(便笺式的内部存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存器。便笺存储器包含了9个连续字节(0~8),前两个字节是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4是配置寄存器,用于确定输出分辨率9到12位。第5、6、7个字节是预留寄存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC码,可用来保证通信正确。

图3.3温度采集处理流程图超声波测距程序具体工作原理说明:超声波发射部分主要受单片机控制发射超声波,超声波接收部分接收已发射的超声波。单片机AT89C52中的程序可控制在超声波传感器发射超声波的同时单片机内的定时器开始计时,在超声波传感器接收到返回的超声波时,停止单片机内的定时器计时,并且把记录的超声波传播时间转换为测距仪测量的电路与前方障碍物的距离值,最后通过LCD1602显示出来。其程序框图如图所示图超声波测距程序3.2.5键盘程序由于机械触点有弹性,在按下或弹起按键时会出现抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间,如图所示。为了保证按键识别的准确性,必须消除抖动。消抖处理有硬件和软件两种方法:硬件消抖是利用加去抖动电路滤避免产生抖动信号;软件消抖是利用数字滤波技术来消除抖动。我们采用软件的方法,利用主程序循环扫描,主程序每循环一次扫描到的键值相同时,则说明是某键按下。图3.5键按下的过程其流程图如图3.6所示。图3.6键盘处理流程图操作指引按键功能:(1)、Enter——P1.7(S2)(2)、Down——P1.6(S3)(3)、Up——P1.5(S4)显示温度:(1)、没有DS18B20存在时,LCD1602屏幕中间显示DS18B20ERROR(3)、有DS18B20存在时,LCD1602第一行显示当前温度now(4)、LCD1602第二行显示设定温度settemp:xx,初始值为20。设定温度:(1)、按下Enter,LCD1602第二行显示settemp:xx,xx同时闪烁。(2)、这时可以按Up和Down来调节设定温度。(3)、调节好后,再按Enter退出。这时数字不闪烁,执行相应指令动作。第四章实验测试4.1LCD1602显示“ABCD1234”编一段小程序,在液晶屏上实现显示“ABCD1234”。源程序略。键盘及数字显示结合编一段小程序,实现键盘及数字显示结合。先设定某个定值作为初始值,当按下键S2时,进入数值设定状态,这时可通过按下键S3、S4来加减所设定的初始值。源程序略。经过调式,可达到预期效果。整机调试编译好主程序和个模块子程序,烧写进单片机AT89C51中,连接好各部分硬件电路。打开电源,电路自动复位,首先不要接入DS18B20,此时屏幕中间只显示DS18B20ERROR,然后接入DS18B20,但让其处于无水状态,此时屏幕中间显示错误ERROR,并且语音发出报警声。接着让DS18B20处于有水状态,此时LCD1602液晶显示DS18B20所读到水的当前温度T1,用温度计测量水的当前温度T2,对比T1与T2的值,结果如表4.1。通过按键设定某个值,并使这个值大于当前温度值,当退出“确认”按键时,观察到继电器1能够吸合。再次通过按键设定一个值,并使这个值小于当前温度值,所测数据如表4.2。在原理上基本能达到预期效果。表4.1测量T1、T2的温度测量次数12345DS18B20所测温度T1(℃)温度计所测温度T2(℃)由于元器件DS18B20读温度时有延时,并且读温度计所测温度时人为的视觉误差,以及周围环境影响等原因,T1,T2有较小的差别。表4.2DS18B20测量设定前后的温度键盘设定的温度(℃)102520温度设定前温度计所测温度(℃)温度设定前DS18B20所测温度(℃)温度设定后系统再次达到稳定时温度计所测温度(℃)温度设定后系统再次达到稳定时DS18B20所测温度(℃)实验现象由于所设定的温度与当前水温在整数上相等,所以系统不启动任何装置,两个继电器都不吸合。设定温度值大于当前水温,继电器1吸合,启动加热装置。当温度升到25度时,继电器1马上断开,停止加热。设定温度值小于当前水温,继电器2吸合,启动降温装置。当温度降到低于21度时,继电器2断开。由于在实验过程中,当加热装置达到所设定的温度时,继电器断开后,加热装置仍有余热,所以水的温度仍然会上升一定的温度。所以本系统设定的允许温差为<1℃。结论本系统以单片机为核心部件的控制系统,利用软件编程,最终基本实现了各项设计要求。由于数据采集、显示的实时性要求不是很高,而单片机的执行速度相对于这些过程要快得多,若分时选通各个采样或显示通道,虽然单片机对各个通道的处理是依次进行的,但是只要这一过程大到一定速度,总的来看几乎同时执行,不断重复这一过程,就产生了循环扫描的思想,它在单片机系统设计中得到了广泛的应用。在当今越来越趋向于自动化的社会,该系统的可用性及简易性更能取得广泛的应用。通过这次毕业设计使我从中学到了许多东西,了解到在电子制作方面的很多经验,同时也学到了那种坚决不放弃的制作精神,做任何学问都要一丝不苟,对出现的任何问题和偏差都不能轻视,要找方法去解决,做事情的时候要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就能找到解决问题的思路和办法。自己的求学之路还很长,以后更应该在工作实践中不断学习,努力使自己成为一个对社会有所贡献的人。致谢这次毕业设计得到了很多老师、同学的帮助,其中我的指导老师李风雷老师对我的关心和支持尤为重要,感谢李风雷老师一直以来对我毕业设计的建议和指导。这次毕业论文能够最终顺利完成,归功于各位任课老师两年间的认真负责,使我能够很好的掌握专业知识,并在毕业论文中得以体现。也正是你们长期不懈的支持和帮助才使得我的毕业论文最终顺利完成。最后,向自动化专业的全体老师们再次表示衷心感谢:谢谢你们,谢谢你们两年的辛勤栽培!参考文献[1]苏家健,等.单片机原理及应用技术[M].北京:高等教育出版社,2004,26-55.[2]石宗义.电路原理图与电路板设计教程Protel

99SE[M].北京:北京希望电子出版社,2002,65-80.[3]江晓安,等.数字电子技术[M].西安:西安电子科技大学出版社,1993,50-70.[4]郑长勇,徐勇.单片机在温度检测与控制中的应用[J].电子质量报,2005,12:011.[5]王任远,沈占彬.数字式智能温度控制器的研究[J].工矿自动化报,2008,02:049.[6]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品汇编[M].北京:北京理工大学出版社,2004.[7]DS18B20官方英文文档.DS18B20官方英文站点下载.[8]常君,刘坤,等.基于LPC2132和DS18B20的单总线数字测温系统设计[J].电子测试报,2008,04:014.[9]陶志东.基于C8051F系列单片机字符显示器的开发[D].华中科技大学,2006.[10]李元斌.DS18B20数字传感器温度检测显示系统[J].2008,01:030[11]刘刚,秦永左.单片机原理及应用.北京:北京大学出版社,2006,35-76.[12]胡汉才.单片机原理及其接口技术.北京:清华大学出版社,2004,10-33.[13]蔡美琴、张为民.MCS-51系列单片机系统及其应用(第二版).高等教育出版社,2004.,26-40.[14]陈龙三编著.8051单片机C语言控制与应用.北京:清华大大学学出版社,1999年8月第一版,4-10.[15].科学技术大学出版社,2001.附录A附录B#include<reg51.H>#include"intrins.h"#defineuintunsignedint#defineucharunsignedchar#defineulongunsignedlong#defineLCDIOP1sbitDQ=P3^5;//ds18b20与单片机连接口sbitrs=P2^5;sbitrd=P2^6;sbitlcden=P2^7;sbitkey1=P1^0;//设定sbitkey2=P1^1;//加sbitkey3=P1^2;//减sbitheat=P3^6;//报警输出sbitout1=P3^2;sbitout2=P3^1;sbitbusy=P2^0;sbitdat=P2^1;sbitrest=P2^2;ucharkey;//设定指针ucharTL=30,WH=12,WL=8;//水位上下限sbitRX=P3^4; //模块引脚sbitTX=P3^3;uintSpeed=340;unsignedlongtime=0;unsignedlongS=0;bitflag=0;ucharl_disbuff[4] ={0,0,0,0,};//显示缓冲uchardatadisdata[5];uinttvalue;//温度值uchartflag;ucharcount,s1num;ucharcodetable[]="WH:WL:";ucharcodetable1[]="TL:NOW:";uchardispbuf[3];ulongtemp;uchargetdata;//获取ADC转换回来的值voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}/********************************************************报数程序********************************************************/uintsound(uintk){uinti;while(busy==0);rest=1;delay(1);rest=0;for(i=k;i>0;i--){dat=1;delay(1);dat=0;}return(1);}/*********************************************//**********************************************/voidwrite_com(ucharcom){ rs=0; rd=0; lcden=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; }/*********************************************/voidwrite_date(uchardate){ rs=1; rd=0; lcden=0; P0=date; delay(5); lcden=1; delay(5); lcden=0; }/***********************************************/voidinit(){ ucharnum; lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<15;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<15;num++) { write_date(table1[num]); delay(5); } }/********************************************************/voiddisplayTL(){write_com(0xc3);write_date(TL/10%10+0x30);//温度上限十位write_com(0xc4);write_date(TL%10+0x30);//温度上限个位}voiddisplayWH(){write_com(0x83);write_date(WH/100%10+0x30);write_date(WH/10%10+0x30);//水位上限十位write_date(WH%10+0x30);//水位上限个位}voiddisplayWL(){write_com(0x89);write_date(WL/10%10+0x30);//水位上限十位write_date(WL%10+0x30);//水位上限个位}/**************************************************/voiddelay_18B20(uinti)//延时1微秒{ while(i--);}/**************************************************/voidds1820rst()/*ds1820复位*/{ucharx=0; DQ=1;//DQ复位 delay_18B20(4);//延时 DQ=0;//DQ拉低 delay_18B20(100);//精确延时大于480us DQ=1;//拉高 delay_18B20(40); }uchards1820rd()/*读数据*/{uchari=0; uchardat=0; for(i=8;i>0;i--) {DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat);}/**************************************************/voidds1820wr(ucharwdata)/*写数据*/{uchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}read_temp()/*读取温度值并转换*/{uchara,b;ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ds1820wr(0x44);//*启动温度转换*/ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff){tflag=0;}else{tvalue=~tvalue+1; tflag=1; }tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue);}/**************************************************/voidds1820disp()//温度值显示 {ucharflagdat; disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/10+0x30;//个位数disdata[3]=tvalue%10+0x30;//小数位if(tflag==0) flagdat=0x20;//正温度不显示符号 elseflagdat=0x2d;//负温度显示负号:-if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位为0,不显示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位为0,十位为0也不显示 } } write_com(0xca); write_date(flagdat);//显示符号位 write_com(0xcb); write_date(disdata[0]);//显示百位 write_com(0xcc); write_date(disdata[1]);//显示十位 write_com(0xcd); write_date(disdata[2]);//显示个位 write_com(0xce); write_date(0x2e);//显示小数点 write_com(0xcf); write_date(disdata[3]);//显示小数位 }/**************************************************/voidConut(void){time=TH0*256+TL0; TH0=0; TL0=0; S=(time*Speed)/20000;//算出来是CM if((S>=20)||flag==1)//超出测量范围显示“-” { flag=0; out1=1; out2=1; write_com(0x8b); write_date('');//显示符号位 write_com(0x8c); write_date('O');//显示符号位 write_com(0x8d); write_date('U');//显示符号位 write_com(0x8e); write_date('T');//显示符号位 write_com(0x8f); write_date('!');//显示符号位 } else {S=20-S; if(S>WH) { out1=1; out2=0; } elseif(S<WL) {out1=0; out2=1; } else {out1=1; out2=1; } l_disbuff[0]=S/100%10; //这里加上0X30是将数字转为ASCII码 l_disbuff[1]=S/10%10; l_disbuff[2]=S%10; write_com(0x8c); write_date(l_disbuff[0]+0x30);//显示符号位 write_date(l_disbuff[1]+0x30);//显示符号位 write_date(l_disbuff[2]+0x30);//显示符号位 write_date('c');//显示符号位 write_date('m');//显示符号位 } }/********************************************************/voidzd0()interrupt1 //T0中断用来计数器溢出,超过测距范围{flag=1; //中断溢出标志}/********************************************************/voidStartModule() //启动模块{ TX=1; //启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0;}/*********************************************************//********************************************************/voidkeyscan(){if(key1==0){delay(2);while(key1==0);if(key>=3){key=0;}else{key++;}switch(key){case1:{write_com(0x0f);write_com(0x85);while(key1==1){if(key2==0){delay(2);if(key2==0){while(key2==0); if(WH>=250) {WH=251; } else {WH++; } }displayWH();write_com(0x85);}if(key3==0){delay(2);if(key3==0){while(key3==0); if(WH<=WL+1) {WH=WL+1; } else {WH--; }}displayWH();write_com(0x85);}}}case2:{write_com(0x0f);write_com(0x8a); while(key1!=0) {if(key2==0) //水位下限{delay(2);if(key2==0){while(key2==0); if(WL>=WH-1) {WL=WH-1; } else {WL++; } }displayWL();write_com(0x8a);}if(key3==0){delay(2);if(key3==0){while(key3==0); if(WL<=1) {WL=0; } else {WL--; }}displayWL();write_com(0x90);}} } case3:{write_com(0x0f);write_com(0xc4); while(key1!=0) {if(key2==0){delay(2);if(key2==0){while(key2==0); if(TL>=980) {TL=990; } else {TL++; } }displayTL();write_com(0xc4);}if(key3==0){delay(2);if(key3==0){while(key3==0); if(TL<=1) {TL=0; } else {TL--; }}displayTL();write_com(0xc4);}} } case0:{write_com(0x0c);break;}}}}/************************播报程序************************/voice(){ sound(32);sound(32); sound(14); sound(19); if(S/100%10!=0) {sound(S/100%10+1); } else {sound(31); } if(S/10%10!=0) {sound(S/10%10+1); } else {sound(31); } if(S%10!=0) {sound(S%10+1); } else {sound(31); } sound(24); sound(14); sound(20); if(tvalue/1000%10!=0) {sound(tvalue/1000%10+1); } else {sound(31); } if(tvalue/100%10!=0) {sound(tvalue/100%10+1); } else {sound(31); } if(tvalue/10%10!=0) {sound(tvalue/10%10+1); } else {sound(31); } sound(13); if(tvalue%10!=0) {sound(tvalue%10+1); } else {sound(31); } sound(28);}/************************************************//********************************************************/voidmain(void){ uchari;ucharn=10; init(); TMOD=0x01; //设T0为方式1 TH0=0; TL0=0; ET0=1;//允许T0中断 EA=1; //开启总中断 delay(5); displayWH(); displayWL();displayTL(); heat=0; Conut(); read_temp();//读取温度 ds1820disp();//显示 while(1) { read_temp();//读取温度 ds1820disp();//显示 StartModule(); while(!RX&&flag==0); //当RX为零时等待 TR0=1; //开启计数 while(RX); //当RX为1计数并等待 TR0=0; //关闭计数Conut(); //计算 if(tvalue<TL*10) {heat=1; } else { heat=0; } for(i=10;i>0;i--) { keyscan(); delay(100); } n--; if(n==0) {n=10; voice(); } }}

为你提供优秀的毕业论文参考资料,请您删除以下内容,O(∩_∩)O谢谢!!!2ManypeoplehavethesamemixedfeelingswhenplanningatripduringGoldenWeek.Withheapsoftime,theseven-dayChinese为你提供优秀的毕业论文设计参考资料,请您删除一下内容,O(∩_∩)O谢谢!!!NationalDayholidaycouldbethebestoccasiontoenjoyadestination.However,itcanalsobetheeasiestwaytoruinhowyoufeelaboutaplaceandyoumaybecomemorefatiguedaftertheholiday,duetobattlingthelargecrowds.Duringpeakseason,adreamaboutaplacecanturntonightmarewithoutcarefulplanning,especiallyifyoutravelwithchildrenandolderpeople.AsmostChinesepeoplewilltaketheholidaytovisitdomestictouristdestinations,crowdsandbusytrafficareinevitableatmostplaces.Alsotobeexpectedareincreasingtransportandaccommodationprices,withthepossibilitythattherewillbenoroomsavailable.Itisalsocommonthatyou'

ll

waitinthelineforonehourtogetaticket,andanothertwohoursatthesite,toonlyseeatinybitoftheplaceduetothecrowds.Last

温馨提示

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

评论

0/150

提交评论