还剩37页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
摘要随着全球人口和经济规模的不断增长,能源问题及其使用所带来的环境问题逐渐被人们所认识,“低碳经济”这一概念已经开始进入人们的视野太阳能具有储量的“无限性”、存在的普遍性,并且几乎不产生任何污染鉴于这些优点,人们在大力发展太阳能产业,其中,太阳能热水器就是典型的例子太阳能热水器顺应时代发展的要求,满足人们对环保绿色产品的需求在人类文明程度日益提高的今天,它是现代经济社会发展的最佳选择本文提出了一种新型的太阳能热水器控制系统设计方案该系统采用MSC-51系列单片机AT89C51作为中央处理器,采用DS1302实时时钟,DS18B20智能温度传感器,12864点阵式液晶显示屏等模块,完成时间、温度和水位的显示,以及时间和温度的设定等功能该系统具备以下特点结构简单、运行可靠、操作维护简便;节省燃料;无污染,不会对周围环境造成任何影响,也为人们的生活、工作等带来了极大的便利关键词太阳能热水器单片机节能液晶显示屏AbstractAstheglobalpopulationandeconomicgrowthenergyuseofenvironmentalproblemsandcausesgraduallyrecognizedlow-carboneconomytheconceptbecamepartofthepeopleofvision.Solarenergyhasreservesofthelimitlesstheuniversalityofexistingandalmostdoesnotproduceanypollution.InviewoftheseadvantagespeopleinthedevelopmentofsolarenergyindustrySolarwaterheatersarethetypicalexamples.Solarwaterheatersinconformitywiththerequirementsofthetimesaremeetingthedemandforgreenproducts.Inhumancivilizationincreasinglytodayitisamoderncivilizedsociety.Anewsolarwaterheatercontrolsystemdesign.ThisdesignincorporatesMSC-51MCUAT89C51ascentralprocessorsareal-timeclockusingDS1302IntelligenttemperaturesensorDS18B2012864dot-matrixLCDmodulecompletiontimedisplayofthetemperaturelevelaswellasthetimeandtemperaturesetting.Thewaterheaterhasthefollowingfeatures:simplestructurereliableoperationeasyoperationandmaintenance;conservefuel;pollutionwillnothaveanyimpactonthesurroundingenvironmentbutalsoforpeopleslifeworketc.hasbroughtgreatconvenienceKeywordsSolarwaterheaterchipEnergy-savingLCDscreen目录TOC\o1-3\h\z\u第1章前言
11.1太阳能热水器的发展概况及市场竞争分析
11.2太阳能热水器的应用及意义2第2章系统组成及工作原理
32.1太阳能热水器的组成与工作原理
32.2系统的组成框图4第3章太阳能热水器控制系统的硬件设计
53.1主控芯片模块
53.2实时时钟模块
83.3温度传感器模块
113.4液晶显示模块
143.5键盘输入模块
163.6继电器控制加热电路
173.7水位检测接口电路
183.8水位控制电路
193.9报警电路模块20第4章太阳能热水器控制系统软件设计
224.1KEILuVISION3软件环境
224.2太阳能热水器控制系统软件设计流程图
224.3太阳能热水器控制系统软件功能的实施23第5章太阳能热水器控制系统整体调试28第6章结论29参考文献30致谢31附录系统原理图32第1章前言随着太阳能热水器的迅速推广,广大消费者对太阳能热水器的要求越来越高,太阳能热水器商家为使自己的产品能在市场上生存和发展,在不断提高太阳能热水器性能的同时,也不断加大力度满足消费者对于太阳能热水器使用方便的要求,于是太阳能热水器的智能化程度越来越高在我设计太阳能热水器的控制系统之前,首先了解一下太阳能热水器的基本构架和工作过程,以及太阳能热水器发展概况和深远利用价值
1.1太阳能热水器的发展概况及市场竞争分析我国自78年引进全玻璃真空集热管的样管以来,经过20多年的努力,攻克了热压封等许多技术难关,已经建立了拥有自主知识产权的现代化全玻璃真空集热管产业,用于生产集热管的磁控溅射镀膜机已有745台,产品质量达到世界先进水平,产量雄居世界首位1978年中国诞生第一台太阳能热水器,到1986年卧式磁控溅射镀膜机的设计制造,是在政策扶持下的研究开发阶段1987年,我国制造了第一支全玻璃真空集热管在之后的几年里,全玻璃和热管式真空管集热器实现了产业化,产业规模达到中试水平,为下一阶段产业的规模化奠定了良好的基础,成为产业的孕育发展阶段1993年太阳能产业进入初级发展阶段由于成果转化需要很长一段时间的磨合,特别是受技术人员缺乏的影响,此阶段的产品质量有待于进一步提高,整体来讲,发展速度较为缓慢这时候以山东力诺集团为主的真空管生产企业的产品占了真空管生产绝大部分市场1997-2001年太阳能产业得到高速发展,逐渐形成北京、鲁东、泰安、扬州、海宁等5个产业基地,并以此向周围不断辐射,产能得以迅速提升目前,我国是世界上太阳能热水器生产量和销售量最大的国家太阳能热水器是太阳能利用中最常见的一种装置,经济效益明显,正在迅速的推广应用,太阳能热水器能够将太阳辐射能转换热能,供生产和生活使用当今社会发展日新月异,人们衣食住行也在不断的提高现有电热型热水器费用昂贵及燃气型热水器的不安全性,且排放二氧化碳污染大气,北方用煤气取暖造成城市空气环境污染,这些都是太阳能热水器良好的外部生存环境太阳能热水器克服了上述缺点,他是绿色环保产品它使用简单、方便太阳能热水器顺应时代发展的要求,满足人们对环保绿色产品的需求
1.2太阳能热水器的应用及意义资源是社会经济发展的物质基础,经济愈发展,对资源的依赖性愈强许多资源(如煤、石油、天然气等)是不可再生的,而且在利用过程中给人类生存环境带来极大污染,人类繁衍生息的物质和环境基础受到严峻挑战加强清洁、可再生资源的开发利用,已引起全世界的普遍重视太阳能作为一种取之不尽、用之不竭的可再生资源,有节能、环保、安全和永续利用等优点,理应成为开发利用的首选其中太阳能热水器作为家庭生活用品,其开发利用在我国已走过了二十多年的历程,生产技术成熟,具有明显优点
(一)从节能环保的角度讲,使用太阳能热水器不会对环境造成污染,同时为国家节约了大量能源,社会效益明显,是国家重点推广项目,使用前景广阔
(二)太阳能热水器的使用寿命较长,使用太阳能热水器经济实惠若使用合理,其寿命可达15年甚至更长据测算,使用1平方米太阳能热水器,相当于每年节约310度电太阳能热水器的费用只有燃气热水器的七分之一,电热水器的六分之一购置太阳能热水器一次性投资3000元左右,使用5至6年就可实现与其热水器的支出对比平衡按照装置寿命15年计算,其经济效益是十分明显的
(三)太阳能热水器集热效果好,集热时间更长只要阳光能照射到的地方,就可以使用太阳能热水器,即使在高寒地区一年四季也可以正常使用在我国浙江、江苏、山东等地,太阳能热水器的研发和生产已形成规模,应用太阳能热水器的场所也由家居使用扩展到医院、学校、宾馆、饭店、游泳池、洗浴场所等第2章系统组成及工作原理
2.1太阳能热水器的组成与工作原理图
2.1热水器装置简图1-集热器2-下降水管3-循环水管4-补给水箱5-上升水管6-自来水管7-热水出水管热水器主要由集热器、循环管道和水箱等组成,图中为典型的热水器装置图图中集热器1按最佳倾角放置,下降水管2的一端与循环水箱3的下部相连,另一端与集热器1的下集管接通上升水管5与循环水箱3上部相连,另一端与集热器1的上集管相接补给水箱4供给循环水箱3所需的冷水集热器吸收太阳辐射后,集热器内温度上升,水温也随之升高水温升高后,水的比重减轻,便经上升水管进入循环水箱上部而循环水箱下部的冷水比重较大,就由水箱下流到集热器下方,在集热器内受热后又上升这样不断对流循环,水温逐渐提高,直到集热器吸收的热量与散失的热量相平衡时,水温不再升高这种热水利用循环加热的原理,因此又称循环热水器集热器是一种利用温室效应,将太阳能辐射转换为热能的装置,该装置与一般热水交换器不一样,热交换器通常只是液体到液体,或是液体到气体的热交换过程,而平板型集热器时直接将太阳辐射传给液体或气体,是一个复杂的传热过程平板型集热器结构形式很多,世界上已实用的集热器就有直管式、瓦楞式、扁管式、铝翼式等二十多种
2.2系统的组成框图本次太阳能热水器系统是一种新型的智能温控系统系统,该系统的设计以AT89C51为核心,将传感器检测技术、智能控制相结合,整个系统可分为单片机最小系统模块、实时时钟模块、DS18B20检测温度模块,报警模块、检测水位模块、控制水位模块和键盘输入及液晶显示模块具体原理框图如图
2.4第3章太阳能热水器控制系统的硬件设计
3.1主控芯片模块
3.
1.1主控芯片简介AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容片上Flash允许程序存储器在系统可编程,亦适于常规编程器在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、有效的解决方案AT89S51具有以下标准功能8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路另外,AT89S51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止
[1]8位微控制器8K字节在系统可编程FlashAT89S51图
3.1为AT89C51的引脚图图
3.1AT89C51的引脚图AT89S51引脚功能说明如下VCC电源电压GND地
[2]P0口P0口是一个8位漏极开路的双向I/O口,即地址/数据总线复用口作为输出口,每位能驱动8个TTL逻辑电平对P0端口写“1”时,引脚用作高阻抗输入当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用在这种模式下,P0内部上拉电阻被激活在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节程序校验时,需要外部上拉电阻P1口P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动(吸收或输出电流)4个TTL逻辑门电平对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)此外,P
1.0和P
1.2分别作定时器/计数器2的外部计数输入(P
1.0/T2)和时器/计数器2的触发输入(P
1.1/T2EX),具体如表
3.1所示在flash编程和校验时,P1口接收低8位地址字节表
3.1P1口第二功能端口引脚第二功能P
1.0T2(定时器/计数器T2的外部计数输入),时钟输出P
1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P
1.5MOSI(在系统编程用)P
1.6MISO(在系统编程用)P
1.7SCK(在系统编程用)P2口P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址在这种应用中,P2口使用很强的内部上拉发送1在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号P3口P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如表
3.2表
3.2P3口的第二功能端口引脚第二功能端口引脚第二功能P
3.0RXD串行输入口P
3.4TO定时/计数器0P
3.1TXD串行输出口P
3.5T1定时/计数器1P
3.2INTO外中断0P
3.6WR外部数据存储器写选通P
3.3INT1外中断1P
3.7RD外部数据存储器读选通此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号RST——复位输入当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能DISRTO位缺省为RESET输出高电平打开状态ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的要注意的是每当访问外部数据存储器时将跳过一个ALE脉冲如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作该位置位后,只有一条MOVX和MOVC指令才能将ALE激活此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效
[3]PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将有两次有效的PSEN信号EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)需注意的是如果加密位LB1被编程,复位时内部会锁存EA端状态如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压VppXTAL1:振荡器反相放大器及内部时钟发生器的输入端XTAL2:振荡器反相放大器的输出端
3.
1.2主控芯片模块电路单片机系统由AT89C51和一定功能的外围电路组成,包括为单片机提供复位电压的复位电路,提供系统频率的晶振这部分电路主要负责程序的存储和运行对外接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、谐振器的稳定性、起振的快速性和温度的稳定性晶体可在
1.2MHz~12MHz之间任选,电容C1和C2的典型值在20pF~100pF之间选择,但在60pF~70pF时振荡器具有较高的频率稳定性典型值通常选择为30pF左右,但本电路采用30pFAT89C51的复位是由外部的复位电路来实现的复位电路通常采用上电自动复位和按钮复位两种方式本设计中所用到的是上电按钮复位,如图
3.2所示图
3.2单片机系统
3.2实时时钟模块
3.
2.1实时时钟简介DS1302
[4]是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达
2.5~
5.5V时钟可工作在24小时格式或12小时(AM/PM)格式DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行细电流充电的能力DS1302的引脚排列其中Vcc1为后备电源,VCC2为主电源在主电源关闭的情况下,也能保持时钟的连续运行DS1302由Vcc1或Vcc2两者中的较大者供电当Vcc2大于Vcc1+
0.2V时,Vcc2给DS1302供电当Vcc2小于Vcc1时,DS1302由Vcc1供电X1和X2是振荡源,外接
32.768kHz晶振RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送RST输入有两种功能首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态上电运行时,在Vcc
2.0V之前,RST必须保持低电平只有在SCLK为低电平时,才能将RST置为高电平I/O为串行数据输入输出端双向,后面有详细说明SCLK为时钟输入端控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出DS1302的复位引脚通过把RST输入驱动置高电平来启动所有的数据传送.RST输入有两种功能首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态上电运行时,在Vcc≥
2.5V之前,RST必须保持低电平只有在SCLK为低电平时,才能将RST置为高电平在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7DS1302共有12个寄存器
[5],其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式其日历、时间寄存器及其控制字见表
3.3表
3.3DS1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H00--59CH10SECSEC分寄存器82H83H00--59010MINMIN时寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-282930310010DATEDATE月寄存器88H89H01--1200010MMONTH周寄存器8AH8BH01--0700000DAY年寄存器8CH8DH00--9910YEARYEAR此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H--FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)
3.
2.2实时时钟模块电路从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进计时工具钟表的数字化,大力推动了计时的精确性和可靠性在单片机构成的装置中,实时时钟是必不可少的部件目前常用的实时时钟,很多采用单片机的中断服务来实现,这种方式一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时钟芯片,如MC
146818、DS12887等,它们虽然能满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大,占用空间多,给其它设计带来诸多不便本设计选取串行接口时钟芯片DS1302与单片机同步通信构成数字时钟电路,如图
3.3其简单的三线接口能为单片机节省大量资源,DS1302的后背电源及对后背电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等这些优点解决了目前常用的实时时钟所无法解决的问题该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值图
3.3DS1302与单片机接口电路
3.3温度传感器模块
3.
3.1温度传感器简介DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便DS18B20产品的特点
[6]:只要求一个端口即可实现通信在DS18B20中的每个器件上都有独一无二的序列号实际应用中不需要外部任何元器件即可实现测温测量温度范围在-
55.C到+
125.C之间数字温度计的分辨率用户可以从9位到12位选择内部有温度上、下限告警设置其引脚功能描述见表
3.4表
3.4DS18B20详细引脚功能描述序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚开漏单总线接口引脚当使用寄生电源时可向电源提供电源3VDD可选择的VDD引脚当工作于寄生电源时该引脚必须接地64位ROM存储器件独一无二的序列号暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度暂存器的
5、6和7字节器件内部保留使用第八字节含有循环冗余码(CRC)DS18B20加电后,处在空闲状态要启动温度测量和模拟到数字的转换,处理器须向其发出ConvertT[44h]命令;转换完后,DS18B20回到空闲状态温度数据是以带符号位的16-bit补码存储在温度寄存器中的
[7]符号位说明温度是正值还是负值,正值时S=0,负值时S=1访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了SearchROM和AlarmSearch这两个命令,在这两个命令后,主机都必须返回到第一步)a.初始化DS18B20所有的数据交换都由一个初始化序列开始由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作b.ROM命令
[8]ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信DS18B20的ROM如表
3.5所示,每个ROM命令都是8bit长表
3.5ROM命令指令协议功能读ROM33H读DS18B20中的编码即64位地址符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20V温度转换命令,适用于单个DS18B20工作告警搜索命令0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms典型为200ms结果丰入内部9字节RAM中读暂存器BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第
3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48H将RAM中第
3、4字内容复制到E2PROM中重调E2PROM0B8H将E2PROM中内容恢复到RAM中的第
3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”
3.
3.2温度传感器模块电路基于DS18B20多点温度测量系统以AT89C51为中心器件,以KEIL为系统开发平台,用C语言进行程序设计.DS18B20是智能温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、功能命令)给DS18B20,并读取温度值,在内部进行相应的数值处理,用图形液晶模块显示各点的温度在系统启动之时,可以通过键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,从而实现了对各点温度的实时监控每个DS18B20有自己的序列号,因此本系统可以在一根总线上挂接了4个DS18B20,通过CRC校验,对各个DS18B20的ROM进行寻址,地址符合的DS18B20才作出响应,接收主机的命令,向主机发送转换的温度采用这种DS18B20寻址技术,使系统硬件电路更加简单,图
3.4所示图
3.418B20与单片机的连接电路
3.4液晶显示模块
3.
4.1液晶显示屏简介12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64内置8192个16*16点汉字,和128个16*8点ASCII字符集该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面可以显示8×4行16×16点阵的汉字可完成图形显示电压低功耗是其又一显著特点由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块
[9]图
3.5LCD结构尺寸基本特性:低电源电压(VDD:+
3.0--+
5.5V)显示分辨率:128×64点内置汉字字库,提供8192个16×16点阵汉字简繁体可选内置128个16×8点阵字符2MHZ时钟频率显示方式STN、半透、正显驱动方式1/32DUTY,1/5BIAS视角方向6点背光方式侧部高亮白色LED,功耗仅为普通LED的1/5—1/10通讯方式串行、并口可选内置DC-DC转换电路,无需外加负压无需片选信号,简化软件设计工作温度:0℃-+55℃存储温度:-20℃-+60℃控制器接口信号说明如表
3.
63.7表
3.6RS和R/W的配合选择决定控制界面的4种模式RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据表
3.7E信号E状态执行动作结果高——低I/O缓冲——DR配合/W进行写数据或指令高DR——I/O缓冲配合R进行读数据或指令低/低——高无动作 忙标志:BFBF标志提供内部工作情况.BF=1表示模块在进行内部操作此时模块不接受外部指令和数据.BF=0时模块为准备状态随时可接受外部指令和数据利用STATUSRD指令可以将BF读到DB7总线从而检验模块之工作状态字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制DFF=1为开显示(DISPLAYONDDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFFDFF的状态是指令DISPLAYON/OFF和RST信号控制的
[10]显示数据RAM(DDRAM)模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型16*
8、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是
0000、
0002、
0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)字型产生RAMCGRAM字型产生RAM提供图象定义造字功能可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中地址计数器AC
[11]地址计数器是用来贮存DDRAM/CGRAM之一的地址它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置
3.
4.2液晶显示模块电路液晶显示模块以其微功耗、体积小、显示内容丰富、模块化、接口电路简单等诸多优点得到广泛应用液晶显示模块分字符型和点阵型两种前者只能显示常用的字符点阵型液晶显示模块除显示字符外还能显示各种图形和汉字如图
3.6所示,为液晶显示屏与单片机的连接电路图图
3.6液晶显示屏与单片机的连接电路
3.5键盘输入模块一般具有人机对话的单片机系统少不了会有键盘本设计采用四个按键,最佳的接口方案是独立式接法,即每一个I/O口上只接一个按键,按键的另一端接地独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下我们将按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无按键按下时I/O口保护高电平当有键按下时,此I/O口与地短路迫使I/O口为低电平按键释放后,与单片机连接的上拉电阻使I/O口仍然保持高电平我们所要做的就是在程序中查询此I/O口的电平状态就可以了解我们是否有按键动作了值得注意的是,我们在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的这种抖动一般在10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒级的单片机而言则是漫长的为了提高系统的稳定性,我们必须去除或避开它此处我采用软件去抖动,实现方法是先查询按键当有低电平出现时立即延时10~200毫秒以避开抖动,延时结束再读一次I/O口的值按键分工,从左至右依次为
1、
2、
3、4号按键,一号键模式键,
二、三号键为加减键,4号键为上水键图
3.7键盘接口电路
3.6继电器控制加热电路在实际生活当中,当遇到室外光强不足(阴天、下雨)时,对水箱的水进行电加热是很必要的,所以在控制系统中引进了继电器加热电路加热控制电路由单片机P1口的P
0.7控制通过单片机送给加热执行机构进行加热,电路驱动电磁锁吸合,从而达到加热的目的光耦可以隔离输入量与输出量,在本设计中起到隔离单片机与电磁继电器的作用当单片机发出开锁信号时,P
0.7口为低电平,此时光耦内部的发光二极管导通,接收三极管吸收光而导通,因此使继电器处于常开端即加热当输入密码错误时,输入端为高电平,电磁继电器的中心抽头由“常开”接到“常闭”,此时不加热加热电路如图
3.8所示图
3.8加热程序电路图
3.7水位检测接口电路蓄水箱水位和温度检测部分是实现温度智能控制的重要环节,只有准确地检测出水位和温度,才能通过软件计算提前开始辅助加热的预加热时间要实现辅助加热提前时间的精确计算,最好是采用连续液位传感器,但考虑系统成本,本设计仍采用分段式液位传感器通过软件来提高精度,在水位显示上也仍采用分段显示水位检测部分的硬件连接如图所示图
3.9水位检测电路图检测原理如下当水箱中无水时,8个非门由于设计需要,最后只完成6个均由1M欧姆电阻上拉成高电平,所以图中各“非”门CD4069输出均为低电平,LED1~LED8均不亮当水位高于“非”门1的输入探针时,由于水的导电作用,使“非”门1的输入变为低电平,所以其输出变为高电平,LED点亮,依此类推随着水位的上升,各“非”门输出相继为高电平,LED依次点亮这里要注意的是上拉电阻不能选择太小,因为水的电阻在100k8左右,所以上拉电阻选择太小的话,将在水位升高时,无法把“非”门输入端拉成低电平实验表明,上拉电阻选择在500k~1M欧姆左右能很好地满足电路的工作要求为了使80C51随时能够读出当前的水位情况,这里选用74LS244作为状态输入缓冲器通过74LS244把信息传给单片机
3.8水位控制电路加热控制电路由单片机P1口的P
0.6控制通过单片机送给加热执行机构进行加热,电路驱动电磁锁吸合,从而使发动机工作,达到上水的目的光耦可以隔离输入量与输出量,在本设计中起到隔离单片机与电磁继电器的作用当单片机发出开锁信号时,P
0.6口为低电平,此时光耦内部的的发光二极管导通,接收三极管吸收光而导通,因此使继电器处于常开端即上水当输入端为高电平,电磁继电器的中心抽头由“常开”接到“常闭”,此时不上水加热电路如图
3.10所示图
3.10水位控制电路图
3.9报警电路模块方案一9011的基极为高电平且两个三极管均导通,驱动扬声器工作,即报警否则输出低电平,不报警报警电路如图所示图
3.11报警电路图方案二该方案中采用简单的放大电路,信号通过7407驱动器后即送给蜂鸣器,且报警声音响亮,适合于报警,所以也实现了设计要求报警电路如图所示图
3.12报警电路二两种方案都各有优势,综合各方面因素考虑,此次设计采用方案一第4章太阳能热水器控制系统软件设计
4.1KEILuVISION3软件环境单片机开发中除必要的硬件外,同样离不开软件,本系统的软件编程设计是在Keil软件环境中完成的我们写的C语言、汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果使用C语言编程,那么Keil几乎就是不二之选即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令人事半功倍
[12]KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用用过汇编语言后再使用C来开发,体会更加深刻KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解在开发大型软件时更能体现高级语言的优势
4.2太阳能热水器控制系统软件设计流程图本课题设计的太阳能热水器控制系统的软件程序设计主要由
(1)初始化程序,
(2)扫描按键程序,
(3)按键处理子程序,
(4)读取水位信息、水箱温度和时间程序,
(6)调用显示子程序,六个部分组成系统总体流程图如图
4.1所示NY图
4.1系统总体流程图
4.3太阳能热水器控制系统软件功能的实施
4.
3.1初始化程序太阳能热水器控制系统在接通电源后,首先要对系统进行初始化初始化的过程包括启动DS1302,启动12864,对12864进行清屏初始化流程图如下图
4.2初始化程序流程图初始化程序清单如下voidstartvoid//初始化函数{unsignedchari;set_time0x8e0x00;//取消写保护set_time0x800x00;//启动时钟set_time0x840x00;//设置24小时模式set_time0x900xa5;//时钟时钟充电模式set_time0x8e0x80;//启动写保护RES1=0;RES1=1;dis_write_cmd0xaf;//启动12864clean;//清屏
4.
3.2按键检测及处理程序在太阳能热水器初始化完成之后,系统便会进入键盘扫描状态,此状态下,主控芯片AT89C51会不断扫描是否有键按下,即等待用户输入在检测到有键按下后,根据按下的次数(按一下设置“分”,按两下设置“时”,三下设置“星期”,以此类推),在运用“加”“减”分别设置按键检测及处理流程图如图所示(以按下“一下”为例)YNY图
4.3按键检测及处理程序流程图按键检测及处理程序清单如下while1//总循环{whilestate_button==0//状态0循环{…//无键按下的处理程序…}whilestate_button!=0//状态非0循环{set_time0x800x80;//启动时钟set_time0x8e0x00;//启动保护位ifstate_button==1//状态1设置分{iftime_jia==1//判断按钮加是否按下过{minute0++;//分操作下面所有的加减同理ifminute09//minute0最大为9,minute1最大为5{minute1++;minute0=0;ifminute15{minute1=0;}}time_jia=0;//按键清零表示已经执行完}iftime_jian==1{minute0--;ifminute00{minute1--;minute0=9;ifminute10{minute1=5;}}time_jian=0;}}
4.
3.3读取温度的程序本设计采用while循环,在没有键按下时,跳出while循环,进行下边的语句,即读取温度,并将其显示在12864上在读取的过程中,要注意温度的正负读取温度的流程图如图
4.4所示图
4.4读取温度流程图读取温度程序清单wendu_reset;//温度复位wendu_write0xcc;//跳过ROM搜索命令wendu_write0x44;//启动一次转换wendu_reset;//复位wendu_write0xcc;//跳过ROM搜索命令wendu_write0xbe;//发送读命令a=wendu_read;//读高字节8位b=wendu_read;//读低字节8位pn=b0x80;//判断温度正负ifpn==0//如果温度为正{t=b*256+a/16;//直接转化为十进制数}ifpn==0x80//如果温度为负{a=~a;//将数据取反b=~b;c=a+1;//低位加1ifc==0x00//当低位为255时,加1后为0,这时需进位{b++;}//向高位进1t=b*256+c/16;//再进行转换十进制第5章太阳能热水器控制系统整体调试调试分为硬件电路调试和系统调试硬件电路调试的主要任务是检查硬件电路是否有问题,也就是检查硬件电路是否能工作;系统调试的主要任务是在这种硬件条件下是否可以完成设计的要求在制作好PCB之后,紧接着就是插上元件调试硬件系统为了减少硬件调试的难度,在系统的硬件调试中采用分块调试方法,这样可以减少问题的积累,更加容易发现问题、解决问题调试单片机的最小配置时发现,不能正常下载程序,首先检查串口到单片机电路部分,用万用表检测发现是串口电路有短路现象去除错误后,发现仍然不能够下载,刷程序时无论怎么改变单片机的I/O口状态,单片机的各I/O始终为高,即单片机没有工作,可能是单片机的晶振没有起振,单片机没有稳定的时钟信号仔细检查发现,接在晶振旁边的瓷片电容是
0.01uf的104,还有单片机的EA端悬空未接对于接在旁边的电容,电容大有利于晶振的稳定,但不容易起振,电容小容易使晶振起振但稳定性差,104的电容显然过大,晶振没有起振,因此笔者将
0.01uF的两个电容改换成了20pF的两个起振电容对于内部有8K字节程序存储器的STC89C52来说,若电压引脚VCC接+5V,程序计数器PC的值在0至1FFFH之间时,CPU读取指令时访问内部的程序存储器;PC值大于1FFFH时,则访问外部的程序存储器如果EA接VSS(地),则内部的程序存储器被忽略,CPU总是从外部的程序存储器中取指令此时,EA脚悬空说明CPU不访问内部的程序存储器,所以写入它的程序不能正常运行当把EA脚接VCC后,系统工作正常
(一)键盘显示电路的调试在调试此部分之前先检查器件,四脚开关键按下后是否会自动弹起,不会弹起说明是坏的要及时更换对数码管首先判断数码管的极性是共阴还是共阳将万用表打到测试是否导通的端,同时将黑表笔接COM端,红表笔接其他任一端,相应的段位会亮则表示数码管是好的,且是共阴的;否则将表笔对换再测量有相应的段位有显示则是共阳的数码管之后便是对整个键盘显示电路的导通性进行测量,以防止在焊接时出现虑焊的情况,经测量,电路的导通性良好,没有出现虑焊的情况对电路检测好之后,笔者打开电源,数码管显示全0,说明电路及数码管没有问题
(二)温度采集模块的调试对于温度采集模块,因为采用的是数字化温度传感器DS18B20,硬件电路较为简单,只需要对电路的导通性进行测量即可经笔者用万用表对电路的导通性测量得知,并不存在虑焊的情况,电路是导通的第6章结论
(1)系统能实现的功能本系统通过单片机控制各个电路模块以实现对温度,水位的检测,以及对整个热水器的智能化控制
(2)系统功能测试设计前期通过KEIL软件和PROTEUS仿真软件的联调,对设计功能进行仿真,均达到了预期的设计效果,设计后期,硬件制作完毕后,将仿真成功后的程序通过单片机下载程序,写入单片机,再根据显示模块的各个端口连接方式,正确地将单片机跟显示模块连接,最后都实现了设计的功能
(3)系统功能分析该控制器和以往显示仪相比具有性能价格比高、温度控制与显示精度高、使用方便和性能稳定等优点单片机控制系统具有低价、智能的优势,能够根据需求的不同而作相应的调整,更加个性化同时,使用单片机控制系统能够节约能源,保护设备,延长设备的使用时间该热水器具备以下特点结构简单、运行可靠、操作维护简便;热源取之不尽用之不竭,不需要运输,节省燃料;无污染,不会对周围环境造成任何影响参考文献
[1]李念强等.单片机原理及应用[M].北京:机械工业出版社200730-40
[2]孙育才MCS-51系列单片微型计算机及其应用[M].第4版.南京:东南大学出版社199752-55
[3]张涛王金岗.单片机原理与接口技术[M].北京:冶金工业出版社200772-80
[4]阎石.数字电子技术基础[M].北京:高等教育出版社199753-57
[5]李广第等.单片机基础[M].北京:北京航空航天大学出版社200177-93
[6]王长胤文军.单片单板机原理及应用[M].武汉:武汉大学出版社199345-56
[7]殷为民.太阳能水温水位仪[J].家用电子19995137-38
[8]徐龙坤.辅助加热式太阳能热水器[J].家用电器19971529-10
[9]王俊杰.基于89C51单片机的太阳能热水器智能控制器的设计[J].郑州轻工业学院学报:自然科学版2005867-
68.
[10]张振荣晋明武王投平.MCS-51单片机原理及实用技术[M].北京:人民邮电出版社200064-120
[11]戴佳戴卫恒.51单片机C语言应用程序设计实例精讲[M].北京电子工业出版社200611-20
[12]周润景袁伟亭景晓松.Proteus在MCS-51ARM7系统中的应用百例[M].电子工业出版社200664-78
[13]宫亚梅.基于Proteus和Keil的单片机课程设计[J].济南职业学院学报.200851-3
[14]周航慈.单片机应用程序设计技术.北京航空航天大学出版社,
1998.2005
[15]PredictiveEnergyBalanceforSolarHotWaterSystemsCentreforSustainableEnergySystems[J].2005:115-130
[16]DreamtechSoftwareTeamProgrammingforEmbeddedSystems-CrackingtheCodeHungryMinds[J].
2002.4:33-42
[17]HeSZ.FuzzySelf-tuningofPIDController.FuzzyandSystem,19931致谢本次毕业设计是对所学知识的一次综合性运用其中包括对模拟电子技术基础、和数字电子技术基础、单片机等知识的运用从而完成了本次设计在设计的过程中发现了自身知识的不足,也发现我们必须具备专业基础知识以外,才能成功的设计出一件合格的东西这次毕业设计收获很多,体会也很深刻,并且对我们所学的东西也产生了浓厚的兴趣在设计过程中,也学会了很多新的东西,比如PROTEL软件绘制电路原理图和PCB图,以及一些仿真软件的应用,最典型的就是PROTEUS软件的应用,以及与KEIL软件的联合使用功能当然最重要的是学到了关于基本电子设计的一些基本方法,同时也加深了对一些常用的电子元件的理解及其基本用法的掌握除此之外,我觉得在这次设计的过程中,我发现团队精神的重要性,很多时候一个人的力量是有限的,一个人不可能什么都会,什么都能自己解决,还是有需要他人帮助的时候,我觉得人与人之间的相互帮助很有必要,这样不仅能帮助大家很快的解决问题,还能提高我们每个人的实际水平,也培养了我们的团队合作精神,这些能力对于我们今后的学习和工作都很有帮助由于时间关系,本次设计中还有不尽完善之处希望在以后的学习生涯中不断的完善和改进在本次设计过程中遇到不少问题,在刘丽伟老师和同学的帮助和配合下才顺利的完成了本次课程设计指导老师在我们做设计的过程中,给予了我们极大的帮助,不仅从知识方面引导了我们的设计思路,同时,在人生观上也给了我们不少的启示在此,我对老师表示深深的谢意附录系统原理图AT89C51单片机的控制DS18B20W温度采集电路水位检测无线电控制(键盘输入及显示)报警电路水位控制电路LED指示灯加热控制图
2.2硬件原理框图实时时钟模块P
1.01P
1.12P
1.23P
1.34P
1.45P
1.56P
1.67P
1.78RST9P
3.0/RXD10P
3.1/TXD11P
3.2/INT012P
3.3/INT13P
3.4/T014P
3.5/T115P
3.6/WR16P
3.7/RD17XTAL119P
2.0/A821P
2.1/A922P
2.2/A1023P
2.3/A1124P
2.4/A1225P
2.5/A1326P
2.6/A1427P
2.7/A1528PSEN29ALE30EA31P
0.7/AD732P
0.6/AD633P
0.5/AD534P
0.4/AD435P
0.3/AD336P
0.2/AD237P
0.1/AD138P
0.0/AD039XTAL21880C51C1C2Y1CRYSTALRRES2VCCRCVCCD0D1D2D3D4D5D6D7C3VCCY2CRYSTALVCC8IO6X12X23SCLK7VCC21RST5DS1302P31P32P33R1R2R3R4AN1AN2AN3AN4VCCp25p26p27p28NPNKRELAY-SPSTOPTOISO1220VVCCRRVCCNPNVCCVCCP07NPNKRELAY-SPSTOPTOISO1VCCRRNPNVCCP06VCCVCCQ1NPNR22LS1SPEAKERP35开始初始化扫描键盘,是否有按键读取水位信息和水箱温度调用键盘处理子程序调用显示子程序显示水温、时间初始化开始启动DS1302启动12864清屏开始扫描是否有按键按下一下(设置分)是否为“+”键“分”加1“分”加1复位读取温度数据判断正负转为十进制取反后,转为十进制。