036 基于AT89C51单片机的太阳能热水器自动控制系统
                    联系方式 Email: lw510@qq.com      QQ: 497053418       MSN: lw510@qq.com
以下仅为该设计的基本说明介绍,若需要完整的设计和论文,建议您购买本设计.
036 基于AT89C51单片机的太阳能热水器自动控制系统样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
 

本系统开发工具:单片机/汇编
本设计包含内容:源代码+毕业论文+开题报告+答辩稿
论文大概:
 
 

摘    要
随着人们生活水平的提高,各种热水器的使用已相当普及。与之相配套的控制仪也相继问世。然而,目前市场上的各种热水器控制电路还与理想要求相差甚远。消费者需要真正的“自动”控制,以实现使用的最简单化。就像家用电视机、电冰箱一样,接通电源、设定完毕就不用再操心了。
本次毕业设计运用AT89C51单片机设计了一种自动控制电路,该电路用于太阳热水器,能实现在用水时,若日晒水温达不到设定值,则电加热自动补温。从而实现了热水器的自动及节能。本文详细介绍了基于单片机的太阳能热水器自动控制系统组成、硬件设计。实现了温度和水位参数的实时显示,而且具有温度设定、水位设定与控制功能,停电后再来电时也不用重新设定,具有故障报警和故障自处理功能,良好的稳定性和抗干扰性能。
 本文详细介绍了该控制系统的硬件设计过程及软件、硬件调试过程。
 

关键词:单片机;自动控制;太阳能热水器;软件调试
 
 
 
 
 
1.1 Abstract
 Along with the people living standard enhancement, each kind of water heater use quite popularized.One after another is also published with it necessary control meter.However, in the market each kind of water heater control circuit also with ideally requests to be far from at present.The consumer needs truely “automatic” the control, realizes the use to simplify.On the home use television, the electric refrigerator were likely same, put through the power source, the hypothesis finished do not need to worry again.
 This graduation project has designed one kind of automatic circuit using at89C51 monolithic integrated circuit, this electric circuit used in the solar water heater, could realize when the water used, if the date exposed to the sun the water temperature not to be able to achieve the setting value, then the electric heating made up automatically heats.Thus has realized the water heater automatic and the energy conservation.This article introduced in detail based on the monolithic integrated circuit solar-powered water heater automatic control system composition, the hardware design.Has realized the temperature and the water level parameter real time display, when has the temperature hypothesis, the water level hypothesis and the control function, after the power cut comes the electricity again does not need to establish, has the breakdown to report to the police with the breakdown from the processing function, good stability and resistance to interference.
 This article in detail introduced this control system hardware design process and the software, the hardware debugging process.
Key words: Monolithic integrated circuit; Automatic control; Solar-powered water heater; Software debugging
 
目       录
1 引言…………………………………………………………………………………4
2 控制系统原理……………………………………………………………………4
2.2 主要功能  ……………………………………………………………………4
2.2 系统原理图……………………………………………………………………5
2.3 操作面板…………………………………………………………………………6
2.4 AT89C51简介………………………………………………………………6
3 控制器软件设计…………………………………………………………………7
3.1 温度检测程序设计…………………………………………………………7
3.1.1 DS18B20的使用方法…………………………………………………7
3.1.2 温度检测程序………………………………………………………10
3.2 水位检测程序设计…………………………………………………………10
3.3显示程序设计………………………………………………………………12
3.4 按键程序设计………………………………………………………………13
3.5 X5045程序设计……………………………………………………………16
 3.5.1 X5045初始化程序…………………………………………………18
3.5.2 喂看门狗程序………………………………………………………19
 3.5.3 读写数据程序………………………………………………………20
3.6 主流程图……………………………………………………………………22
3.7 软件代码……………………………………………………………………23
4 系统调试………………………………………………………………………23
4.1 拟软件调试…………………………………………………………………24
4.2 混合调试……………………………………………………………………29
4.3芯片烧写……………………………………………………………………30
总结…………………………………………………………………………………32
致谢…………………………………………………………………………………32
参考文献……………………………………………………………………………33
附录1  软件代码  文件“reshuiqi.asm”
引  言
随着人们生活水平的提高,各种热水器的使用已相当普及。与之相配套的控制仪也相继问世。目前市场上太阳能热水器的控制系统大多存在功能单一、操作复杂、控制不方便等问题,很多控制器只具有温度和水位显示功能,不具有温度控制功能.即使热水器具有辅助加热功能,也可能由于加热时间不能控制而产生过烧,从而浪费电能。随着计算机在各种智能控制系统应用中的不断深入与蓬勃发展,单片机更以其小巧的外形、较高的性价比、灵活的控制方式广泛地应用在这一领域。
鉴于此,以89C51单片机为检测控制核心,设计了一种太阳能热水器微控制器,不仅实现了温度和水位参数的实时显示,而且具有温度设定、水位设定与控制功能,停电后再来电时也不用重新设定。
本文运用AT89C51单片机设计了一种自动控制电路,该电路用于太阳热水器,能实现在用水时,若日晒水温达不到设定值,则电加热补温。从而实现了热水器的自动及节能。本文详细介绍了基于单片机的太阳能热水器自动控制系统组成、硬件设计。
2 控制系统原理
2.1系统主要功能
本太阳能热水器自动控制系统具有以下功能:
(1) 使用电源为220VAC,功耗小于5W。
(2) 水温显示:水温用数码管显示,测温范围0—99℃;精度±2℃
(3) 水位显示:本系统利用水位检测电路可以检测5个水位,包括4个正常水位水位20% 、50% 、80% 、100%,和一个底水位;用5个发光二极管来显示当前水位,当水位超过该水位点,相应发光二极管发亮。
(4) 水位设置:可设置加水水位20% 、50% 、80% 、100%(本仪预置水位50%)。按“水位”键,数码观显示当前水位,如显示50,表示50%,这时“水位”键旁的发光二极管亮,通过按“∧”或“∨”键可以调整水位设置。
(5) 缺水上水/报警。当水位从高到低,出现缺水状态时,蜂鸣报警,缺水指示灯闪亮,延时15分钟自动上水至预置水位。
(6) 手动上水:在手动控制状态,可以通过设在面板上的按“上水”键随时进行手动加水,若水位低于预置水位,可上水至预置水位;若水位已达到预置水位,则在原水位基础上再加一档;若水位已加满,则停止手动加水。在上水过程中,按“上水”键,可停止上水。
(7) 自动上水,在自动状态,当检测到水位没到达设置水位时,自动上水;若水位已达到预置水位,且水温超过设置水温3℃以上,自动加水直到水温等于设定水温;若水位已加满,则停止加水。此功能使太阳能热水器产出最多热水。
(8) 手动加热:若日晒水温达不到设定值,则电加热自动补温,加热到预置温度后自动停止加热。在加热状态,为保证使用安全,此时应禁止用水,加热状态时红色发光二级管显示加热正在进行,待加热停止后方可用水。
(9) 报警控制功能:高、低温及低水位报警控制。
2.2 系统原理图
根据上述功能描述,我们可以给出系统结构图,如图2.1所示。
 
     图  2.1  系统结构图
 由此我们可以设计出系统原理图,见附录1。该系统包括以下部分:电源转换电路、温度水位检测电路、水位只是电路、继电器输出控制电路、看门狗电路、显示电路、按键电路、报警电路、工作状态指示电路和单片机控制电路。在第3节将对这些电路的硬件设计做详细分析。
2.3 操作面板
根据系统功能和PCB板图,下面给出操作面板式样图,如图2.2所示。

   图 2.3  操作面板
2.4 AT89C51简介
 根据系统功能要求,我们选择AT89C51作为核心CPU。
 AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。
  AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
 主要功能特性:
兼容MCS—51指令系统;
32个双向I/O口;
两个16位可编程定时/计数器;
1个串行中断;
两个外部中断源;
可直接驱动LED;
低功耗空闲和掉电模式;
4k可反复擦写(>1000次)Flash ROM;
可编程UARL通道;
全静态操作0-24MHz;
128x8bit内部RAM];
共6个中断源;
3级加密位;
软件设置睡眠和唤醒功能。
3 控制器软件设计
3.1 温度检测程序设计
3.1.1 DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
(1)DS18B20的复位时序
 
图  3.1 DS18B20的复位时序
(2)DS18B20的读时序
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。
 
图  3.2 DS18B20的读时序
(3)DS18B20的写时序
 对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
 
图  3.3 DS18B20的写时序
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
DS18B20有六条控制命令,如表所示:
指令 约定代码 操作说明
温度转换  44H  启动DS18B20进行温度转换
读暂存器  BEH  读暂存器9个字节内容
写暂存器  4EH  将数据写入暂存器的TH、TL字节
复制暂存器  48H  把暂存器的TH、TL字节写到E2RAM中
重新调E2RAM  B8H  把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式  B4H  启动DS18B20发送电源供电方式的信号给主CPU
表3-1 DS18B20控制命令
3.1.2 温度检测程序。
 DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
 进行温度显示,这里我们用两位数码管来显示温度,显示范围00到99度,显示精度为1度,因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位,将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度,非常简洁无需乘于0.0625系数。
 在温度程序中还要完成温度过高和过底的故障保护。温度过高,在加热时要停止加热,当水位没满时,自动加水,这样可以得到更多的热水,使热水器达到最大的利用。当温度过低时(底于0℃),要加热,以保护装置。
 3.1.3 温度数字滤波器设计
 为了得到更准确的对检测到的温度,提高抗干扰能力,对检测到的温度要进行滤波处理。采用数字滤波算法克服随干扰引起的误差具有以下优点:
(1) 数字滤波无需硬件,只用一个计算过程,可靠性高,不存在阻抗匹配的问题。尤其是数字滤波可以对频率很高或很低的信号进行滤波,这是模拟滤波器做不到的。
(2) 数字滤波是用软件算法来实现的,多输入通道可共用一个滤波程序,降低系统开支。
(3) 只要适当改变滤波程序或运行参数,就能方便的改变其滤波特性。
 常用的滤波方法有程序判断法、中值判断法、算术平均值滤波法、加权滤波法、滑动滤波法、低通滤波法和复合滤波法。本系统采用的是算术平均值滤波法。
 次采集数据十次,去掉最大值和最小值,然后求剩余8个数的平均值。具体程序见附录软件。
3.2 水位检测程序设计
 水位设定为5段,包括安全下限、20%、50%、80%、100%。通过p2口来检测。当水位到达该处,相应端口输出底高电平,经过ULN2003反向后,送到p2口为底低电平,并且该端口LED点亮。
 在该部分程序中要完成水位检测和水位控制。程序如下:
test_water: jb p2.0,test_w1 
  mov water_num,#10h  ;100%
  ljmp act_w 
test_w1: jb p2.1,test_w2
  mov water_num,#08h  ;80%
  ljmp act_w
test_w2: jb p2.2,test_w3
  mov water_num,#05h  ;50% 
  ljmp act_w
test_w3: jb p2.3,test_w4
  mov water_num,#02h  ;20% 
  ljmp act_w 
test_w4: jb p2.4,w_err
  mov water_num,#01h
  
act_w:  mov a,water_num  ;判断是否加水。
  cjne a,water,act_w1
act_w1:  jc act_w2
  setb out_w
  setb LS
  ljmp test_water_ret
act_w2:  clr out_w
  LCALL   RET_WDOG
                lcall display 
  ljmp test_water ;循环检测水位。
   
w_err:  setb LS ;报警,并加水
  clr out_w
  LCALL   RET_WDOG
                lcall display 
  ljmp test_water ;循环检测水位。
  
test_water_ret: ret
3.3 显示程序设计
 用74LS164来扩展并行IO口,连接两位数码管。P0.6、P0.7作为位选信号,采用动态显示。LED进行分时选通,这样在任一时刻,只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是我们常说的动态扫描电路。
 用的共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。
如要显示“0”,则要  a,b,c,d,e,f六个字段亮就显示“0”了,而g和dp字段不亮。下图为显示码表。
dp g f e d c b a 显示的字符 编码
1 1 0 0 0 0 0 0 0 C0H
1 1 1 1 0 0 1 1 1 F3H
1 0 1 0 0 1 0 0 2 A4H
1 0 1 1 0 0 0 0 3 B0H
1 0 0 1 1 0 0 1 4 99H
1 0 0 1 0 0 1 0 5 92H
1 0 0 0 0 0 1 0 6 82H
1 1 1 1 1 0 0 0 7 F8H
1 0 0 0 0 0 0 0 8 80H
1 0 0 1 0 0 0 0 9 90H
1 0 0 0 1 0 0 0 A 88H
1 0 0 0 1 1 1 0 F 8EH
表3-2 显示码表
036 基于AT89C51单片机的太阳能热水器自动控制系统
 

关闭窗口

与本站联系的时候,为了提高效率,请告诉本站您需要的设计编号与题目。如:001VBAC人事管理系统
编码说明:001VBAC人事管理系统,其中001VBAC 为该毕业设计的编号,VB代表开发语言,AC代表数据库(ACCESS)
版权所有:510计算机论文网:http://www.lw510.com/程序制作:510论文
Email: LW510@QQ.COM  QQ: 497053418   MSN: LW510@QQ.COM