基于51单片机的家用电热水器设计本科毕业论文

基于51单片机的家用电热水器设计

毕业设计(论文)

基于51单片机的家用电热水器设计

Design of Household Electric Water Heater Based on the 51-series singlechip

作者声明

本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注的地方外,没有任何剽窃、抄袭、造假等违反学术道德、学术规范的行为,也没有侵犯任何其他人或组织的科研成果及专利。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。如本毕业设计(论文)引起的法律结果完全由本人承担。

毕业设计(论文)成果归武汉工程大学邮电与信息工程学院所有。

特此声明。

作者专业:

作者学号:

作者签名:

____年___月___日

摘要

随着社会的发展,人类科技的进步,各行各业都在使自己的产品智能化、数字化,因老式的热水器使用煤气或天然气对水进行燃烧加热,用手动的方式调节温度,不仅不能够精确的确定使用者需要的水温,而且还存在一定的危险性。

电热水器是一种可供浴室、洗手间及厨房使用的家用电器,随着人们生活质量的提高,现代的家用电热水器已经摒弃了以前的做法,而采用一种更加精确、安全的实施方案。

C语言对单片机编程有诸多优点,例如:便于移植、句法检查时错误少、坚固性好、头文件种类诸多,能够方便快捷使用各种函数等。

本文采用AT 89C 52 单片机作为控制器,使用C语言编写程序,设计了一款智能家用电热水器。使用阵型键盘输入温度,温度可以精确到0.1摄氏度,并使用LED灯显示,能够精确提供用户所需温度的温水。采用DS18B20采集温度,使用LED灯显示,精确的显示出采集的水温。当所需温度高于当前采集的水温时,使用MOC3041芯片触发加热,当所需温度低于当前采集的水温时,则停止加热。基本实现了智能控制功能。

关键词:单片机;C语言;采集;智能;家用电热水器

Abstract

With the development of social and program of human technology, every trade all transfer own product into intelligence, digitize, because the water heater of old style uses gas or natural gas to heat water and manually adjust mode conditioning temperature, not only unable to sufficiently accurately recognize the user need of water temperature, but also exist some certain risk.

The electrical water heater is a kind of home appliances that bathroom, loo and kitchen can use, with raising of quality of human live, the modernistic household electrical water heater has abandonned the past way, but adopts a kind of implementation scheme of more accurate ,safety.

C language possess many merits for programming of singlechip, such as:Is easy to ransplant, having little bug when sentence construction review, fastness good, the head document type is so many that expediently quickly using various function etc.

The writer adopts an AT 89 Cs 52singlechip to be the controller and using C languages to write programming ,design a style of intelligence household electrical water https://www.360docs.net/doc/a010453269.html,e array form keyboard input temperature, the temperature can be accuratly recognized to 0.1 ℃, and use LED light display it, can accurately provide to the warm water of temperature that user needs.Adopt DS18 B20 to collect temperature, use LED light display, the accurately displays to collect water temperature.When the temperature needed higher than to collect water temperature at present, use the MOC3041 chip lead to heating , when the temperature needed is lower than the collect water temperature at present, stop heating.The simply carry out intelligence control function.

Key Words:singlechip; C language; collect; Intelligence; household electric water heater

目录

第1章绪论 (1)

1.1家用电热水器的现状 (1)

1.2TX-1C单片机实验开发板简介 (1)

第2章系统硬件设计 (2)

2.1系统硬件的组成部分 (2)

2.2系统硬件各部分的简介 (2)

2.3数码管显示 (3)

2.3.1数码管简介 (3)

2.3.2数码管的实现方法 (4)

2.3.3锁存器与数码管显示方法 (6)

2.4键盘输入设计 (7)

2.4.1键盘输入方法 (7)

2.4.2键盘输入的抖动与去抖的方法 (8)

2.5DS18B20温度采集 (9)

2.5.1DS18B20技术性能与应用范围 (9)

2.5.2DS18B20的初始化与读写操作 (10)

2.5.3DS18B20的指令与格式 (12)

2.5.4DS18B20寄生电源供电方式 (15)

2.5.5DS18B20改进的寄生电源供电方式 (16)

2.5.6DS18B20外部电源供电方式 (17)

2.5.7DS18B20寄生电源供电方式 (18)

第3章系统软件设计 (20)

3.1键盘输入的程序 (20)

3.2DS18B20温度传感器设计 (21)

3.3主函数的分析 (25)

3.4显示函数的分析 (26)

3.5中断加热子函数的分析 (33)

第4章功能简介与成品图片 (35)

4.1智能热水器具的功能 (35)

4.2成品图片 (35)

第5章总结与展望 (38)

附录程序 (41)

第1章绪论

单片机是一种与我们生活息息相关的控制器,它存在于许多地方,例如:电子手表、掌上游戏机、数码相机、录音笔、电视机遥控器等等。单片机主要由中央处理器、内存、输入/输出设备组成,它就好像是一台小型电脑,它能够执行人们对它编写的程序,从而发出各种不同的控制命令,与外部电路结合后,便可以完成各种各样的功能。通过单片机人们的生活将会变得更加方便、快捷。

1.1 家用电热水器的现状

我们的生活电热水器是一种可供浴室、洗手间及厨房使用,按照人们的需要的温度,提供温水的家用电器。市场上传统的机械式电热水器控制精度低、可靠性差,甚至存在一定的危险隐患。随着社会的发展、人们生活质量的提高,人们对电热水器的要求越来越趋向于智能化和数字化,这种老式而简单的电热水器已经不能够满足人们的需要了。而智能化家用电热水器正是适应现代化智能家用电器趋势而出现。它能提供用户方便快捷的数字化输入方式,并且能精确的采集和控制环境中的水温,将其提供给用户,因此备受人们的关注。

1.2 TX-1C单片机实验开发板简介

XT-1C单片机开发板是哈尔滨市天祥电子综合多年开发经验,在原TX-1B 基础上,经过精心设计开发出的多功能51单片机开发平台。该开发板集常用的单片机外围资源、串口和USB口两种调试下载接口于一身,完全兼容ATMEL 公司的51单片机,除此之外还有很多特点,如:无法解密、低功耗、高速、高可靠、强抗静电、强抗干扰等。

TX系列单片机开发板可完全作为各种51单片机的开发板,用汇编语言或者C语言对其进行编程。当用STC公司的单片机时,直接用产品套件附带的串口线将开发板与计算机串口相连,按照STC单片机下载操作教程便可以下载程序,而且下载速度比起其他下载工具要快的多。本文将使用TX-1C开发板完成数字化电热水器的设计。

第2章系统硬件设计

2.1系统硬件的组成部分

系统设计硬件原理结构见图2.1所示。系统以高性价比的AT89C51单片机为核心,由键盘输入、DS18B20温度采集、数码管显示电路、电源时钟复位电路、双向可控硅驱动电路MOC3041、双向可控硅TLC336A组成加热器控制电路。

图2.1 系统设计硬件原理结构

2.2 系统硬件各部分的简介

这里AT89C51为总控制器。单片机的P0口连接74HC573锁存器,这样可以节约单片机端口,即可多次操作P0口,使其既能控制数码管的片选,又能控制数码管的位选,从而节省的单片机的外部接口,扩展了功能。

键盘的输入由P3口完成在第4章节中会具体介绍如何实现。

时钟复位电路见图2.2所示,RET连接单片机的RESET接口,主要完成单片机的复位功能。

图2.2 时钟复位电路

温度采集芯片由DS18B20芯片完成,DS18B20的2号接口接在单片机的P2^2口,按协议传送以两个字节为一组的温度数据,第3章会介绍具体实现方法。

加热模块见图2.3所示,MOC3041芯片的2号接口连接单片机的P2^2口。当需要加热时,P2^2接口送出低电平,即可触发加热器工作。

图2.3 加热模块

2.3 数码管显示

2.3.1 数码管简介

单片机系统中常用的显示器有:

发光二极管LED(Light Emitting Diode)显示器、液晶CD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。

使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,

必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。本设计采用的TX-C1实验板是采用共阴LED显示器,根据电路连接图显示十六进制数的编码见表2.1所示。

表2.1 十六进制数的编码

2.3.2 数码管的实现方法

数码管的显示由P0口完成控制。有两点需要注意,第一点是要哪一个数码管亮,第二点是亮的数码管显示什么数字。所以数码管有位选和段选之分,位选在程序中用wei表示,单片机上是P2^7端口,即对位选操作时使P2^7呈现高电平,这时P0的八个端口对数码管的操作决定了那几个数码管亮,P0操作完成后使P2^7呈现低电平,这样位选就已锁定。段选在程序中由duan表示,单片机上是P2^6端口,与位选相同,操作时使P2^6呈现高电平,这时P0的八个端口对数码管的操作决定了亮的几个数码管显示什么数字,P0操作完成后使P2^6呈现低电平,这样段选就已锁定。

见图2.4所示由于单片机仅仅起到控制的作用,其输出电流十分小,所以P0端需要接上拉电阻与5V电源,通过电压的变化控制5V电源点亮,想要图中a 端由电流通过时,即给P0^0一个低电平,触发上拉电阻两端间的电势差,这样

就能促使电流流向a点,从而使a端对应的LED灯点亮。

图2.4 单片机与数码管的硬件连接

首先选择位选,再选择段选。

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0xbf,0x86,

0xdb,0xcf,0xe6,0xed,

0xfd,0x87,0xff,0xef,

0x00,0x08,0x88};

可以直接设置数码管显示各数字的十六进制,即P0口应赋的十六进制,以便操作。如以上数组,使用时仅仅将需要的数组中的其中一个赋予P0口,这样可以方便直观得使数码管显示需要的数字。

选择位选与选择片选的过程相当快时,显示在人眼中就是一排易于识别的十进制数字,这就是数码管的动态显示。

2.3.3 锁存器与数码管显示方法

在这里先介绍74HC573芯片,这是一个锁存器芯片,连接方法见图2.5所示,P2^7、P2^6分别控制位选和段选的L端,例如:当P2^7(程序中的全局变量wei)赋高电平时,74HC573输入端口的值将直接输送给74HC573芯片的输出端,当输入端变化时,输出端也变化。P2^7赋低电平时, 74HC573芯片将记住最近一次L端口是高电平时芯片输入端的8位,并将其输出,当输入端变化时,输出端不变化。在这里就可以利用锁存器的特性使P2^7起到控制那个数码管亮的作用,使P2^6控制数码管亮什么样的数字作用。

图2.5 74HC573芯片的连接

以下数码管显示部分程序。

P0=0xff;

wei=1;

P0=srtemp;//wein打开后是低电平亮

wei=0;

srtemp=_crol_(srtemp,1);

P0=0x00;

duan=1;

P0=table[dis[i]];

duan=0;

delay(1);

duan=1;

P0=0x00;

duan=0;

要注意的是位选(程序中的wei变量),位选是低电平时选择该数码管亮。

在显示时容易出现不需要亮的LED管微微发亮的问题,这是因为所选择的位选和段选都是通过P0赋的值,如果先选择位选的8位值,P0口不还原成0x00,就会导致段选打开后,还未赋予段选P0口需要的数值之前,这段时间内P0口将刚才位选的8位值赋予了段选锁存器,这样就会在极短的时间内,一些不需要的LED灯点亮,在单片机上就是由LED灯微微亮的情况,所以在这里注意每次P0对位选赋值以前,都应该保证P0口为0x00。

2.4 键盘输入设计

2.4.1 键盘输入方法

本设计中使用的是矩阵式键盘,见图2.6所示。

图2.6 矩阵式键盘

S10到S19分别代表数字0到9。S20代表确认数字,按下后即可确认要输入数字的某一位。

左侧键盘的引脚由上至下分别是P3^0到P3^7,第一行暂时不用,从第二行开始使用,每一行如P3^1都与P3^4、P3^5、P3^6 、P3^7,他们是线与的关

系。因此可以如此操作,对图中第二行、第三行、第四行诸行进行扫描。扫描第一行时P3口赋值为0xfd,即为P3^1口赋“0”,P3的其他口赋“1”,当第二行没有按键按下时P3^4、P3^5、P3^6 、P3^7将都是高电平“1”,一旦有按键按下时,由于线与关系,P3^4、P3^5、P3^6 、P3^7必定有一个为“0”,它们之中那一个为“0”依次代表S10到S13哪个键被按下。依次循环扫描三行即可时时检测是否有键按下。

2.4.2 键盘输入的抖动与去抖的方法

在2.4.1节中谈到了如何实现键盘的扫描,但是理论与实际还是有一定的差距,当按下键盘到检测到有电压变化,这段时间在实际中是存在一定的时间误差的,经过这段时间误差后电压才会达到单片能够检测到的范围,但这期间单片机很有可能已经完成检测,见图2.7所示。

图2.7 抖动示意图

如果不去除抖动的话,人们手指按下的瞬间单片机已经开始检测,这时电压还未降到稳定闭合状态所以不能检测到按下,同理不管是按下,还是是松手都会有这样的情况出现,不利于操作,所以应该加入去抖操作,图中右侧是硬件去除抖动,除了硬件去抖以外还可以利用软件去抖。

在本设计中采用软件去抖的方法,原理是检测两次,第一次检测到低电平时延时一段时间,再检测一次,如果还能检测到低电平,则说明确实有键按下。具

体程序如下:

while(temp!=0xf0)

{

delay(5);

P3=0xfd;

temp=P3;

temp=temp&0xf0;

while(temp!=0xf0)

上述程序是两个while循环之间的嵌套,第一个while()语句判断有键按下后,延时一段时间再进行判断,如果第二次判断也认为由键按下,则可以确认的确由键盘操作,并不是抖动。具体按下后的操作可以在后一个while循环中书写。

2.5 DS18B20温度采集

2.5.1 DS18B20技术性能与应用范围

图2.8 DS18B20的外形及管脚图

DS18B20是一种可组网数字温度传感器芯片,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。

独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围-55℃~+125℃,固有测温分辨率0.5℃。支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。工作电源为3~5V/DC。在使用中不需要任何外围元件,测量结果以9~12位数字量方式串行传送。不锈钢保护管直径Φ6,适用于DN15~25, DN40~DN250各种介质工业管道和狭小空间设备测温,标准安装螺纹M10X1, M12X1.5, G1/2”任选,PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。

负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列见图2.8所示。

该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域、轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制、供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制、汽车空调、冰箱、冷柜、以及中低温干燥箱等。

2.5.2 DS18B20的初始化与读写操作

1. DS18B20的初始化

(1)先将数据线置高电平“1”;

(2)延时(该时间要求的不是很严格,但是尽可能的短一点);

(3)数据线拉到低电平“0”;

(4)延时750微秒(该时间的时间范围可以从480到960微秒);

(5)数据线拉到高电平“1”;

(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制);

(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒;

(8)将数据线再次拉高到高电平“1”后结束。

DS18B20的的初始化见图2.9所示。

图2.9 DS18B20的的初始化

2. DS18B20的写操作

(1)数据线先置低电平“0”;

(2)延时确定的时间为15微秒;

(3)按从低位到高位的顺序发送字节(一次只发送一位);

(4)延时时间为45微秒;

(5)将数据线拉到高电平;

(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止;

(7)最后将数据线拉高。

在这里要注意的是(3),写数据时时1bit单独传送,这里有两种情况。

当需要传送“1”时,单片机应该给DS18B20芯片的DQ接口赋低电平,大约15秒以后,将DQ释放为高电平,延时约45微妙即可。

当需要传送“0”时,单片机应该给DS18B20芯片的DQ接口赋低电平,并且持续拉低最少60微妙,然后将DQ释放为高电平,再延时约15秒即可。

DS18B20的写操作时序图见图2.10所示。

图2.10 DS18B20的写操作时序图

3. DS18B20的读操作

(1)将数据线拉高“1”;

(2)延时2微秒;

(3)将数据线拉低“0”;

(4)延时15微秒;

(5)将数据线拉高“1”;

(6)延时15微秒;

(7)读数据线的状态得到一个状态位,并进行数据处理;

(8)延时30微秒;

这里只要按以上操作将状态位的各各bit按顺序储存好即可。

DS18B20的读操作时序图见图2.11所示。

图2.11 DS18B20的读操作时序图

2.5.3 DS18B20的指令与格式

DS18B20温度格式图见图2.12所示。

图2.12 DS18B20温度格式图

这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。ROM指令表见表2.4所示,RAM 指令表见表2.5所示。

相关文档
最新文档