文档库 最新最全的文档下载
当前位置:文档库 › 单片机热水器水温控制系统的设计_2009441654

单片机热水器水温控制系统的设计_2009441654

基于单片机电热水器控制系统设计

摘要:21世纪末,随着计算机科学的发展,计算机已深入地渗透到我们的生活中,要想学好温度测控,只有扎扎实实的把单片机知识学好,因为温度测控是基于单片机知识的。今天,我们的生活环境和工作环境有越来越多称之为单片机的小电脑在为我们服务,单片机在工业控制,尖端武器,通信设备,信息处理,家用电器等各测,控领域的应用中独占鳌头。时下,家用电器和办公设备的智能化,遥控化,模糊控制化已成为世界潮流,而这些高性能无一不是靠单片机来实现的,同时在使用单片机的前提下我们也还要用到A/D数模转换,本文介绍了一种基于单片机控制的电热水器控制系统,,可以设置上加热温度,方便使用。

关键词:单片机,数字控制,温度计, DS18B20,AT89S52

1绪论

1.1课题背景和意义:

随着人们生活水平的提高,热水器越来越受到人们的青睐。由于燃气热水器易受水压限制,而且安全性较差。每年使用燃气热水器造成的爆炸、中毒等事故也屡有所闻。消费者对燃气热水器怀有一定的惧怕感。而电热水器越来越受到人们的认可。采用MCS-51单片机对热水器水温进行控制,具有控制方便、组态简单和灵活性大等优点。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,为自动化和各个测控领域中广泛应用的器件。

1.2国内外研究现状:

电热水器在中国的历史已经有10多年了,期间也经历了数次起落的过程,在上个世纪的最后几年,随着国外品牌的进入和国内一些大家电厂的目光转向电热水器,储水式电热水器能适应任何天气变化,普通家庭可直接安装使用,长时间通电可以大流量供热水。使用时不产生废气,既安全又卫生。目前市场上销售的电热水器多数还带有防触电装置。干净卫生,不必分室安装,调温方便。随着技术的成熟,今后将朝着保温层整体发泡技术、温控器置入内胆、加热管下潜式设计、节能免更换几个方面发展。

热水器是一种可供浴室,洗手间及厨房使用的家用电器。据国务院发展研究中心市场经济研究所统计数据表明:近年来我国热水器的销量每年以25%的速度上升,在未来五年内,销售额每年可达近500亿以上。众所周知,燃气热水器因其安全隐患及越来越高的使用成本正渐渐淡出热水器市场,而太阳能热水器也因其严格受天气气候及安装条件影响而很难占据更大的市场份额,所以电热水器迅速崛起而不断壮大。为了满足人们对现代电器的智能化的要求,利用目前电子技术的最新成果改善电热水器的性能已经完全可能和必要。本课题将以单片机为控制核心,实现对热水器的自动控制,设计出一款具有自动化、智能化、易于操作、控制精度高、性价比高的电热水器控制系统。

2单片机及设计软件介绍

2.1单片机技术介绍

由于单片机在整个设计中占据着重要的地方,首先介绍一下单片机的相关知识。单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要。

MCS-51单片机内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。

8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

·中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

·数据存储器(RAM)

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

图2-1 8051 内部结构

·程序存储器(ROM):

8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

·定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

·并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。

·全双工串行口:

8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

·中断系统:

8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

·时钟电路:

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的

MCS-96系列单片机则采用普林斯顿结构。

下图是MCS-51系列单片机的内部结构示意图2-3

图2-2MCS-51结构框图

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

图2-3 51单片机引脚图

Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。

8051的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。

图2-4 复位电路图

·Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。

如果单片机是EPROM,在编程其间,将用于输入编程脉冲。

·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。

·Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。

2.2 软件介绍

2.2.1PROTEL99SE 介绍

PROTEL99SE是一个全32位的电路板设计软件,使用该软件可以容易地设计电路原理图、画元件图、设计电路板图、画元件封装图和电路仿真。

在这里主要用它来绘制电路原理图和生成印制电路板。原理图的设计步骤如下:

编辑和调整。编辑元件的属性。包括元件名、参数、封装图等。调整元件和导线的位置等操作。对电路板的设计主要分为以下几个步骤;

人工布线是画电路板的基础,但比较耗时和费力,另外由于自身经验的不足,只得先采用自动布线,在此基础上作了适当的修改。

2.2.2单片机编译软件Keil介绍

编写完程序后即可使用汇编软件对程序进行编译了,本设计所使用的编译软件是Keil51,其步骤如下:

1 源文件的建立

使用菜单“File->New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入要调试的汇编语言源程序,保存该文件,注意必须加上扩展名.c。

2 建立工程文件

点击“Project->New Project…”菜单,在出现一个对话框中,输入一个工程文件名,不需要扩展名。点击“保存”按钮。

3 工程的详细设置

工程建立好以后,还要对工程进行进一步的设置,以满足要求。首先点击左边Project 窗口的Target 1,然后使用菜单“Project->Option for target ‘target1’”即出现对工程设置的对话框,对部分内容进行必要的设置改即可,不过大部份设置项都是取默认值。

4 编译、连接

在设置好工程后,即可进行编译、连接。选择菜单Project->Build target,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而Translate … .项则仅对该文件进行编译,不进行连接。

3系统设计

3.1系统功能介绍

使用高清晰度数码管实时显示水温,范围0~1O2℃;(2)可用键盘方便地设定

水温,并显示设定的温度;(3)按设定温度加热0-102度的水温,并具有保温功能

3.2系统方案论证

3.3.1方案一

由于本设计的温度测温电路,可以使用热敏电阻Pt100其感温效应,

Pt100温度传感器为正温度系数热敏电阻传感器,主要技术参数如下:

1、测量范围:-200℃~+850℃;

2、允许偏差值△℃:A级±(0.15+0.002│t│), B级±(0.30+0.005│t│);

3、热响应时间 < 30s;

4、最小置入深度:热电阻的最小置入深度≥200mm;

5、允通电流≤ 5mA。

另外,Pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。铂热电阻的线性较好,在0~100摄氏度之间变化时,最大非线性偏差小于0.5摄氏度。铂热电阻阻值与温度关系为

式中,A = 0.00390802;B = -0.000000580;C = 0.0000000000042735。可见Pt100在常温0~100摄氏度之间变化时线性度非常好,其阻值表达式可近似简化为:RPt=100(1+At),当温度变化1摄氏度,Pt100阻值近似变化0.39欧。

下表为Pt100在0℃~100℃的分度表

传感器电路包括传感器测量电桥和放大电路两部分,

图3-1传感器放大电路

R2、R3、R4和Pt100组成传感器测量电桥,为了保证电桥输出电压信号的稳定性,电桥的输入电压通过TL431稳至2.5V。从电桥获取的差分信号通过两级运放放大后输入单片机。电桥的一个桥臂采用可调电阻R3,通过调节R3可以调整输入到运放的差分电压信号大小,通常用于调整零点。

放大电路采用LM358集成运算放大器,为了防止单级放大倍数过高带来的非线性误差,放大电路采用两级放大,如图 1-2所示,前一级约为10倍,后一级约为3倍。温度在0~100度变化,当温度上升时,Pt100阻值变大,输入放大电路的差分信号变大,放大电路的输出电压Av对应升高。这种设计需要用到A/D转换电路,感温电路比较麻烦。

3.2.2方案二

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器特性如下DS18B20是DALLAS公司生产的一线制数字温度传感器;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到一起,CPU只需一根数据线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。示。

科技学院课程设计——2009441654

4系统硬件设计

4.1设计要求

控制器的最主要目的是对水温进行控制,除此之外还实现下述功能:

1)实时显示水温,范围为0~99℃

2)可在20~80℃范围任意设定水温

3)具有预约功能,24h 任意设定开机时间

4)具有LED 数码显示实时温度,进行设定操作时闪烁显示设定水温、时间,并有预

约、保温/加热指示

5)可随时察看和校正系统时钟

6)配有遥控器,控制更加简单方便

7)超温断电保护并报警功能

电路设计的硬件电路图如下:

图4-1系统设计硬件框图

4.2系统整体硬件电路

4.2.1 主板电路

系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,控制电路,单片机主板电路等,如图所示

4.2.2显示部分

首先要检查是

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

对照图2-3所示的4X4键盘,说明线反转个工作原理。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。输入信号由八个小开关控制,当有键按下的时候,就产生了有效的输入信号,我使用了上拉电阻把输入信号先嵌位在高电平,为了理解起来容易,我下面将对上拉电阻进行简单介绍:上拉电阻就是把不确定的信号通过一个电阻钳位在高电平,此电阻还起到限流的作用。

那么在什么时候使用上拉电阻呢?总结如下:

(1)、当TTL电路驱动CMOS电路时,如果TTL电路输出的高电平低于CMOS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。

(2)、OC门电路必须加上拉电阻,以提高输出的搞电平值。

(3)、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。

(4)、在CMOS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻降低输入阻抗,提供泄荷通路。

(5)、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限,增强抗干扰能力。

(6)、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。

(7)、长线传输中电阻不匹配容易引起反射波干扰,加上拉电阻使电阻匹配,有效的抑制反射波干扰[10]。

另外,上拉电阻阻值的选择原则包括:

5系统软件设计

仅仅有通过硬件设计还远远不够,必须要与相应的软件设计结合起来才能达到预期的效果,所以软件的设计本毕业设计的另一个重要方面,它的好坏直接关系毕业设计的成功与否。系统软件设计是用C语言完成的,这就需要能熟练的掌握C语言,会使用编译软件。

软件设计通过流程图和具体的程序清单

图5-1主程序流程图

图5-2键盘扫描处理程序流程图

图5-3 定时器程序流程图

在毕业论文接近末尾之时,我要衷心地感谢我们XX贵老师,在我整个毕业设计过程中,罗木贵老师给了我很大的帮助和细心的指导。在一个多月的毕业设计过程中,当我遇到了困难和问题时,当我们需要他的时候,罗木贵老师总是第一时间出现在我们面前,他让我们学会了以前在课堂上没有的东西。另外,我还要特别感谢我所有的搭档,是他们给了我巨大的勇气和战胜困难的信心,在毕业设计中我们合作的很愉快,当我们遇到困难时我们一起去探讨和研究,一起去战胜它,大家也一起分享排除问题和困难后的喜悦。同时大家也发扬我们慷慨激扬精神:特别能吃苦,特别能攻关,特别能战斗,特别能奉献。在此我表示真诚的感谢!

6、心得体会

经过这次毕业设计,使我觉得不论从理论知识还是从实际操纵中都学到了不少知识,我想归纳起来,主要有以下四个方面: 1、学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要求我们应更加注重实践环节。 2、在毕业设计中,我们应当注意重点与细节的关系。3、失败不可怕,只要不趴下,昂首向前走,希望总会有。 4、同组同学相互包容,彼此合作,取长补短,才能铸就最后的成功。可以这样说毕业设计是对大学三年所学知识的一次运用和检阅,同时对自学能力提出很高的要求,所以平时的学习离开思考,就是严重的错误,我们学习不应该有偏科现象,各方面的知识都应该要接触,这样做才能为毕业设计打下基

[1]李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998

[2]李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994

[3]阎石.数字电子技术基础(第三版).北京:高等教育出版社,1989

[4]廖常初.现场总线概述[J].电工技术,1999.

[5] 赵晶.Prote199高级应用[M].北京:人民邮电出版社,2000.

[6] 郑步生,吴渭.Multisim200l电路设计及仿真入门与应用[M].北京:电子工业出版社,2002.

[7] 沈美明,温冬婵.IBM—PC汇编语言程序设计[M].北京:清华大学出版社,2001.

[8] 张友德,赵志英,涂时亮.单片微型机原理、应用与实验[M].上海:复旦大学出版社,2000.

[9] 楼然苗,李光飞.51系列单片机设计实例[M].北京:北京航空航天大学出版社,2003.

[10] 梁纯,王军.基于MCS一51单片机的LED点阵图文显示屏设计[J].工矿自动化,2005(6):90—92.

附录2

源程序

1、蜂鸣器程序:

/****************************************************************************** ******************************

模块名:蜂鸣器

描述:控制蜂鸣器的开启和关闭

******************************************************************************* *****************************/

#include "bell.h"

/****************************************************************

函数名:BellOn

参数:uiTimes = 延时的毫秒数

返回值:

描述:让蜂鸣器开启多少时间。

****************************************************************/

void BellOn(unsigned int uiTime)

{

BELL_PORT = 1;

while(uiTime--)

{

Delay(1);//延时1ms

}

BELL_PORT = 0;

}

/****************************************************************

函数名:BellOff

参数:

返回值:

描述:让蜂鸣器关闭

****************************************************************/

void BellOff(void)

{

BELL_PORT = 0;

}

2、继电器控制程序:

4、显示程序:

/****************************************************************************** *****************************

模块名:LED数据显示、设定

描述:4位LED显示,-9999到+9999,有单独负号位(利用LED0的小数点位) LED4(单位显示),LED3-LED0(千,百,十,个)

KEY_RIGHT键移动位选,KEY_UP键修改数值

KEY_SET键取消修改,KEY_ENT确认修改

修改记录:增加了DispString()函数,SetValueStr()函数.

******************************************************************************* ****************************/

#include "includes.h"

/****************************************************************

函数名:DisplayInt

参数:ucNum = 数值

ucPoint = 0-3,大于3或等于0时不显示小数点

ucWidth = 1-4,当显示数值大于设定位数时,以显示数值为准

返回值:

描述:LED数值显示,4位,-9999到+9999

相关文档
相关文档 最新文档