基于单片机的多功能饮水机设计毕业设计Word文档下载推荐.docx
- 文档编号:16353918
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:249.73KB
基于单片机的多功能饮水机设计毕业设计Word文档下载推荐.docx
《基于单片机的多功能饮水机设计毕业设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能饮水机设计毕业设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
第一,功能相对简单。
只有简单的温度控制,用户不能根据自己的喜好设定温度。
第二,能耗较大。
在无人使用时,饮水机仍处在开机状态,造成了能源的大量浪费。
第三,长期饮用饮水机里的水会对健康不利。
由于广泛使用的饮水机烧水不能完全沸腾,长期饮用这种水会对身体造成较大的伤害。
本论文所设计的饮水机是在单片机控制下进行的温度控制,并通过显示器显示温度。
对单片机及外围设备为主的系统进行了硬件和软件设计,并在此设计的基础上给出相应的原理图。
设计方案中主要采用数字温度传感器DS18B20组成的测温系统作为检测单元,并运用了AT89C52作为主机单元、X5045EEPROM作为存储单元、HD7279芯片来管理键盘和显示器。
整个设计系统实现了加热、对温度上下限的控制和定时加热的功能。
采用的自动检测和控制的电子设计技术,可较好地实现对水温的测量和控制,具有较广泛的应用前景。
用户可根据自己实际情况来设定不同的温度上限。
上电后系统将自动运行,显示的是当前的水温,按一次设定按键可实现温度控制的上限值。
温度下限、定时开关机步骤同上相似。
用增键、减键、左右键来完成对应的参数设置。
一、总体设计
多功能饮水机总体框图如图1.1所示。
本系统主要由单片机、温度传感器、控制电路、LED显示、键盘、电源电路组成。
系统以AT89C52单片机为核心,数字温度传感器将采集到的温度数据送入单片机处理,再将处理好的数据送到HD7279,进行按键和数码管的管理。
程序采用E2PROM存储器,可以很容易的实现软件升级,从软件方面提高准确度。
同时,可以对加热实现基本的控制,有效防止“千滚水”对身体造成的伤害。
图1.1总体框图
二、硬件设计
(一)AT89C52单片机
1.AT89C52单片机特点:
兼容MCS51指令系统;
8k可反复擦写(>
1000次)FlashROM;
32个双向I/O口;
256x8bit内部RAM;
3个16位可编程定时/计数器中断;
时钟频率0-24MHz;
2个串行中断;
可编程UART串行通道;
2个外部中断源;
共6个中断源;
2个读写中断口线;
3级加密位;
低功耗空闲和掉电模式;
软件设置睡眠和唤醒功能。
2.AT89C52的硬件结构
(1)数据存储器
AT89C52有256个字节的内部RAM,高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的。
如果指令是直接寻址方式则为访问特殊功能寄存器。
(2)中断系统
AT89C52共有6个中断向量:
两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断。
(3)定时器
此部分由3个16位可编程定时器:
定时器0、定时器1和定时器3组成。
(4)串行口
P0口:
是一组8位漏极开路型双向I/O口,也是地址/数据总线复用口。
P1口:
是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P2口:
是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
P3口:
是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
3.外部引脚及功能
(1)AT89C52各引脚总体介绍(如图2.1所示)
图2.1AT89C52引脚配置
1)电源引脚
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
2)时钟引脚
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。
3)RST
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平,使单片机复位。
4)PSEN
程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
5)EA/VPP
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
如果加密位LBI被编程,复位时内部会锁存EA端状态。
(二)温度采集单元
1.温度传感器
(1)DS18B20温度传感器的特点
本单元选用DS18B20温度传感器来进行温度数据的采集,其特点如下:
①单线结构,只需一根信号线和CPU相连。
②不需要外部元件,直接输出串行数据。
③不需要外部电源,直接通过信号线供电,电源电压范围为3.3V~5V。
④测温精度高,测温范围为:
-55℃~125℃,在-10℃~85℃范围内,精度为±
O.5℃。
⑤测温分辨率高,当选用12位转换位数时,温度分辨率可达0.0625℃。
⑥数字量的转换精度及转换时间可通过简单的编程来控制,9位精度的转换时间为93.75ms,10位精度的转换时间187.5ms,12位精度的转换时间750ms。
⑦具有非易失性上、下限报警设定的功能,用户可方便地通过编程修改上、下限的数值。
⑧可通过报警搜索命令识别哪片DS18820采集的温度超越上、下限。
(2)DS18B20内部结构
DS18B20主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
①64位光刻ROM:
使每一个出厂的DS18820地址序列号都各不相同,这样,就可以实现一根总线上挂接多个DS18820。
②温度传感器:
完成对温度的测量,输出格式为16位符号扩展的二进制补码。
③低温触发器TL、高温触发器TH:
用于设置低温、高温的报警数值。
DS18820完成一个周期的温度测量后,将测得的温度值和TL、TH相比较,如果小于TL,或大于TH,则表示温度越限,将该器件内的告警标志位置位,并对主机发出的告警搜索命令,作出响应。
修改上、下限温度值时,只需使用一个功能命令即可对TL、TH写入。
④配置寄存器:
R0、R1组成,其值决定温度转换的精度位数、转换时间等。
(3)DS18B20与单片机接口电路
如图2.2所示,DQ为温度传感器的数据输入/输出端,接到单片机的P2.0口。
GND接地,VCC接电源。
DS18B20温度传感器将感受到的水温由DQ端口输出,通过单片机P2.0端口送入单片机进行处理与控制。
图2.2DS18B20与单片机接口电路
2.时钟单元
本次设计选用DS1302芯片作为副板的核心单元。
(1)芯片引脚
DS1302的引脚排列图如图2.3所示,Vcc1是后备电源,Vcc2是主电源。
主电源关闭时,时钟能连续运行。
当Vcc2>
Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2<
Vcc1时,Vcc1给DS1302供电。
X1和X2外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),SCLK为时钟输入端。
图2.3DS1302引脚
(2)DS1302与单片机的接口电路
如图2.4所示,脚RST是复位端,接到89C52的P2.4引脚。
GND引脚接地,VCC接电源。
SCLK是串行时钟输入端,接到89C52的P2.5引脚。
I/O是数据输入/输出端,接到单片机的P2.3口,X1、X2是32.768MHz晶振输入/输出端。
图2.4DS1302与单片机的接口电路
3.控制单元
本控制器由9012三极管、固态继电器、加热电阻组成,如图2.5所示。
9012三极管与固态继电器结合起到开关的作用,实现对水的加热处理。
图2.5开关量控制环节
(三)数据采集的设置、控制单元
利用X5045EEPROM存储测量值上下限和开机、关机时间,并且具有看门狗定时器功能,来进行数据采集等过程的设置和控制。
1.X5045芯片引脚
引脚定义如图2.6所示。
图2.6X5045的引脚图
①SO:
串行数据输出端,数据在SCK的下降沿输出到SO上。
②SI:
串行数据输入端,所有操作命令、字节地址及写入的数据在此引脚上输入,SI线上输入的数据在SCK的上升沿被锁存。
③SCK:
串行时钟输入端,控制数据的输入和输出。
④/CS:
芯片选择输入端(片选)。
当CS/为低电平时,X25045能工作。
CS/的电平变化将复位看门狗定时器。
⑤VCC:
电源电压。
⑥/WP:
写保护输入端,当WP/为低电平时,对芯片的写操作被禁止,其他功能仍正常。
WP/为高电平时,写操作允许,其他功能仍然正常。
⑦/RESET:
复位输入端,漏极开路输出方式,高电平有效。
用于电源检测和看门狗超时输出。
⑧GND:
电源地。
2.X5045的功能
(1)上电复位
当器件通电并超过Vcc时,X5045内部的复位电路将会提供一个约为200ms的复位脉冲让微处理器能够正常复位。
(2)看门狗定时器
看门狗定时器对微处理器提供了一个因外界干扰而引起程序陷入死循环或“跑飞”状态保护的功能。
X5045内部的一个控制寄存器中有两位可编程位,决定了定时周期的长短。
当系统出现故障时,在设定的时间内如果没有对X5045进行访问,看门狗定时器以RESET信号作为输出响应,即变为高电平,延时约200ms后,RESET由高电平变为低电平。
/CS的下降沿复位看门狗定时器。
(3)低电压检测
工作过程中X5045监测电源电压下降,电源电压跌落到Vcc以下时,会产生一个复位脉冲,复位脉冲保持有效到电源电压降1V以下。
如果电源电压在降落到门限电压后上升,则在电源电压超过门限电压后延时约200ms,复位信号消失,使得微处理器可以继续工作。
3.X5045与单片机的接口电路
接口电路如图2.7所示,89C52的P1.0、P1.1、P1.2、P1.3脚分别与X5045的片选端1脚(/CS)、串行输入2脚(SO)、串行时钟6脚(SCK)和串行输出5脚(SI)相连,二者的RESET引脚相连。
P1.0作为芯片选择输入端(片选)负责X25045是否选通,当89C52访问X25045时将/CS置低电平。
/CS信号一般不通过P2口选通,因为P2口工作于地址总线时,其输出是脉冲方式,呈现高电平,不能保证片选持续有效,也就不能对其进行任何操作。
在这里不使用/WP信号,直接接+5V。
X5045与单片机引脚连接和相关地址的分配如下:
/CS:
片选端,低电平有效,与P1.0相连;
CLK:
串行时钟输入端,与P1.2相连;
SO:
串行数据输出端,与P1.1相连;
SI:
串行数据输入端,与P1.3相连
RESET:
复位端,与单片机的复位引脚RESET相连。
图2.7X5045与单片机的接口电路
(四)人机交互单元
该单元采用HD7279芯片来进行键盘和LED显示器的管理,该芯片采用串行接口方式,可以同时驱动8位共阴极LED数码管或64位独立LED发光二极管,同时能对多达8×
8的键盘矩阵进行监视,具有自动消抖并识别按键代码的功能。
1.HD7279的引脚介绍
其引脚排列如图2.8所示,电源采用+5V供电,DIG0-DIG7分别为8个LED数码管的位驱动输出端。
SA-SG分别为LED数码管的A-G的输出端。
DP为小数点的驱动输出端。
HD7279与微处理器接口线只需要4条,其中非CS为片选信号(低电平有效)。
RC引脚用于连接HD7279的外接振荡元件,其典型值为R=1.5千欧,C=15pF。
RESET为复位端。
该端由低电平变成高电平并且保持25ms即复位结束。
通常,该端接+5V即可。
图2.8HD7279的引脚
2.AT89C52与HD7279接口
如图2.9所示,89C52的P1.4、P1.5、P1.6、P1.7分别与HD7279A的6脚(/CS)、7脚(CLOCK)、8脚(DATA)和9脚(/KEY)相连。
P1.4作为片选线,负责HD7279A是否选通,是8位准双向I/O口,可带4个LSTTL负载。
当89C52访问HD7279A(写入指令、显示数据、位地址、段地址或读出键值)时,将/CS置低电平。
DATA为串行数据,当89C52向HD7279A发送数据时,DATA为输入端;
当89C52从HD7279A读入数据时,DATA为输出端。
CLK为数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A或从HD7279A中读出数据。
KEY为按键信号输出端,在无键按下时为高电平,有键按下时为低电平,并一直保持到按键释放为止。
3.键盘控制单元
利用HD7279的10脚作为行线,18脚—22脚作为列线组成5键的键盘,完成对键盘的译码和键值分别为20H、18H、10H、08H、00H。
根据键值就可以确定是哪个键按下,具体见图2.10。
图2.9AT89C52与HD7279A接口电路
图2.10HD7279与LED、键盘接口电路
4.LED数码单元
HD7279A是的串行控制芯片,能同时驱动8位共阴极LED数码管,在这里我们只用到了8位共阴极LED数码管。
HD7279A是动态循环显示方式。
HD7279A的10脚-17脚分别与8位LED数码管的g、f、e、d、c、b、a、dp段相连,18脚-25脚为LED数码管的位驱动输出端,负责LED每一位的亮与灭,如图2.10所示。
三、软件设计
(一)主程序设计
1.主程序和中断流程图
主程序主要完成系统的初始化功能,流程图如图3.1所示,其中包括内部变量清零、看门狗定时器初始化、键盘/显示芯片初始化、时钟芯片初始化,完成初始化功能后,系统进入休眠状态,可减少功耗和提高抗干扰能力,由各种中断唤醒,执行完中断服务程序后,重新进入休眠状态,系统的各任务在T0中断服务程序中执行,中断服务程序流程图如图3.2所示。
3.1主程序流程图3.2中断服务程序流程图
(二)人机接口单元软件
1.键处理程序流程图
首先判断有无键按下,有键按下时,KEY-OK标志位置0;
无键按下时,KEY_OK标志位置1。
判断键有无处理过,处理过则返回,未处理过,则KEY-FIG位置0,且读出键值,根据键值的不同调用相应的子程序,从而保证每个按键只处理了一次,如图3.3所示。
图3.3键处理程序流程图
2.各按键功能和子程序说明
本系统有五个按键功能如表3-1所述。
表3-1按键功能及键码表
按键
功能
键码
意义
设定
设置参数键
20H
每按下一次,就显示一个设定参数值
增建
增加
18H
每按一下,设定参数加一
减键
减少
10H
每按一下,设定参数减一
左移
08H
每按一下,LEFT加一
确认
确认键
00H
每次修改完参数后,按下此键,即可将修改后的参数存入内存中保存起来
(三)DS1302的软件设计
采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。
图3.4为DS1302流程图。
图3.4DS1302流程图
总结
通过对整个设计的了解,为以后我在这方面的深入学习打下基础,让我更深刻的体会到“学以致用”的道理。
同时也提高了我解决实际问题的能力,培养了自我创新意识。
在设计中我必须首先熟悉和掌握单片机的结构及工作原理,单片机的接口技术及相关外围芯片的外特性,控制方法。
以单片机核心的电路设计的基本方法和技术了解有关电路参数的计算方法。
通过这次毕业设计,无论从选题到定稿,从理论到实践都使我学到了很多东西,它不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得到实践。
附录一主板原理图
附录二副板原理图
附录三温度传感器程序
#include<
reg52.h>
math.h>
INTRINS.H>
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P1^3;
//ds18b20端口
ucharTemp_Integer=0;
ucharTemp_Decimal=0;
ucharfg=0;
voiddelay2(uintus)
{
while(us--);
}
ucharInit_DS18B20(void)
ucharx=0;
DQ=1;
//DQ复位
delay2(8);
//稍做延时
DQ=0;
//单片机将DQ拉低
delay2(80);
//精确延时大于480us
//拉高总线
delay2(10);
x=DQ;
//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay2(5);
returnx;
ucharReadOneChar(void)//读一个字节,"
LSB"
uchari=0;
uchardat=0;
for(i=8;
i>
0;
i--)
{
DQ=0;
//给脉冲信号
dat>
>
=1;
DQ=1;
if(DQ)
dat|=0x80;
delay2(5);
}
return(dat);
voidWriteOneChar(unsignedchardat)//写一个字节
i>
i--)
DQ=dat&
0x01;
/**********************DS18b20读取主函数,整个流程5ms左右************************/
ucharReadTemperature(void)//读取温度
ucharL_18B20=0;
ucharH_18B20=0;
Init_DS18B20();
WriteOneChar(0xCC);
//skip:
跳过读序号列号的操作
WriteOneChar(0x44);
//convert:
启动温度转换
delay2(200);
//skip:
WriteOneChar(0xBE);
//read:
读取温度寄存器,前两个就是温度
L_18B20=ReadOneChar();
//读取温度低八位数据
H_18B20=ReadOneChar();
//读取温度高八位数据
if(H_18B20>
0x7f)//最高位为1时温度是负
L_18B20=~L_18B20+1;
//补码转换,取反加一
H_18B20=~H_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 多功能 饮水机 设计 毕业设计