基于单片机的太阳能热水器控制器_第1页
基于单片机的太阳能热水器控制器_第2页
基于单片机的太阳能热水器控制器_第3页
基于单片机的太阳能热水器控制器_第4页
基于单片机的太阳能热水器控制器_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1分类号:编号:毕业论文(设计)太阳能热水器控制器设计Thedesignofcontrollerforsolarwaterheater申请学位:工学学士院系:光电信息科学技术学院专业:姓名:学号:指导老师:太阳能热水器控制器设计姓名:导师:年05月日烟台大学

烟台大学毕业论文(设计)任务书院(系):光电信息科学技术学院姓名学号毕业届别专业毕业论文(设计)题目太阳能热水器控制器设计指导教师学历博士职称所学专业通信与信息系统主要内容:本文论述了基于C51单片机的太阳能热水器控制器的实现。用C51单片机设计一种太阳能热水器控制器,实现水温、水位及时间的实时显示以及水温、水位的自动控制等功能,另外还需要实现时间和水温设定的功能。基本要求:着重培养学生综合利用所学知识解决实际问题的能力以及查阅书籍资料、调查收集各种有用信息的能力。要求能够比较熟练掌握C51单片机、DS18B20温度测量芯片以及其他测量和显示元件的使用。另外,有利于培养学生的英文阅读、计算机操作和动手能力,撰写毕业设计论文的能力。主要参考文献:余锡存,曹国华.单片机原理及接口技术(第二版)[M].西安:西安电子科技大学出版社,2007赵建领,薛园园等.51单片机开发与应用技术详解[M]北京:电子工业出版社,2009.进度安排:第一阶段:1~3周向导师请教确定课题并查询资料。第二阶段:4~9周在导师的指导下确定设计方案和实现方法。第三阶段:10~13周根据方案完成软件仿真和实物焊接,并撰写毕业论文。第四阶段:14周定稿,打印论文并参加答辩。指导教师(签字):年月日院(系)意见:教学院长(主任)(签字):年月日备注:

[摘要]该太阳能热水器控制器是基于C51单片机设计和实施的,它以AT89C51单片机作为检测和控制中心,由主控芯片模块、DS18B20温度检测及显示模块、水位检测及显示模块、时钟模块、报警模块和电磁阀控制模块、辅助加热模块等模块组成。它通过DS18B20温度检测及显示模块实时检测和显示水温,通过水位检测及显示模块实时检测和显示水位,通过时钟模块实时显示时钟并在设定的时间给主控芯片特定的信号,通过电磁阀控制模块实现热水器的自动及手动上水,通过辅助加热模块实现太阳能热水器自动及手动加热,当水位过低且水温过高时通过报警模块报警,而主控芯片则负责协调其他各模块的工作。[关键词]太阳能热水器控制器;AT89C51单片机;DS18B20

[Abstract]ThedesigningofthissolarwaterheatercontrollerisbasedonC51single-chipmicrocomputer,TheAT89C51MCUisusedasit’sdetectionandcontrolcenter,Itconsistsofamaincontrolchipmodule,DS18B20temperaturedetectionanddisplaymodule,thewaterleveldetectionanddisplaymodule,clockmodule,alarmmoduleandtheelectromagneticvalvecontrolmodule,auxiliaryheatingmoduleandetc.ItisthroughtheDS18B20temperaturedetectionanddisplaymoduleDetectanddisplaythewatertemperatureintime.ItisthroughthewaterleveldetectionanddisplaymoduleDetectanddisplaythewaterlevelintime.Itisthroughtheclockmoduledisplaytimeandatthegiventime,itwillgivethemaincontrolchipmoduleaspecificsignal.Itisthroughtheelectromagneticvalvecontrolmoduletorealizetheautomaticandmanualwaterheater.Itisthroughtheauxiliaryheatingmoduletoheatwaterautomaticallyandmanually.whenthewaterlevelistoolowandthetemperatureistoohighthealarmmodulewillgiveanalarm,theresponsibilityofthemaincontrolchipistoCoordinatetheworkofothermodules.[Keywords]TheSolarwaterheatercontroller;AT89C51MCU;DS18B20PAGEPAGE1目录1绪论 11.1太阳能热水器应用的意义 11.2我国太阳能发展现状 389125449\h12系统设计及仿真软件 22.1系统的总体结构设计 22.2设计功能要求 2HYPERLINK\l"_Toc389125453"2.3设计思路 22.4仿真软件(proteus)简介 33AT89C51简介 43.1主要特性 43.2中断向量 43.3管脚说明 43.4内部结构 25459\h64控制器各模块电路设计 74.1主控芯片模块 74.1.1时钟电路 7HYPERLINK\l"_Toc389125463"4.1.2复位电路 84.1.3单片机管脚分配 94.2DS18B20温度检测及显示模块 94.2.1DS18B20芯片简介 104.2.274LS245简介 124.2.3LED数码管显示 134.3水位测量及显示模块 144.4报警模块 154.5辅助加热模块 164.5.1继电器工作原理 PAGEREF_Toc389125472\h164.5.2辅助加热模块工作原理 174.6电磁阀控制模块 174.6.1电磁阀工作原理 184.6.2电磁阀控制模块工作原理 184.7时钟模块 184.7.1电子表发声原理及控制器定时工作原理 195控制器软件程序设计 205.1软件设计分析 205.2主程序模块 205.3子程序模块 215.3.1DS18B20温度检测子程序设计 215.3.2DS18B20温度转化及显示子程序 225.3.3加热子程序设计 235.3.4上水子程序设计 245.4中断子程序设计 255.4.1外部中断0(设定温度+)子程序设计 255.4.2外部中断1(设定温度-)子程序设计 266调试与总结 276.1调试方法 PAGEREF_Toc389125491\h276.2遇到的问题及解决办法 276.3总结 28致谢 29HYPERLINK\l"_Toc389125495"参考文献 30附录 31烟台大学毕业论文(设计)1绪论1.1太阳能热水器应用的意义迈入21世纪以来,随着经济的急速发展,对自然资源的需求缺口越来越大,人口基数过大使得将在很长一段时间保持人口数量的增长,而经济的高发展速度也将持续对资源的供应提出考验。显而易见的,资源储量并不是无限的,若要保证经济的可持续发展,仅仅靠节约能源或是限制开采数量,并不是一个长久的解决办法,只有开发新的能源,才能从根本上解决发展与资源之间的矛盾。所以在今后,新能源必定将会有很大的发展空间,太阳能、风能、潮汐能,这些清洁能源是未来大规模利用的新趋势。[1]在各类能源中,太阳能以其清洁、无害、长久和普遍等特点,有极高的发展潜力,可以说是取之不尽用之不竭。虽然离太阳能的广泛利用还有很长的路要走,但是现在已经在不少地方开始使用,如常见的太阳能发电系统,太阳能热水系统,太阳能路灯、交通灯等等。我国目前太阳能产业规模已跃至世界第一,随着技术的日益成熟,太阳能相关的成熟产品造价也将随之降低,将更加广泛地在人们生产生活中普及,这同时也是解决越来越严重环境污染的一个极佳的解决方案。

在我们的生活中,最为我们所熟知的太阳能利用系统便是太阳能热水器,太阳能热水器同传统的热水器相比有着许多显著的特点。不仅节能环保,而且使用也非常方便。以其低廉的价格深受各层次消费者的青睐。随着太阳能热水器的大面积使用,太阳能的优势特点已广泛为人们所熟知,这也对以后的相关产品的生产推广起到了很好的宣传效应。大力开发和利用丰富的太阳能资源,对于我国的经济、社会可持续发展具有重大深远意义。[2]1.2我国太阳能发展现状我国太阳能热水产业的发展特点可以用“起步晚,发展快”来形容,虽然国内与于上世纪80年代才开始研究推广,但是历经多年的飞速发展,我国的太阳能产业已经占据了世界首位,其中热水器的产量占世界百分之五十以上,同时,中国国产太阳能产品在世界同类产品中也占据着很大的市场份额,并且市场占有率还在不断增长。[3]尽管有着如此迅猛的发展势头,但是需要指出的是,目前国内的能与太阳能热水器相配置的控制器的功能却并不完善,在市面上很多同类的太阳能热水器产品,控制系统简单,功能不全,大多数只具有设定水温,显示水温这两个功能,较为智能化的产品还尚未推广应用,有些功能还处于研发阶段。因此设计出一款具有温度控制功能和水位控制功能的产品,将很具有实际意义。这样的控制器,将能够解决天气原因导致的光线不足问题导致热水器水温过低的问题,并且因为有了水位控制功能,就可以解决当水位达到一定高度时不能自动开始或停止供水等等问题。

2系统设计及仿真软件2.1系统的总体结构设计系统总体结构设计如图2.1,该系统包括保温箱、排气管、集热管、溢流管、上下水管、调节阀等。图2.1系统总体结构设计2.2设计功能要求该太阳能热水器的控制器不但需要具有水位、水温及时间的实时显示功能,而且需要具有水位、水温的自动控制功能,必要时,还需要能够实现对时间和水温进行设定等功能。当蓄水箱水位低于40%时能够实现自动上水,当设定时间到且水位低于蓄水箱水位90%时能够实现自动上水,当上水到达规定的水位时能够实现自动停止上水,当水位界于高低水位之间时,用户可以通过按键操作手动上水、停水;当设定时间到且水温低于规定值时,能够实现自动加热。必要时还可以对太阳能热水器进行手动加热和上水,禁止高温空晒后进水以及淋浴时禁止上水等功能。2.3设计思路该太阳能热水器控制器是基于C51单片机设计和实施的,它以AT89C51单片机作为检测和控制中心,由主控芯片模块、DS18B20温度检测及显示模块、水位检测及显示模块、时钟模块、报警模块和电磁阀控制模块、辅助加热模块等模块组成。它通过DS18B20温度检测及显示模块实时检测和显示水温,通过水位检测及显示模块实时检测和显示水位,通过时钟模块实时显示时钟并在设定的时间给主控芯片特定的信号,通过电磁阀控制模块实现热水器的自动及手动上水,通过辅助加热模块实现太阳能热水器自动及手动加热,当水位过低且水温过高时通过报警模块报警,而主控芯片则负责协调其他各模块的工作。2.4仿真软件(proteus)简介Proteus可以仿真单片机,兼具EDA软件的仿真功能,还能一部分外围器件,是当前使用最广,用户评价最好的仿真工具。可以从原理图设计,程序编写调试,再到与外围电路同步仿真,提供与PCB板设计的简单切换,可以由最初的模拟概型一直到产品的模拟仿真。该软件也是第一款融合电路原理图设计,PCB板设计,产品生产前的仿真三者结合的开发平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430,Cortex,DSP等系列处理器,截止到现在,依然在不断增加其它系列处理器模型。程序编译支持Keil和MPLAB软件编译器。[4]Proteus软件具有其它EDA工具软件的功能:

1.原理布图

2.PCB自动或人工布线3.SPICE电路仿真革命性的特点Proteus的工作过程:在开始菜单中选择proteus文件夹,单击文件夹中的ISIS图标进入proteus仿真软件的主界面。在工作之前,先要设置捕捉对齐、颜色、图形界面大小等项目。工作时,先要单击工具栏中的P按钮进入元件选择对话框(pickdevices),在对话框keyword中输入所需元件的关键字(比如当需要电阻时输入“res”),在results一栏中双击选出所需要的元器件(注意当选中元器件时在pickdevices对话框中右侧两栏中会出现该元器件在仿真电路图和PCB板上的预览图,根据此预览图进行选择),选中的元件会自动出现在工作界面P按钮下面。然后需要进行仿真电路图的绘制(具体做法为:在P按钮下面单击所需要的元器件即选中此元器件,根据实验原理图把选中的元器件放在工作界面的适当位置,双击工作界面中的元器件,在出现的对话框中修改元器件的参数,重复以上步骤直到所有的元器件都摆放到工作界面上,然后单击各元器件的引脚进行连线。至此仿真电路图制作完成。然后进行程序的编写,在程序编写时需要使用专门的程序编写器(比如keil软件等)来编写并编译连接运行,生成hex文件。接下来需要把程序存入相应的芯片中,具体做法是:双击目标芯片,在出现的对话框中“programfile”中选择相应的程序,然后点击ok按钮即可。最后需要运行,在此步骤秩序点击proteus工作界面左下方的play按钮即可。

3AT89C51简介3.1主要特性•与MCS-51兼容•具有4K字节的可重复编程的flash,可写入/抹掉数据1000次以上,写入的数据能保存10年以上•操作频率:0Hz~24MHz•128×8位内部RAM•32条可规划的I/O线•5个中断向量地址•可编程串行通道•需要振荡电路和时钟电路[5]3.2中断向量中断向量见图3.1[6]图3.1中断向量表3.3管脚说明AT89C51引脚见图3.2[7]VCC:供电电压。GND:接地。P0管脚、P1管脚、P2管脚、P3管脚都是8位双向I/O口,其中P3管脚还有第二功能。图3.2AT89C51芯片引脚图 P3管脚第二功能见图3.3。RST:复位输入端。ALE/:地址锁存信号线。图3.3P3口第二功能说明:外部程序存储器读选通端。/VPP:访问内部程序存储器控制端XTAL1、XTAL2:震荡电路输入端。3.4内部结构51单片机内部机构如图3.4[8]图3.451单片机内部结构框图

4控制器各模块电路设计4.1主控芯片模块单片机只有40个管脚,其中I/O管脚只有32个,必须合理地分配单片机管脚,否则很容易造成单片机管脚的不够用。另外,单片机运行需要时钟电路、复位电路、电源、地线等,这些电路也需要在单片机主控芯片里面设计。主控芯片模块proteus仿真图如图4.1。[9]图4.1主控芯片模块proteus仿真图4.1.1时钟电路单片机的运行需要时钟电路的支持,单片机时钟电路是配合外部晶体实现振荡的电路,它由一个晶振和两个电容组成,其组成图如图4.2,它的两端分别接在单片机的XTAL1和XTAL2管脚。它可以为单片机提供运行时钟,如果运行时钟为0的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不能正常工作,C51单片机的支持的时钟频率为0~24MHz。图4.2单片机时钟电路4.1.2复位电路在单片机在使用过程中有时(比如上电瞬间以及运行中出现错误的时候)需要使单片机从开始状态重新运行,这时就需要单片机的复位电路了。它可以使单片机内部各寄存器的值变为初始状态,复位电路如图4.3。它可以在单片机上电瞬间和复位开关按下的瞬间给单片机RESET管脚加上一个程指数函数的电平信号,当此电平信号能够在单片机的RESET管脚保持两个机器周期以上的高电平时,单片机就能完成复位操作。[10]图4.3单片机复位电路4.1.3单片机管脚分配单片机管脚分配如图4.4。

图4.4单片机管脚分配4.2DS18B20温度检测及显示模块蓄水箱水温检测电路使用单总线DS18B20芯片,它可以将温度信号转化成脉冲信号进而转化成水温高低的信号。DS18B20的DQ端与单片机的P3.7口相连,它可以将水温大小直接以数值的方式存放在其内部的RAM中,单片机可以通过DS18B20的DQ引脚直接读取其内部RAM中存放的温度值。在水温的显示上,本设计采用两位LED数码管来实现,LED数码管的段选信号由单片机的P0口来发出,其位选信号由单片机的P2.6、P2.7管脚发出。水温检测及显示模块的proteus电路仿真如图4.5。图4.5温度检测及显示模块proteus仿真图4.2.1DS18B20芯片简介DS18B20是美国DALLAS公司推出的一种温度传感器,它能比较准确的测量-55~125℃之间的温度。相对于以前的热敏电阻等温度传感器,DS18B20更加智能,它能够直接测出被测环境的温度并以数值方式存在其内部的RAM中,当有需要时,它可以通过单总线实现单片机等对DS18B20内部RAM中数据的读取。DS18B20有如下性能特点:单总线结构设计,仅需要一个引脚即可完成数据在DS18B20和单片机之间的通信。每个DS18B20都有独一无二的序列号,可以在一条线上并联多个DS18B20芯片。测量温度范围-55℃~+125℃。分辨率可调。DS18B20内部结构[11]DS18B20内部结构如图4.6。图4.6DS18B20内部结构框图DS18B20引脚DS18B20引脚功能描述见图4.7。序号名称引脚功能描述1GND地信号2DQ数字信号输入输出引脚3VDD供电电源输入端图4.7DS18B20各引脚功能DS18B20转换成的温度数据格式[12]当DS18B20接到温度转换命令时它就可以将测得的温度信号转换成温度值并以16位带符号扩展的二进制补码形式存储在其高速缓存RAM中,其温度值格式如图4.8。图4.8DS18B20温度数据格式单片机可以通过DS18B20的DQ引脚直接取RAM中温度的值,读取时,先读取低位数据,然后读取高位数据。在DS18B20温度数据格式中,当S=0时表示此时的温度值为正值,当S=1时表示此时温度为负值。DS18B20ROM命令[13]DS18B20的一系列操作基本都是通过ROM命令来实现的,DS18B20的ROM命令见图4.9。图4.9DS18B20的ROM命令4.2.274LS245简介74LS245为8位双向3态缓冲电路,主要用途为数据的双向缓冲,以增强芯片的驱动能力。[14]74LS245真值表如图4.10所示。输入输出DIRLL从B端到A端进行数据传输LH从B端到A端进行数据传输H×高阻态图4.1074LS245真值表4.2.3LED数码管显示LED数码管是由八个发光二极管排列在一起并相互连接组成的,根据其连接方法的不同,LED数码管可以分为共阴极和共阳极两种连接方法。两种接法电路图如图4.11。图4.11LED数码管及接线方法当把数码管中各发光二极管的阴极连接在一块并与地相连,通过从各发光二极管阳极是否接电源来控制发光二极管的亮灭时成为共阴极接法。同理,当把数码管中各发光二极管阳极接在一块并与电源相连,通过在各发光二极管阴极是否接地来控制各发光二极管的亮灭时称为共阳极接法。不同的接法所需要点亮电平是不一样的,所以在使用数码管显示时,一定要注意区分这两种接法。当然为了显示数字或字符,需要对数字或字符进行编码,本设计采用共阴极LED数码管显示。LED数码管显示方式有两种,即静态显示方式和动态显示方式。静态显示就是每个数码管都需要连接一个8位的数据线,通过该8位数据线发送数据来保持显示的字符,当向数码管送入一次8位数据时数码管就会一直显示该字符,如果需要改变需要显示的字符则需要重新给数码管输入另一个8位数据。动态显示就是通过一定的操作使各个数码管依次点亮,利用发光二极管的余晖效应和人眼的视觉暂留现象使人的感觉就像是同时点亮各个数码管一样。动态显示的亮度比静态显示稍微差一下,程序上稍微麻烦一些,占用的CPU时间长点,但当数码管位数比较多时需要的管脚位数明显减少,硬件电路会大大简化。由于单片机输出管脚有限,为了节省单片机管脚,本设计采用动态显示方式。4.3水位测量及显示模块蓄水箱水位是智能控制的一个重要参数,是实现智能控制的重要依据,只有准确检测出水箱水位才能更好地实现水位地显示以及蓄水箱的上水、停水等操作。要实现水位地精确检测最好采用连续液位传感器,但考虑到系统成本及使用范围,本系统在进行水位检测时仍然采用分段式液位传感器(即在蓄水箱不同的位置放入水位探针),在水位显示上采用由5个发光二极管组成的分段式液位显示器。水位检测及显示电路图如图4.12。图4.12水位检测及显示电路图检测原理:把五个金属水位探针分别固定在水箱的五个位置上,金属探针通过一个1M的电阻(即上拉电阻)和+5V电源相连,水箱里的水通过导线和地相连。当金属探针在水面以下时,+5V电源、上拉电阻、水箱里的水、地等组成一个回路,由于水的电阻远比1M小,所以此时探针处电平为低电平。这个低电平通过一个反相器(非门)后变为高电平,这个高电平通过发光二极管、500Ω的电阻放电,使得发光二极管点亮,显示此时该液位有水。当金属探针在水面以上时,金属探针处电平为高电平,该高电平经过反相器时变为低电平,低电平不能使发光二极管发光,从而显示该液位没有水。至此,水位的显示完成。水位测量及显示模块proteus仿真图如图4.13。图4.13水位测量及显示模块proteus仿真图本proteus仿真图使用按键开关代替水和+5V电源、1M电阻及地构成回路,当按键按下时代表此位置处有水,当按键没有按下时代表此水位处没有水。需要注意的是,上拉电阻不宜选的太小,因为水是有电阻的,上拉电阻选的太小会导致当探针在水面以下时探针输出低电平特性不明显,此时很容易导致液位显示上出现错误。位置最高到位置最低处的探针所测出的电平经反相器后会通过导线依次送到单片机的P2.0到P2.4管脚,经单片机接收、处理,实现水位控制的操作。4.4报警模块太阳能热水器通常对蓄水箱内的水位有一定的要求,当水箱水位过低时,很容易给人们的正常生活带来不便,所以,当水位过低时能及时让人们知道就显得比较重要,报警模块正是基于此种原因设计的。报警模块的proteus仿真图如图4.14。图4.14报警模块的proteus仿真图检测及报警原理:当水位过低时,单片机相应管脚被清零,使得单片机通过P1.5口输出一系列脉冲波。脉冲波经由Q1、R1组成的放大电路后作用于蜂鸣器BUZI的线圈上,线圈产生变化的磁场带动蜂鸣器纸盆震动从而发出声音。4.5辅助加热模块当光照不足时,太阳能热水器的水温很难达到指定的要求,为了不影响人们的正常使用,辅助加热设备就显得尤为重要了。辅助加热模块的proteus电路仿真图如图4.15。图4.15辅助加热模块的proteus电路仿真图4.5.1继电器工作原理继电器工作原理图如图4.16所示。[15]图4.16继电器工作原理图当继电器的控制回路没有电流流过时,继电器的衔铁在弹簧的拉力作用下右端上翘,触点3与触点5断开,与触点4结合。当有电流流过继电器的控制回路(即由导线和线圈组成的电磁铁)时,电流就会在在电磁铁上产生磁场,此时,衔铁会被电磁铁吸引而下降,使得触点3与触点4分离,与触点5连接。如果在端点3和端点5接上其他电路组成被控回路就会出现当有电流流过控制回路时被控回路导通,当没有电流流过控制回路时被控回路断开。4.5.2辅助加热模块工作原理当加热按钮没有按下时,此辅助加热模块为自动控制模式。在自动控制模式下,当设定的时间到时,单片机会自动对蓄水箱的水温进行判断。当水温高于设定值时,P1.1口输出为高电平,三极管Q1集电极和发射极断开,此时,输入回路中没有电流为零,继电器被控回路断开,加热电阻不工作。当P1.1口输出为低电平时,三极管Q1集电极和发射极导通,+5V电源经电阻R1,继电器控制回路、三极管Q1和地相连,输入回路导通,此时,继电器被控回路闭合,220V交流电源经继电器被控回路给加热电阻加热,从而使水温升高。当临时(不是设定时间)需要热水时可以通过加热按钮进行加热,此时,只需按下加热按钮即可对蓄水箱的水进行加热。4.6电磁阀控制模块电磁阀是把电信号转化成水龙头开关信号的装置,是实现水位智能控制不可缺少的一部分。电磁阀从原理上分为直动式、分步直动式和先导式三类电磁阀,本设计采用直动式电磁阀。电磁阀控制模块proteus仿真如图4.17。图4.17电磁阀控制模块proteus仿真电路图继电器工作原理已在辅助加热模块介绍,此处不再叙述4.6.1电磁阀工作原理电磁阀工作原理如图4.18。图4.18电磁阀工作原理图当电磁阀不通电时,活动铁心在弹簧的弹力作用下上升,入口和出口被阀门隔开,水被阻断;当通电时,活动铁心在线圈产生的磁场作用下下落,此时入口和出口导通,水从入口经电磁阀流向出口,完成上水。4.6.2电磁阀控制模块工作原理在本设计中,此电磁阀控制模块分为自动控制和手动控制两种工作情况:当上水按键开关断开且淋浴开关闭合时电磁阀控制模块为自动控制模式,此时当单片机P1.4口输出为高电平时,继电器的输入端输入电流为零,继电器输出端开路,电磁阀所在电路开路,电磁阀关闭;当单片机P1.4口输出为低电平时,继电器输入端通过电阻、三极管和电源、地相连,此时,输入回路有输入电流,使得继电器输出回路闭合,电磁阀所在电路导通,电磁阀打开。当上水按键开关直接闭合且淋浴开关闭合时,电磁阀通过按键开关直接和220V电源相连,此时电磁阀所在电路导通,电磁阀打开。另外,为了避免淋浴时因水位偏低而导致热水器直接上水,本模块加了一个淋浴状态开关,当淋浴状态打开(淋浴开关断开)时,直接断开电磁阀开关,此时无论水位多么低都不会上水,当淋浴状态关闭(淋浴开关闭合)时,可以选择自动控制和手动控制两种模式。4.7时钟模块时间是实现热水器控制器定时上水、定时加热的重要参考,所以设置时钟模块是非常有必要的。时钟模块可以通过单片机设置一个数字时钟来实现,也可以时钟芯片(比如DS1302)实现,还可以通过外接具有定时功能的电子表来实现。考虑到单片机管脚的数量限制和设计的难易程度,本设计采用外接电子表的方式来实现定时上水、定时加热。4.7.1电子表发声原理及控制器定时工作原理电子表里面装有压电陶瓷片,压电陶瓷片是一种电子发音元件,在两个电极中间放入压电陶瓷介质材料,当设定时间到时,会在压电陶瓷片的两个电极上加上特定的交流信号,压电陶瓷片就会根据所加信号的大小和频率震动,从而发出声音。本设计中会把这个电极信号接在单片机的P1.0管脚,当该管脚的电平是低电平时可以给单片机一个触发信号,经单片机处理,使得加热设备开始工作;同理,当给单片机的P1.3管脚加上一个低电平时同样能给单片机一个触发信号,经单片机处理后,使得上水设备开始工作。

5控制器软件程序设计5.1软件设计分析软件是系统的指挥中心,由软件来配合硬件来完成电子设备特定的功能是目前电子设备的普遍规律。本系统同样要求软件和硬件两部分协调工作才能所完:由硬件电路完成数据的采集、显示以及对电磁阀和蜂鸣器的控制,由软件来实现数据的判断、处理等。由此可见,软件和硬件一样,都是该系统正常工作所必须的一部分。软件相对于硬件电路来说具有更高的性价比,并且更容易实现,为了充分发挥C51单片机的优良的性能价格比,我们在进行系统设计时,更倾向于使硬件电路“软件化”,即通过编程的方法使硬件电路简化。考虑到C语言诸多优良特性,本设计采用C语言编写,为了增加系统的实时性,本设计对于偶然事件的处理采用中断的方式来进行处理。在电路设计时我们采用模块化设计,同理,在软件设计时,我们也采用模块化设计。首先需要编写出大概的主程序,然后需要找出所设计的子程序并对子程序进行逐个分析和设计,编写出子程序后应给予每个子程序语法检验以确定子程序是不是有语法错误,接下来需要把子程序和主程序以及一些的声明函数等进行合理的检查和修改直到没有语法错误为止,再然后对偶然事件需要进行中断处理函数的编写。最后需要对整个程序进行编译检查以确定是否有语法错误,如果有语法错误需要对程序进行改正,如果没有可以把程序烤到单片机里来检验程序的正确与否。[16]5.2主程序模块主程序需要完成对单片机端口的初始化,开外部中断0,开外部中断1等,此外,还包括温度数据读取、温度数据显示、水位数据读取以及对热水器加热、上水等操作。其流程图如图5.1所示。图5.1主程序模块流程图5.3子程序模块子程序是指能够实现某一特定功能并能被其他程序调用的一段程序。采用子程序结构可以使程序得到简化,便于进行调试,并可实现程序的模块化,本设计将采用子程序模块的设计来实现部分功能。5.3.1DS18B20温度检测子程序设计DS18B20温度检测模块的子程序流程图如图5.2,它包括对DS18B20的初始化、发ROM命令、发温度转化命令、读存储器等操作。图5.2DS18B20温度检测流程图5.3.2DS18B20温度转化及显示子程序DS18B20温度转化及显示子程序流程图如图5.3,它包括读取温度值、对温度值得判断、区分温度的十位和个位数据、显示十位数据、显示个位数据等操作。开始开始读温度值温度值大于等于100℃或小于0℃温度十位和个位数据都置“-”区分温度的十位数据区分温度的个位数据显示温度十位数据显示温度个位数据返回是否图5.3DS18B20温度转化及显示流程图5.3.3加热子程序设计当设定时间到时,外部时钟会在单片机的P1.0管脚给单片机一个触发信号,使得单片机执行加热子程序。加热子程序流程图如图5.4。图5.4加热子程序流程图5.3.4上水子程序设计同加热子程序一样,当设定时间到时,外部时钟会在单片机的P1.3管脚给单片机一个触发信号,使得单片机执行上水子程序。上水子程序流程图如图5.5。图5.5上水子程序流程图5.4中断子程序设计为了保证系统的实时性,本设计有一些功能是通过中断来实现的,这就要求在软件程序设计里面需要有专门的中断服务子程序的设计。本设计采用了两个中断服务,包括外部中断0和外部中断1。其中外部中断0用作增加设定的温度值,外部中断1用作减小设定的温度值。5.4.1外部中断0(设定温度+)子程序设计外部中断0负责使设定的温度值增加,每当执行一次外部中断0,所设定的温度值就会增加1。外部中断0(设定温度+)子程序流程图如图5.6。图5.6外部中断0(设定温度+)子程序流程图5.4.2外部中断1(设定温度-)子程序设计同外部中断0相对应,外部中断1用作使设定的温度值减小。每当执行一次外部中断1,所设定的温度值就会自动减1,当设定温度值减小到30℃一下时设定温度值自动变为99℃。外部中断1(设定温度-)子程序流程图如图5.7。图5.7外部中断1(设定温度-)子程序流程图6调试与总结6.1调试方法为了节省人力、物力,在正式调试之前往往会对电路进行仿真操作。所谓的仿真操作就是使用专门用于仿真的仿真软件对系统的硬件电路图及程序进行仿真。如果仿真结果满足我们的要求,那么我们就可以进行硬件电路的制作了,如果仿真结果不能满足我们的要求,那么我们就需要重新对程序及相关的硬件进行设计。本设计使用proteus对系统的各部分和整个系统进行仿真。具体做法为:根据系统要求用proteus画出整体系统的仿真电路图(可以先一个模块一个模块的画,然后在组装在一块)。2、根据系统要求及画出的仿真电路图编写程序(本设计使用C语言编写),并用keil软件进行编译,生成HEX文件。把生成的HEX文件下载到对应的单片机中(具体做法为:在proteus仿真电路图中双击相应的单片机会出现“EditComponent”对话框,在此对话框中programFile一栏中选择所需的HEX文件,然后点击该对话框右上角的ok按钮即可),然后点击仿真电路图界面左下角的play按钮即可进行电路仿真。在完成系统的仿真操作后就需要对系统进行调试了。调试可以分为硬件调试和系统调试两部分。硬件调试主要是对硬件部分进行调试,看看所设计的硬件能否完成我们期望的功能,而系统调试主要是看看系统能否按照预期进行工作。在制作完成PCB板之后就可以进行硬件部分的调试了。 在制作完PCB板之后就可以进行硬件电路调试了。在进行硬件电路调试之前需要先对各元器件进行检查,对于有问题的元器件需要及时替换。在检查完元器件之后就可以往PCB板上查元器件了。为了降低硬件调试的难度,便于更好的发现问题,在硬件调试过程中采用分块调试的方法。 在完成硬件电路调试之后就需要对系统进行调试了。所谓系统调试就是把提前编译好的程序下载单片机中,对系统的整体性能进行观察、调试。6.2遇到的问题及解决办法在进行proteus各模块仿真电路图设计时有部分元器件(比如电磁阀、加热装置等)在元件库中找不到。解决方法:用其他有相似特点的元件代替,并将此元件的参数修改一下。在进行proteus总体仿真电路设计时,有很多现象(比如:电磁阀的通断、水位的高低等)不容易观察或不容易操作。解决方法:用发光二极管、按键开关代替这些不容易观察或不容易操作的现象。在程序设计时对DS18B20的程序设计总是弄不对。解决方法:参考其他人对这部分程序的编写,然后按照自己的要求和DS18B20的原理进行修改。在程序设计过程中,对DS18B20测出的温度进行转化方面出现失误:没有注意DS18B20温度数据是包含小数部分的温度而导致在温度转化时出现错误。解决方法:在对DS18B20结构及原理仔细分析的基础上对设计的程序进行修改,首先去除温度的小数部分,然后吧温度的个位数部分和十位数部分分别放在一个数组的两个元素中。在系统调试中发现温度显示时总是个位数在前,十位数在后,给人的感觉很别扭。解决方法有两个:一、在温度数据的处理子程序中把个位数据和十位数据处理的语句调换一下。二、在硬件电路中把两个LED数码管位选信号输入端调换一下。本设计采用第一种方法,即在程序处理方面做改变。6.3总结太阳能热水器控制器是对太阳能热水器进行控制的一种装置,它需要能够实现对热水器水温、水位的控制。在本设计的过程中,我先是对太阳能热水器需要实现的功能进行分析,然后按照需要实现的功能按照模块设计的思想进行设计,接下来把各模块组合起来形成一个系统,用proteus对该系统进行仿真,最后进行实际电路连接。经过以上各个步骤的实际操作,我们可以看出,本设计是可行的。本设计中我用的了单片机、C语言、模电、数电、电路分析等多门课程,可以说正是在这些知识的支撑下我才能顺利完成本设计。在进行本设计的过程中,我较深刻理解了能够综合运用知识的重要性,当然,本设计对我综合运用能力也有一定程度的提高。另外,在进行本设计的过程中,我的交流能力也有一定程度的提高。在本设计中,我遇到过很多问题,正是与老师、学长、同学的交流给我解决这些问题很大的启发,使我能够顺利完成本设计。

致谢对于即将毕业的我们来说,本设计的完成就基本意味着大学学习生活的结束。离别时刻就要到来,而我也将要开始我新一段的学习生活。此时此刻难免会有各种思绪,其中最强烈的莫过于感恩了。大学四年不算太长,但在这四年里我却完成从稚嫩到成熟,由懵懂到理智的成功蜕变。犹记得刚上大一时对未来的迷茫,对生活的不知所措、对专业知识的一清二白,在看看现在的对未来的憧憬与信心,对生活的游刃有余,对专业基本知识的胸有成竹,大学给与我了太多东西,因此,在这里我首先要感谢我的母校——烟台大学。“出门遇贵人”,在这所大学里我遇到了太多太多这样的贵人,正是这些贵人让我的大学收获非常丰富,这些人也是我要感激的。首先要说感谢的是我的毕业设计指导老师——刘云学老师,在我做毕业设计时是你给我提供了无私的指导和帮助。其次我要感谢大学里的其他老师,是你们让我学会了如何学习,如何做人。再次还要感谢那些给过我指引的学长和学姐们,尤其要感谢在我论文写作过程中给我指导的岳峰学长,正是你们对我无私的引导才使得我的大学生活不再那么茫然。当然还要感谢我那些可爱的同学们,在我遇困难的时候是你们在陪伴着我,当我开心的时候是你们在分享我的欢乐,在论文的创作过程中也是你们给提供了很多帮助。本次毕业设计将会在我的经历上留下浓重的一笔,在此过程中,我不仅学到了很多新的实用的知识技术,收获了不少经验,最重要的是学到了解决问题的办法及途径,让我今后在遇到这样的课题能够有章可循。

参考文献[1]张才忠.真空管太阳能热水器热性能分析与参数化设计研究.济南:山东大学学报,2006[2]胡润青.蓬勃发展的太阳能热水器产业.北京:建设科技杂志,2006[3]张媛等.太阳能热水器的发展前景.天津:天津建设科技,2009年1期[4]侯玉宝等.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社,2008[5]余锡存,曹国华.单片机原理及接口技术(第二版)[M].西安:西安电子科技大学出版社,2007[6]赵建领,薛园园等.51单片机开发与应用技术详解[M]北京:电子工业出版社,2009[7]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004[8]李群芳等.单片机微型计算机与接口技术(第2版)[M].北京:电子工业出版社,2005.1[9]宁成军等,基于Proteus和Keil接口的单片机外围硬件电路仿真,北京:现代电子技术出版社,2006

[10]楼然苗,李光飞.单片机课程设计指导(第2版)[M].北京:北京航空航天大学出版社,2012.1[11]李华等.MCS-51系列单片机应用系统设计[M]北京:北京航空航天大学出版社,1995[12]杨居义主编.单片机课程设计指导[M].北京:清华大学出版,2009.9[13]80C51

8bit

flash

microcontroller

family

P89C51RB2/P89C51RC2/P89C51RD2.

Data

Book,

Philips

Semicon-ductors,

2001,6(1).[14]康华光,陈大钦.电子技术基础数字部分(第四版)[M].北京:高等教育出版社,2001.6[15]齐玲,继电器综合参数检测系统[J]河北:河北工业大学学报,2009[16]周润景等,基于PROTEUS的电路及单片机系统设计与仿真.北京:北京航空航天大学出版社,2006.[17]马忠梅等.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003.11.

附录本设计程序如下:[17]/***************************************************/#include<reg51.h>#include<intrins.h>#defineDisdataP0#defineucharunsignedchar#defineuintunsignedintsbitb20=P3^7;sbitp20=P2^0;sbitp21=P2^1;sbitp22=P2^2;sbitp23=P2^3;sbitp24=P2^4;sbitp25=P2^5;sbitp26=P2^6;sbitp27=P2^7;sbitbeet=P1^5;sbitheat=P1^0;sbitp11=P1^1;sbitqxjr=P1^2;sbitadd=P1^3;sbitp14=P1^4;sbitqxss=P1^6;uchara=35;uinttemp,b,wd,h;bitlock0=1;//加热标志位bitlock1=1;ucharcodedis[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};uchardatatemp_data[3]={0x00,0x000,0x00};uintkey_[2]={5,0};/*****************11us延时函数*************************/voiddelay(uintt){for(;t>0;t--);}/******************1ms延时函数*****************************/voiddelay1ms(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }/****************发音函数***************************/voidplay(uchart){ uchari; for(i=0;i<1000;i++) { beet=~beet; delay1ms(t); } beet=0;}/****************显示扫描函数***************************/scan(){ uintk=0; Disdata=~dis[temp_data[k]]; p26=0; p27=1; delay1ms(5); k++; Disdata=~dis[temp_data[k]]; p26=1; p27=0; delay1ms(5); p26=1; p27=1;}/*********************预置温度******************************/voidyzwd(uintb){ Disdata=~dis[b%10]; p26=0; p27=1; delay1ms(5); Disdata=~dis[b/10]; p26=1; p27=0; delay1ms(5); p26=1; p27=1;}/****************DS18B20复位函数************************/ow_reset(void){ charpresence=1; while(presence) { while(presence) { b20=1;_nop_();_nop_(); b20=0; delay(50); b20=1; delay(6); presence=b20; } delay(45); presence=~b20; } b20=1;}/****************DS18B20写命令函数************************/voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){ b20=1;_nop_();_nop_(); b20=0;_nop_();_nop_();_nop_();_nop_(); b20=val&0x01; delay(6); val=val/2;}b20=1;delay(1);/

温馨提示

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

评论

0/150

提交评论