太阳能热水器水位控制系统设计论文_第1页
太阳能热水器水位控制系统设计论文_第2页
太阳能热水器水位控制系统设计论文_第3页
太阳能热水器水位控制系统设计论文_第4页
太阳能热水器水位控制系统设计论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

.PAGE.摘要本设计主要设计了一个基于单片机的太阳能热水器水位控制系统。设计以单片机为核心,配合电阻型4档水位传感器、8255A扩展键盘和显示器件、以及电磁阀、报警等外围器件,从而完成对太阳能热水器容器内的水位测量及控制;时间显示;缺水时自动上水;水满报警;手动上水等功能。本文主要进行时钟电路、电源电路、键盘输入电路、传感器电路、显示电路的设计,以及硬件选择和系统软件设计。本文在已有的太阳能热水器的技术的基础上,采用单片机对热水器水位控制,通过合理的选择和设计,提高了水位传感器的控制水平,改善了热水器的实际使用功能,从而使太阳能热水器水位控制达到了较为理想的效果。

关键词:太阳能热水器,水位控制,单片机,传感器..Abstract..Thisarticlemainlydesignedamonolithicintegratedcircuits,thecontrolsystemofthesolarwaterheaters.Ittakethemicrocontrollerintegratedcircuitasthecore,thecoordinate4gradesofwaterslevelresistancesensor,the8255Aexpansionkeyboardandthedemonstrationcomponent,thesolenoidvalve,warning,andotherperipherycomponent,thuscompletestothewaterlevelmeasureanddemonstrate;thetimedemonstrate;lackofwaterautomaticallyupstream,thewateroverflowwarn,manualwaterfunctionandsoon.Thisarticlemainlyforclockcircuit,powersupplycircuits,thekeyboardtoenterthecircuit,sensorcircuit,displayofthecircuitdesign,andhardwareandsystemchoiceofsoftwaredesign.Thisarticleinthegivensolarwaterheaterstechnologyonthebasisofamonolithicintegratedcircuitstocontrolthroughthewaterheaterandreasonableoptionsanddesign,andimprovethecontrolofthesensorandimprovedtheactualusetomakesolarwaterheatersunderthewatercametoadesirableeffect.Keyword:Solarwaterheaters,Thewatercontrol,Monolithicintegratedcircuits,Sensors目录TOC\o"1-4"\h\z\u摘要IAbstract〔英文摘要II第一章绪论11.1课题的目的及意义11.2国内外研究综述及发展现状11.3本文完成的工作2第二章总体方案设计32.1系统的设计要求32.2系统设计方案与比较3第三章水位测量电路硬件设计53.1水位测量电路53.1.1方案比较选择53.1.2水位测量电路的具体设计8第四章时钟电路和电源电路104.1时钟芯片选择104.1.1DS12B887并行时钟芯片104.1.2DS1302串行时钟芯片114.1.3比较选择114.2时钟电路的应用设计114.2.1DS1302内部寄存器114.2.2DS1302与单片机的连接及时间读取方法124.3电源电路的设计13第五章键盘和显示电路145.1方案选择145.1.18255A芯片介绍145.1.28255A在太阳能热水器控制电路中的作用175.2显示电路工作原理175.2.18255A显示电路的硬件结构175.2.28255A实现显示方法205.3键盘电路原理215.3.1独立式键盘工作原理215.3.2键盘功能介绍215.3.3键盘扫描介绍21第六章传感器电路236.1工作原理236.2单片机控制结构图236.3传感器电路组成的原理图24第七章其他硬件电路设计267.1上水控制电路267.2电加热控制电路267.3报警控制电路267.4水位显示电路26结论28参考文献29致谢30附录31..第一章绪论1.1课题的目的及意义太阳能热水器水位控制电路是近年来发展起来的一种新型控制电路,具有功能齐全、控制简单、抗干扰能力强、价格便宜、重量轻、耗电省等优点。太阳能热水器水位控制中的传感器技术,数字电子技术与自动控制技术在生产过程,科学研究,现实生活应用及其他领域的应用十分广泛。这种专用感应控制水位装置的设计可以提高专业知识的运用能力,促进科技向生活的转化及环保事业的发展,对于提高生活质量有重要作用。随着太阳能热水器的推广普及,在自来水供应不充足的地方,如何连续正常供水是一个现实的问题。由于太阳能热水器的注水箱大多安装在房顶上,是否缺水不易观察,如何使用自动水位控制装置来控制水泵的工作,就能够很好的解决这个问题,从而给广大用户带来很大的方便。1.2国内外研究综述及发展现状从上世纪八十年代起,国内外已经对太阳能水位控制进行了广泛的研究。而太阳热水器水位控制的技术难点在水位传感器。目前市场上有两种形式的传感器,一种是利用水作介质进行导电的电极传感器,这种传感器的原理是只要把两电极接通就会有相应的信号传给主机,显示水位;另一种传感器是浮子式,这种传感器的原理就是利用电磁场开关干簧管,输出电信号。由于电极在水中导电不可避免地要电解电极,故电极式传感器的寿命一般长1-2年,电极加粗后寿命可达3-4年。XX赛佳公司从事生产研究已多年,在传感器技术的研究上于2000年3月份终于研制成功谐振及硅压力两大系列水位传感器。这两个系列传感器由于没有采用导电和浮子式的投入式工作方式,传感器的工作环境大大改善,同时这样也从根本上解决了电极的电解和浮子的结垢问题。这两大系列传感器试制成功后,该公司并没有急于推向市场,而是为了保证传感器在工艺上尽善尽美,又进行了40多种方案的试验,而且在外界环境比较特殊的地区如高温、高寒、多雷等地区进行了小批试验。历经一年多的的实地观察,事实证明这两大系列的传感器在技术上稳定可靠,在工艺上制作简单,安装维修方便。这两种传感器的研制成功,突破了太阳热水器水位控制在技术上的瓶颈,必将带来整个行业的一次革命。进步源于竞争,在我国太阳能拥有广阔的市场,当然也有更大的竞争,各大商家为了使自己的产品在市场上立足并长远发展,不断提高太阳能热水器的性能,其中太阳能热水器控制器以其灵活、贴近客户成为商家竞争的热点。目前,各大商家纷纷提高太阳能热水器的智能化程度来满足消费者的需求。许多太阳能热水器的功能有:开机自检、温控上水、强制上水、水位预置、水质设置、水温指示、低水压上水、水位显示、防高温空晒、缺水报警、自动防溢流、缺水上水、手动上水、故障提示等许多贴近客户需求的功能。目前太阳能控制器的控制器基本实现数字化,以单片机为控制核心的控制系统占领太阳能热水器的主要市场。在市场调查中发现,太阳能控制单片机的型号较多,其中应用最多的是51系列和PIC系列单片机。太阳能热水器控制系统可以实现水位显示、水位控制、温度显示、防冻等多种功能,其中对水位的检测、控制,实现水位显示、自动上水、超限报警是太阳能热水器控制系统的核心。1.3本文完成的的工作课题主要以单片机为核心配合传感器、显示器件、电磁阀、报警器等外围器件,采集热水器储水箱中的水位信号并通过控制电动机的运转来控制储水器的水位。另外,本课题对时钟电路、电源电路、键盘输入电路、传感器电路、显示电路进行了设计,以及硬件选择和软件设计。从而最终使整个太阳能热水器水位控制系统可以实现水位的检测、控制,水位显示、自动上水、超限报警等功能。本文主要完成了以下主要工作:1.学习了时钟电路、键盘电路、显示电路等与设计有关电路的设计方法。2.熟悉了与设计有关的单片机的结构与功能。3.掌握了用单片机来控制太阳能热水器水位的基本方法。4.完成了通过显示电路显示的结果观察太阳能热水器水箱水位,再通过键盘电路控制水位的功能实现。第二章总体方案设计2.1系统的设计要求设计的系统可以实现当前水位高度的显示,以及当水位下降到报警刻度时,系统可通过自动上水使水位保持在一定的水位高度。而且还可以人工手动控制上水,每次上水的最大水位值也可根据环境需要由人工自由设置。2.2系统设计方案与比较方案一:采用半导体逻辑器件构成的控制器,主要应用定时器构成。在此控制方案里,定时器和加减计数器共同构成水位显示器。由于水位的变化具有未知性,在水位检测电路里,这类控制电路过于庞大复杂,操作也不方便,成本也较高。方案二:采用可编程逻辑器件。结果简单的PLC控制成为首选。由于控制电路简单,检测电路要求也不高,所以必然造成接口资源和内部资源的浪费,显然不够经济。方案三:采用单片机为核心控制器的电路。单片机电路结构简单、成本低廉,可靠性高,便于实现各个控制功能。水位由设置在水箱内的传感器获得的电信号检测,然后通过单片机处理送达显示电路显示当前水位。本设计通过显示电路显示来观察水位状态值,再根据观察到的值,通过键盘对太阳能热水器显示电路控制,从而获得需要的合理水位值。从结构、经济、可操作性等方面来看,方案三都是最佳选择。方案三以单片机为核心控制器件,结合配合电阻型4档水位传感器、8255A扩展键盘和显示器件、以及电磁阀、报警等外围器件,从而完成对太阳能热水器容器内的水位测量及控制;时间显示;缺水时自动上水;水满报警;手动上水等功能。设计一种太阳能热水器智能控制系统。该系统原理框图如下图所示。其基本框图如图2-1所示。图2-1太阳能热水器基本框图用户在使用太阳能热水器时,当水箱中水位下降到一定刻度值时,可通过人工使用按键方法来控制电磁阀立即上水,水位达到的最高刻度也可以由按键设定。当水位下降到低于刻度线时,单片机接受此信号并开始执行指令,报警电路工作,同时电磁阀打开,水位不断升高,当达到最高水位时便给单片机发出中断请求,此时电磁阀关闭,停止工作。在上水过程中,显示器LCD既可以显示水箱的水位值又可显示水箱内水的当前温度,不仅直观方便,而且精确度高,实用性强。此系统解决了热水器上水时需人工守候和过量溢水的问题,达到了省时、环保、节水的目的。加设的缺水报警系统和液晶显示部分,使整个系统更实用,更趋向数字化、智能化。第三章水位测量电路硬件设计水位测量是太阳能热水器控制系统的重要部分,是实现其他功能的基础,此部分性能好坏将关系到整个系统的优良程度,所以设计一个性能良好的水位测量系统是本设计的重点。3.1水位测量电路方案比较选择1.排阻分档键盘式水位传感器在许多资料中都介绍了一种类似键盘电路的分档水位传感器,其原理图如图3-1所示。图3-1排阻式水位测试电路示意图它的工作原理类似于键盘的工作原理,用5根不锈钢针分别置于水箱内的四种不同高度的位置,当某个钢针不接触水面时,其输出为高电平;当其与水面接触时则输出低电平。它们的输出接至电子开关CD4069,经过CD4069反向并经74LS244驱动后分别接入89C52的P1.0~P1.3引脚。CPU对这些引脚进行判断后,送去显示相应的水位值。..显示共分4档,每档为满水位的25%。这种方法简单,易实现,省去了传统的A/D转换器,成本低,虽然不精确但可以满足使用要求。2.RC充放电式水位传感器测量电路这种电路资料较少,但我们在市场上购买的太阳能的水位和水温传感器就是基于这种原理,其基本形状如图3-2所示。图3-2太阳能水位水温传感器外形图从图3-2中我们可以清楚的地看到传感器外形非常简单,一共只有4个端口,其中一个是防冻接口,没有使用,使用的只有3个端口,在可用的三个端口上分别标有公共、水位、水温标志,由此可知测量水位、水温都只用了一个端口。观察传感器可知水位传感器有5个与水接触点,我们从上到下依次命名它们为1—5触点。我们分别测量了触点不同接法时公XX水位两端口之间的电阻,数据如表3-1所示。由上述测试结果的电阻值得出这样的规律,那就是电阻的并联短接,其原理如图3-3所示。表3-1输出电阻值表短接方式无短接1、21、2、31、2、3、41、2、3、4、5输出电阻值〔kΩ极大2512.58.66.3图3-3太阳能水位传感器原理它的工作原理是,水面每接触一个钢针就会多并联一个电阻,电阻随水位变化而规律的变化。利用单片机的一个口周期性的给电容电路充放电,然后用图3-4RC充放电式水位传感器测量电路原理图单片机监测电容两端电压的变化,因为电容电压的上升或下降时间t=RC,所以用单片机记录这个时间就能判别电阻的变化,进而转化为水位的变化进行显示及其他动作。3.传感器选择RC充放电式水位传感器测量电路,明显优于排阻分档键盘式水位传感器的地方有:〔1接线简单,排阻分档键盘式水位传感器需要四根导线传输水位信号,而RC充放电式水位传感器仅需要两根就能完成,这对于线路较长的太阳能热水器传输信号电路来说能节省相当多的导线资源。〔2给水温测量电路设计带来方便,RC充放电式水位传感器的原理可以同样运用到热电阻温度测量电路中。〔3占用较少的I/O口,仅需两个I/O口就能完成水位检测任务,极大地节约了单片机的I/O口资源。综上比较可见选用第二种方案较为优越。水位测量电路的具体设计采取与I/O隔离并用中断监测电容电压的电路这样需要将电容电压与单片机监测端口隔离,采取如图3-5示电路。图3-5水位测量电路LM358的应用LM358的正向输入端接电容电压正端,反向输入端与输出端相连,构成电压跟随器。电压跟随器的显著特点就是,输入阻抗高,而输出阻抗低,一般来说,输入阻抗要达到几兆欧姆是很容易做到的。输出阻抗低,通常可以到几欧姆,甚至更低,也就是说电压跟随器有较好的隔离作用,使输出对输入影像较小,正好满足我们的要求。LM358的输出电压幅度为0至Vcc-1.5V,而要跟随的电压范围为0—5V,所以应选用大于+6.5V的电源供电,这里选用+12V单电源供电。2.LM393的作用给比较器设置+3V的参考电压,将电容电压的指数曲线变成矩形波,波形图如图3-6示。将参考电压接同相输入端,比较电压接反相输入端,从而实现电容电压在上升到参考电压时比较器产生下降沿信号,作为单片机的外部中断信号。根据LM393的特性本设计电源电路提供的电压,选用+5v给其供电。由LM393的内部原理图可知LM393的输出为集电极开路,它的输出高电平与LM393的电源无关,但须接外部电源和上拉电阻。在图3-5所示的水位测量电路中并未有这样的上拉电压电路,是因为单片机内部INT0、INT1口已经具备了这样的电路。另外LM393的同相输入端输入和反相输入端输入之间有相互嵌位作用,+5V电源和分压电阻提供的+3v参考带电平对反相输入端输入有嵌位作用,如果不接LM358电源跟随器而与电容直接相连,显然会影响电容电压的变化,这就是要加电压跟随器进行隔离的原因。图3-6电压与比较器输出信号<仿真和实测>..第四章时钟电路和电源电路..4.1时钟芯片选择DS12B887并行时钟芯片1.DS12B887性能特点:在没有外部电源的情况下可工作10年,自带晶体振荡器及电池,可计算到2100年前的秒、分、小时、星期、日期、月、年七种日历信息并带闰年补偿,用二进制码或BCD码代表日历和闹钟信息,有12和24小时两种制式,12小时制时有AM和PM提示,可选用夏令时模式,可以应用于MOTOROLA和INTEL两种总线,数据/地址总线复用,内建128字节RAM–14字节时钟控制寄存器–114字节通用RAM,可编程方波输出,三种可编程中断–时间性中断可产生每秒一次直到每天一次中断–周期性中断122ms到500ms时钟更新结束中断。2.管脚功能描述图4-1是DS12B887时钟芯片管脚图。管脚名称和功能:AD0~AD7–地址/数据复用总线;NC–空脚;MOT–总线类型选择<MOTOROLA/INTEL>;CS–片选;AS–ALE;R/W–在INTEL总线下作为/WR;DS–在INTEL总线下作为/RD;RESET–复位信号;IRQ–中断请求输出;SQW–方波输出;VCC–+5电源;GND–电源地;图4-1DS12B887时钟芯片管脚图DS1302串行时钟芯片1.DS1302芯片的性能特点:实时时钟具有能计算2100年之前的秒分时日星期月年的能力还有闰年调整的能力,318位暂存数据存储RAM,串行I/O口方式使得管脚数量最少,宽范围工作电压2.0~5.5V,读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式,8脚DIP封装或可选的8脚SOIC封装根据表面装配,简单3线接口,与TTL兼容Vcc=5V。2.管脚功能描述图4-2为DS13028脚封装管脚图。图4-2DS13028脚封装管脚图管脚描述:X1、X232.768KHz晶振管脚;GND地;RST复位脚;I/O数据输入/输出引脚;SCLK串行时钟;Vcc1,Vcc2电源供电管脚;比较选择DS12B887的计时功能基本相同,它们的最大区别是DS1302时串行I/O方式,而DS12B887是并行I/O口方式,DS12B887编程实现要容易些,而DS1302要占用较少的I/O资源。可见使用DS1302串行时钟芯片能够节省单片机的硬件资源,并能充分发挥单片机的软件优势,所以应使用串行芯片DS1302来完成时钟信号的提供。4.2时钟电路的应用设计DS1302内部寄存器CH:时钟停止位寄存器2的第7位12/24小时标志CH=0振荡器工作允许;bit7=1,12小时模式;CH=1振荡器停止;bit7=0,24小时模式;WP:写保护位寄存器2的第5位:AM/PM定义WP=0寄存器数据能够写入;AP=1下午模式;WP=1寄存器数据不能写入;AP=0上午模式TCS:涓流充电选择DS:二极管选择位TCS=1010使能涓流充电;DS=01选择一个二极管;TCS=其它禁止涓流充电;DS=10选择两个二极管;DS=00或11,即使TCS=1010,充电功能也被禁止表4-1RS位功能表RS位电阻典型位00没有没有01R12KΩ10R24KΩ11R328KΩDS1302与单片机的连接及时间读取方法DS1302的管脚按前面的说明进行连接,SCLK同步时钟口接P1.5口,I/O数据输入输出口接P1.6口,RET复位引脚接P1.7口,VCC2接+5V电源,VCC1接+5V备用电池,X1、X2接32.768MHZ晶振。单片机与DS1302的连接方式如图4-3所示。读取DS1302的时钟时间是主程序的一部分,首先要定义日期时间等全局变量,然后在主程序中调用时间读取程序。DS1302为串行时钟芯片,每次传送一位数据,通过P1.5给DS1302发同步脉冲实现数据传输的同步。P1.6口与DS1302I/O引脚相连,将要读取值的控制字串行写入到DS1302中,每写一位,发送一个同步脉冲,控制字为8位,读出的时、分数据也是8位,写完8位控制字,DS1302随后就通过I/O引脚将该值送给单片机。I/O引脚上的数据在SCLK的上升沿串行输入<写数据到DS1302>,在SCLK的下降沿串行输出<读数据>。为了启动数据传输,引脚RST应为高电平。图4-3单片机与DS1302的连接图4.3电源电路的设计对于太阳能用户来讲,最常用、最方便的电源当然是220V的工频交流电源,但太阳能热水器控制系统需要的是稳定的+5V和+12V电源,所以要为控制系统设计直流电源电路。由于本设计由+5V和+12V两个不同的电压供电,并且+5V是主电源。变压器分别采用220/8和220/15的变压器,稳压电路分别采用集成稳压器件7805和7812进行稳压。图4-4系统直流电源总图..第五章键盘和显示电路..键盘和显示电路是太阳能热水器水位控制系统与用户的接口,用户通过显示来观察水位、时间等状态值,再根据观察到的值,通过键盘对太阳能热水器进行控制。本章设计了较为合理的键盘和显示电路完成这些功能。5.1方案选择太阳能热水器系统需要用数码管显示时间和温度,时间精确到分,24或12小时制,这就需要4位显示;而温度显示范围为0—99度,这又需要2位显示。对于六位显示,采用占用I/O较少的动态扫描方式,也需要六位位选码数据线,八位段选码数据线,共需14个I/O口。键盘采用复用方式,仍需要至少4个I/O口。键盘和显示电路共需18个I/O口,89C52单片机共有4×8个I/O口,而又有8个口有特殊功能,也就是常用的共有3×8个I/O口,该系统的其他设置也还要占用大量I/O口,显然这样太浪费资源。8255A芯片介绍1.8255A的引脚功能定义8255A的原理结构如图5-1所示。它采用40脚的DIP封装,其引脚定义如表5-1所示。8255A为一可编程的通用接口芯片。它有三个数据端口A、B、C,每个端口为8位,并均可设成输入和输出方式,但各个端口仍有差异:端口A〔PA0~PA7:8位数据输出锁存/缓冲器,8位数据输入锁存器;端口B〔PB0~PB7:8位数据I/O锁存/缓冲器,8位数据输入缓冲器;端口C〔PC0~PC7:8位输出锁存/缓冲器,8位输入缓冲器〔输入时没有锁存。控制寄存器控制寄存器高四位低四位端口A端口B端口CB组A组VCCD7~D0A1RESETA0PC3~PC0PA7~PA0PB7~PB0PC7~PC4GND图5-18255A输入输出口和编程模型表5-18255A引脚定义引脚名功能连接去向D0~D7数据总线〔双向CPURESET复位输入CPU片选信号译码电路EQ读信号CPU写信号CPUA0,A1端口地址CPUPA0~PA7端口A外设PB0~PB7端口B外设PC0~PC7端口C外设VCC电源〔+5V/在模式控制下这个端口又可以分成两个4位的端口,它们可单独用作为输出控制和状态输入。端口A、B、C又可组成两组端口〔12位:A组和B组,参见图5-2。在每组中,端口A和端口B用作为数据端口,端口C用作为控制和状态联络线。在8255A中,除了这三个端口外,还有一个控制寄存器,用于控制8255A的工作方式。因此8255A共有4个端口寄存器,分别用A0、A1指定:A1=0,A0=0,表示访问端口A;A1=0,A0=1,表示访问端口B;A1=1,A0=0,表示访问端口C;A1=1,A0=1,表示访问控制寄存器。2.8255A的工作方式图5-2方式控制字8255A有三种基本工作方式:方式0:基本的输入/输出方式1:有联络信号的输入/输出;方式2:双向传送。A组可采用方式0~方式2,而B组只能采用方式0和方式1,这由8255A的方式控制字控制。当向A1=1、A0=1的端口寄存器〔即控制寄存器发送D7=1的控制字时,其作用为方式控制字,各个位的含义如图5-2所示。工作方式介绍方式0——基本的输入/输出将端口信号线分成4组,分别由方式控制字的D4、D3、D1、D0控制其传送方向,当某位为1时,相应的端口数据线设置成输入方式;当某位为0时,相应的端口数据线设置成输出方式。特别注意,当将C口的低4位设置成同一传送方向时,则端口C可用作为独立的端口,因此,8255A提供了3个独立的8为端口。方式1——有联络信号的输入/输出方式2——双向传送本设计用方式0,所以方式1、方式2不再详细介绍。8255A在太阳能热水器控制电路中的作用单片机与8255A的连接如图5-3所示,如图所示分别将8255A的读、写、复位端口与单片机的读、写、复位端口相连。A0、A1、为8255A的地址口,D0-D9为数据口。P2.5与A0相连,P2.6与A1相连,P2.7与相连,提供8255的端口地址信号。单片机的P0口为8255A提供数据输出输入。图5-3单片机与8255A连接图5.2显示电路工作原理8255A显示电路的硬件结构。8255A扩展显示及键盘电路如图5-4所示。图5-4用8255A扩展的键盘和显示电路在显示电路中用8255A的PA口输出位选信号,通过74F07接LED显示器的片选引脚。74F07是TTL门集成的六路输出缓冲器/驱动器,因为本系统采用的是共阴极LED显示器,位选应接低电平,可能有几十毫安的电流输出,而单片机的I/O口最大能承受几毫安的灌电流,所以需用74F07来接受较大的输出电流。PB口输出的段选信号,通过74LS245芯片接LED段码引脚,因为8255A的输出电流一般是微安级的,而LED一般则要求5到几十毫安的电流,不能直接驱动LED,而74LS245的高电平输出电流在15毫安左右,可以驱动LED显示。另外74LS245的输出接上拉电阻,帮助驱动显示器。LED显示器是由发光二极管显示子段组成的显示器件。在单片机系统中通常使用的是七段LED显示器,这种显示器有共阴极共阳极两种,在这次设计中选用共阴极LED显示器。共阴极七段LED显示器的管脚如图5-5所示图5-5共阴极LED显示器的原理和管脚图表5-2共阴极LED显示器七段码显示字符共阴极七段码显示字符共阴极七段码03FH96F106A7725BB7C34FC39466D5E56DE7967DF71707P7387FU3E8255A实现显示方法8255A的PA、PB口作为输出口驱动数码管显示;PC口用作输入口监测键盘输入,所以这里须用工作方式0——基本输入输出口工作方式。8255A的RESET引脚与单片机的RESET引脚直接相连,当单片机复位时,8255A同时复位。单片机的P2.7口与8255A的片选信号相连,显示期间一直输出低电平,选中8255A。在P2.5、P2.6都输出高电平时,即A0=1,A1=1时,=0,单片机输出写信号,访问控制寄存器,将方式控制字10001001通过单片机的P0口与8255A的D0-D7数据口送给8255的控制字寄存器。当P2.5、P2.6都输出低电平时,A0=0,A1=0时,=0,单片机输出写信号,访问端口A,将位选码送出,选中要显示的位,向该地址写入位选码即可。然后将P2.5=0,P2.6=1,即A0=0,A1=1,=0,单片机输出写信号,访问端口B,将段选码送出,保持几毫秒的延时,使LED显示。5.3键盘电路原理为使用户使用界面尽量简单,本文采用四个按键,通过按键复用来实现手动上水、水位设置、温度设置、电加热多种功能。同时本文用8255来分别实现显示和键盘。键盘与8255的连接如图5-4所示。独立式键盘工作原理因为键盘较少所以用简单的独立式键盘,它的优点是编程简单,缺点是占用I/O口多,适用于键盘较少的电路。键盘的工作原理是P2.5=0,P2.6=1,即A0=0,A1=1,=0,单片机发出读信号,将8255A的PC口状态,通过8255A的D0-D9口送给单片机。然后单片机根据从8255A读取的数据做出相应的动作。这是基本原理,在具体实现时还要考虑键盘的延时去抖,去抖的原理是,当检测到有键按下时,单片机先不动作,延时10毫秒以后,单片机再次检测按键是否按下,如果还是按下,就说明此键确实是按下状态,单片机执行相应操作。键盘功能介绍其中S1为手动上水键,S2为设置水位参数键,S3为电加热键,S4为设置温度键。S1、S3单独功能键。而S2、S4为复用键。当第一次按S2键时,进入水位设置状态,然后每按一次S1为设置水位加一,循环工作。当第一次按S4键时,进入水温设置状态,然后每按一次S4为设置水温加一,循环工作。键盘扫描程序本程序采用扫描方式读取键盘动作,实现程序如下:ucharkbscan<void>{ucharrecode; if<<KPORT&0X0F>!=0X0F>//若有键按下 { delay<2>;//延时抖动if<<KPORT&0XF0>!=0X0F>//若有键按下 { recode=KPORT;//记录键值 return<recode>;//返回键值 } } return<0>;//返回0}根据读取的值,键盘处理程序进行相应动作,键盘数据处理程序不再叙述。第六章传感器电路6.1工作原理..当水位处于低水位的时候,传感器的低水位探测线被+5V的电源导通进入稳压电路经过处理在稳压电路的输出端有一个高电平,送入单片机的P1.0口,另一个稳压电路输出的高电平进入单片机的P1.1口单片机经过分析,在P1.2口输出一低电平,驱动红灯亮,P1.5出来一个信号使光电耦合器GDOUHE导通,这样继电器闭合,使水泵加水;当水位处于正常范围内时,水泵加水,在P1.3引脚出来一个低电平,使绿灯亮;当水位在高水位区时,传感器的两根探测线均被导通,均被+5V的电源导通,送入单片机,单片机经过分析,在P1.4引脚出来一个低电平,使黄灯亮,在P1.5端出来一个高电平不能使光电耦合器导通,这样继电器不能闭合,水泵不能加水;当三灯闪烁表示系统出现故障。6.2单片机控制结构图图6-1单片机控制结构图采用单片机AT89C2051作为我们的控制芯片,主要工作过程是当水箱的水在低水位时,水位探测传感器送给单片机一个高电平,然后单片机驱动水泵加水和显示系统使红灯变亮;当水位在正常范围内时,水泵加水,绿灯亮,;当水位在高水位时,单片机不能驱动水泵加水,黄灯亮。6.3传感器电路组成的原理图本系统由水位探测传感电路、电源电路、稳压电路、单片机系统、光报警显示电路、继电器控制水泵加水电路、以及水位模型组成。传感器电路组成的电气原理图如图6-2所示:图6-2传感器电路组成的电气原理图工作原理:当水位处于低水位的时候,传感器的低水位探测线被+5V的电源导通进入稳压电路经过处理在稳压电路的输出端有一个高电平,送入单片机的P1.0口,另一个稳压电路输出的高电平进入单片机的P1.1口单片机经过分析,在P1.2口输出一低电平,驱动红灯亮,P1.5出来一个信号使光电耦合器GDOUHE导通,这样继电器闭合,使水泵加水;当水位处于正常范围内时,水泵加水,在P1.3引脚出来一个低电平,使绿灯亮;当水位在高水位区时,传感器的两根探测线均被导通,均被+5V的电源导通,送入单片机,单片机经过分析,在P1.4引脚出来一个低电平,使黄灯亮,在P1.5端出来一个高电平不能使光电耦合器导通,这样继电器不能闭合,水泵不能加水;当三灯闪烁表示系统出现故障。第七章其他硬件电路设计上水、电加热、报警电路属于大功率驱动电路,需用开关控制外部电源的关断。水位显示是简单的三极管驱动电路。电源电路微单片机的主电路及部分驱动开关提供电源。本章对这些综合介绍。7.1上水控制电路由单片机P1.1口的输出来控制上水电磁阀。单片机P1.1口通过一个2.2K的电阻接9013三极管的基极,9013的集电极通过一个单刀继电器接正12V电源,9013射极接地。当P1.1输出低电平时,三极管截止,几乎没有电流通过三极管的基极到射极、集电极到射极,即,所以此时流过继电器的电流几乎为0,继电器打不开。当P1.1口输出高电平时,三极管9013导通,有较大的饱和电流流过继电器,使其吸合、关闭,从而开启电磁阀。7.2电加热控制电路电加热的继电器采用双开关继电器,一个开关控制电加热器的火线,另一个控制零线。当P1.0输出低电平时,三极管不导通,继电器无电流通过,开关不开启,电加热器不工作。当P1.0输出高电平时,三极管导通,继电器有较大电流通过,开关闭合,电加热器开始工作。。7.3报警控制电路报警输出三极管的集电极接蜂鸣器,蜂鸣器的另一端接正5伏电源。有P1.2口控制报警电路,当水位超标时P1.2口输出高电平报警,不报警时将P1.2口置低电平。7.4水位显示电路水位显示电路由P2.0-P2.4口来控制,其中P2.4口输出高低电平控制水位的显示与否,P2.0-P2.3口输出高低电平控制二极管的亮灭来显示水位。图7-1主要驱动电路电路图..结论本课题设计了一个以单片机为核心配合其他外围电路的太阳能热水器智能控制系统,完成了对太阳能热水器容器内的水位测量、时间显示;缺水时自动上水,水溢报警;手动上水、参数设定等功能。完成了太阳能热水器水位的测量和显示电路与电源电路的设计通过对水位、水温的测量监控,实现了自动上水、水溢报警、智能加热等功能。完成了用8255A扩展键盘和显示电路的设计,实现了温度时间共六位动态显示,和4个独立键盘输入。完成了时钟电路设计,为系统提供了准确的时间显示,显示时、分。并为定时加热提供了时间参考,从而完成自动电加热。用键盘实现了手动上水、电加热、参数设置等功能。..参考文献..[1]范延滨,王正彦.太阳能热水器控制器中测量模型.电子测量技术,2004,3.[2]唐德礼,鲍连升.太阳能热水器水温水位控制器.XX职业技术学院学报,2002,15〔4.[3]姜志海,黄玉青等.单片机原理及应用.电子工业出版社,2005.113-120.[4]刘润华,刘立山.模拟电子技术.石油大学出版社,2003.250-254.[5]孙XX.新型电热水器控制器的研制:[硕士学位论文].上海:上海交通大学,20041001.[6]欧阳乔.时钟芯片DS1302的原理及其Proteus仿真设计.计算机与信息技术,2006,6.[7]周荷琴,吴秀清.微型计算机原理.中国科学技术大学出版社,2004.325-354.[8]LatticeDateBook.LATTICESEMICONDATEBOOKCORPORATION.1994.[9]马敏,孙寅聪,张炜宇.太阳能热水器控制器的设计.XX科学.2003<02>[10]王俊杰.基于89C51单片机的太阳能热水器智能控制器的设计.XX轻工业学院学报〔自然科学版.2005<08>[11]张榜英.基于AT89S52单片机的太阳能热水器控制系统设计.XX大学学报〔自然科学版.2110〔2[12]曹明善.基于单片机的高塔水位控制系统设计.管理工程师.2010.5..致谢在这两个多月的毕业设计里,我不仅仅把大学里学的东西重新复习了一遍,更重要的是把自己从老师从课本里所了解的东西应用到实践应用中,提高了自己的能力。在做毕业设计的过程中,我查阅了图书馆的资料,也通过上网提高了自己查阅资料的能力。毕业设计是对大学所学知识的综合运用,也是理论走向实践的第一步,这对以后继续深造或者走向工作岗位都将产生深远的意义,更重要的是为以后的理论和实践的综合发展奠定了一定的基础。这次毕业设计中,最开始我不知所措,然而随着我不断的学习我也慢慢的适应了论文的设计。设计中我得到了张老师的指导,他严谨的作风及对我的严格要求给我留下很深的印象,使我受益匪浅,论文写作中,每周都得到张老师的指点,在我学习期间他不仅传授了我做学问的秘诀,还传授了做人的准则。这些都将使我终生受益。我再次为张老师的付出表示感谢。鉴于我现在所具备知识水平有限,难免存在一些错误和漏洞,恳请老师指正不足。在此,再次向老师、学校表示忠心的感谢。..附录附录:主程序流程图和程序太阳能热水器智能控制系统程序://定义头文件和各个输入管脚以及变量声明#include<reg52.h>#include<absacc.h>#include<stdio.h>#include<intrins.h>#defineuintunsignedint//定义变量类型名#defineucharunsignedchar/*定义8255a字符型字位口*/#defineDIGPORTXBYTE[0x1FFF]//PA口地址,位选码地址#defineWORDPORTXBYTE[0X3FFF]//PB口地址,断选码地址#defineCCOMXBYTE[0X7FFFF]//控制字寄存器地址#defineKPORTXBYTE[0X5FFF]//PC口,键盘扫描地址//DS1302_RST=1//定义DS1302时钟芯片引脚操作#defineSet_DS1302_RSTDS1302_RST=1//DS1302_RST=0#defineClr_DS1302_RSTDS1302_RST=0//DS1302_SDA=1#defineSet_DS1302_SDADS1302_SDA=1//DS1302_SDA=0#defineClr_DS1302_SDADS1302_SDA=0//DS1302_SCLK=1#defineSet_DS1302_SCLKDS1302_SCLK=1//DS1302_SCLK=0#defineClr_DS1302_SCLKDS1302_SCLK=0//定义读时间控制字#defineDS1302_SEC_Reg0x80#defineDS1302_MIN_Reg0x82#defineDS1302_HR_Reg0x84#defineDS1302_DATE_Reg0x86#defineDS1302_MONTH_Reg0x88#defineDS1302_DAY_Reg0x8a#defineDS1302_YEAR_Reg0x8c#defineDS1302_CONTROL_Reg0x8e#defineDS1302_CHARGER_Reg0x90#defineDS1302_CLKBURST_Reg0xbe//全局变量//为了方便,我把个位和十位分开了ucharyear1=0x88;ucharyear0=0x88;ucharmonth=0x88;uchardate=0x88;ucharday=0x88;ucharhour=0x88;ucharminute=0x88;ucharsecond=0x88;/*定义P1口各管脚*/sbitL0=P2^0;sbitL1=P2^1;sbitL2=P2^2;sbitL3=P2^3;sbitK0=P2^4;sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;sbitHig=P1^4;sbitDS1302_SDA=P1^5;//定义DS1302时钟引脚与单片机引脚的连接sbitDS1302_SCLK=P1^6;sbitDS1302_RST=P1^7;/*声明调用函数*/voidinital<void>;voidtimer1_svr<void>;voiddisplay<void>;voiddelay<ucharj>;voidDS1302_Write<ucharreg,uchardat>;ucharDS1302_Read<ucharreg>;voidDS1302_Init<void>;voidReadTime<void>;voidWtTmCr<>;voidLvRead<>;voidTmRead<>;voidkey<void>;ucharkbscan<void>;voidDS1302<void>;voidint0_int<void>;voidint1_int<void>;/*定义调用存储单元*//*显示缓冲区〔依次为高位低位*/ucharBUFFER[3]={0,0,0};ucharWTLV;//水位值ucharTMP;//水温值ucharWTLVSET;//水位设定值ucharTMPSET;//水温设定值ucharbuf[4]={0,0,0,0};/*数码管显示编码"0"-"9","A","-"*/ucharcodeTABLE[]={0x7B,0x30,0xEA,0xF8,0xB1,0xD9,0xDB,0x70,0xFB,0xF9,0xF3,0x80};main<>{inital<>;//初始化中断、定时器、I/O口 kbscan<>;//键盘扫描 key<>;//键盘处理 TmRead<>;//读取温度 LvRead<>;//读取水位 DS1302<>;//读取时间 display<>;//显示}voidinital<>{P1_0=P1_1=P1_2=K0=0;//初始化外部驱动口DS1302_Init<>;EA=1;//开外部中断 IT0=1;//外部中断下降沿触发EX0=1;//允许外部中断0Hig=1;P1.3输出高电平TMOD=0x11;定时器工作于方式1TH1=0X8A;//定时器1赋初值TL1=0XD0; ET1=1;定时器1开定时中断 TR1=1;//开启定时器1 CCOM=0X80;//初始化8255A,送控制字,工作方式0}ucharkbscan<void>{ucharrecode; if<<KPORT&0X0F>!=0X0F>//若有键按下 { delay<2>;//延时抖动if<<KPORT&0X0F>!=0X0F> { recode=KPORT; return<recode>; } } else return<0>;}voidkey<void>{ucharkey;key=kbscan<>; delay<2>; if<key==0x01> { P1_1=1;//上水 } if<key==0x02>//设置水位 { if<WTLVSET==4> WTLVSET=0; else WTLVSET+=WTLVSET; BUFFER[0]=WTLVSET;//显示设置水位display<>; } if<key==0x04>//电加热 { P1_0=1; } if<key==0x08>//设置温度 { if<TMPSET>=80> TMPSET=30; else TMPSET=TMPSET+10;//增加十度 BUFFER[0]=TMPSET;显示设置水温display<>; }}voidtimer1_svr<>interrupt1{TH1=0X8A;//重新给定时器1赋值TL1=0XD0;Hig=!Hig;//充放电变换 if<Hig>//充电开始时启动定时器0 { TL0=TH0=0X00;//定时器0赋初值0TR0=1;//启动定时器0 }}voidint0_int<void>interrupt0//外部中断0,测水位{EX0=0;EX1=1;TR0=0;buf[0]=TL0;buf[1]=TH0;}voidint1_int<void>interrupt2//外部中断1,测水温{EX1=0;EX0=1;TR0=0; buf[2]=TL0; buf[3]=TH0;}voidTmRead<>//水温值处理{uintval;val=buf[3]*256+buf[2];if<val<7549>TMP=97-int<val*8/1000>;elseif<val<20000>TMP=50-int<val/1000>;elseTMP=30-int<val*5/10000>;}voidLvRead<>//水位值处理{if<buf[1]>60>{ WTLV=1;// L3=0;L2=1;L1=1;L0=1; } elseif<buf[1]>45> { WTLV=2;L3=1;L2=0;L1=1;L0=1; } elseif<buf[1]>36> { WTLV=3;L3=1;L2=1;L1=0;L0=1; } else { WTLV=4;L3=1;L2=1;L1=1;L0=0; }}voidWtTmCr<>//水位、水温控制{if<WTLV==4> P1_1=0; if<WTLV==1> P1_1=1; if<TMP>=TMPSET> P1_0=0; if<TMP<TMPSET&&hour==0x19> P1_0=1;}voiddisplay<void>{uchari;//显示缓冲区首址uchardelay;//显示延时uchardisp;//显示内容uchardigit;//定义数码管显示位digit=0x0200;for<i=2;i>=0;i-->{if<BUFFER[i]>100>disp=BUFFER[i]%10+10;//显示高位elsedisp=BUFFER[i]%10;DIGPORT=digit;WORDPORT=TABLE[disp];for<delay=0;delay<=200;delay++>;digit=digit>>1;//显示低位disp=BUFFER[i]/10;DIGPORT=digit;WORDPORT=TABLE[disp];for<delay=0;delay<=200;delay++>;digit=digit>>1;}}voiddelay<ucharj>//延时程序{uchara,b; for<a=0;a<j;a++> for<b=0;b<200;b++> ;}voidDS1302<>//时间程序{ReadTime<>;BUFFER[1]=second;BUFFER[2]=hour;}voidDS1302_Write<ucharreg,uchardat>//写入时间{uchari;Clr_DS1302_RST; _nop_<>;_nop_<>;Clr_DS1302_SCLK;_nop_<>;_nop_<>;Set_DS1302_RST;_nop_<>;_nop_<>;for<i=8;i>0;i-->{if<reg&0x01>Set_DS1302_SDA;elseClr_DS1302_SDA;_nop_<>;_nop_<>;Set_DS1302_SCLK;_nop_<>;_nop_<>;Clr_DS1302_SCLK;_nop_<>;_nop_<>;reg>>=1;}for<i=8;i>0;i-->{if<dat&0x01>Set_DS1302_SD

温馨提示

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

评论

0/150

提交评论