《最新毕业设计——基于单片机的多功能饮水机设计.doc》由会员分享,可在线阅读,更多相关《最新毕业设计——基于单片机的多功能饮水机设计.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于单片机的多功能饮水机设计【摘要】随着计算机技术的发展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛。本文所设计的智能饮水机就是单片机结合传感器的一个简单应用。本设计综合单片机、电子技术理论,从实际出发,完善了饮水机的功能。设计方案主要采用数字温度传感器作为检测单元,并运用了AT89C52作为主机单元、X5045EEPROM作为存储单元、HD7279芯片来管理键盘和显示器。整个系统实现了加热、对温度上下限的控制和定时加热功能。由于采用了自动检测和控制的电子设计技术,可较好地实现对水温的测量和控制,具有较广泛的应用前景。【关键词】:温度采集,主机单元,存储单元,控
2、制ABSTRACTWith the development of computer technology, computer technology microcontroller technology has become one of the unique branch, microcontroller application field of more and more widely. This design intelligent water dispenser is simply a single-chip combining sensor applications. The syst
3、em design integrated SCM and electronic technology theory, from life reality, perfect the function of water dispenser. Design scheme, mainly adopts digital temperature sensor DS18B20 consisting temperature measuring system as the test unit and USES a AT89C52 as host unit, X5045EEPROM as storage unit
4、, HD7279 chip to manage the keyboard and screen. The whole design system realize three functions, namely heating, for the temperature control of the upper and timing heating. Compared with the traditional water dispenser, as a result of the automatic detection and control of electronic design techno
5、logy, can be achieved for temperature measurement and control, and has a broad prospect of application. 【KEY WORD】: temperature gathering, the host units, storage location and control 目 录引言1一、总体设计1二、硬件设计2(一)AT89C52单片机2(二)温度采集单元3(三)数据采集的设置、控制单元6(四)人机交互单元8三、软件设计9(一)主程序设计9(二)人机接口单元软件10(三)DS1302的软件设计11总
6、结13附录一14附录二15附录三16参考文献19致 谢20 引言随着科技的发展,单片机技术已经渗透到人类生活的方方面面,在家用电器、通讯产品等日用电子设备中都可见到单片机。目前广泛使用的饮水机,具有价格低廉、制造简便等优点。但是随着用户长时间使用,这些饮水机的缺点逐渐暴露出来,主要体现在以下几个方面:第一,功能相对简单。只有简单的温度控制,用户不能根据自己的喜好设定温度。第二,能耗较大。在无人使用时,饮水机仍处在开机状态,造成了能源的大量浪费。第三,长期饮用饮水机里的水会对健康不利。由于广泛使用的饮水机烧水不能完全沸腾,长期饮用这种水会对身体造成较大的伤害。本论文所设计的饮水机是在单片机控制下
7、进行的温度控制,并通过显示器显示温度。对单片机及外围设备为主的系统进行了硬件和软件设计,并在此设计的基础上给出相应的原理图。设计方案中主要采用数字温度传感器DS18B20组成的测温系统作为检测单元,并运用了AT89C52作为主机单元、X5045EEPROM作为存储单元、HD7279芯片来管理键盘和显示器。整个设计系统实现了加热、对温度上下限的控制和定时加热的功能。采用的自动检测和控制的电子设计技术,可较好地实现对水温的测量和控制,具有较广泛的应用前景。用户可根据自己实际情况来设定不同的温度上限。上电后系统将自动运行,显示的是当前的水温,按一次设定按键可实现温度控制的上限值。温度下限、定时开关机
8、步骤同上相似。用增键、减键、左右键来完成对应的参数设置。一、总体设计多功能饮水机总体框图如图1.1所示。本系统主要由单片机、温度传感器、控制电路、LED显示、键盘、电源电路组成。系统以AT89C52单片机为核心,数字温度传感器将采集到的温度数据送入单片机处理,再将处理好的数据送到HD7279,进行按键和数码管的管理。程序采用E2PROM存储器,可以很容易的实现软件升级,从软件方面提高准确度。同时,可以对加热实现基本的控制,有效防止“千滚水”对身体造成的伤害。图1.1 总体框图二、硬件设计(一)AT89C52单片机1.AT89C52单片机特点:兼容MCS51指令系统;8k可反复擦写(1000次)
9、Flash ROM; 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共
10、有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.外部引
11、脚及功能(1)AT89C52各引脚总体介绍(如图2.1所示)图2.1 AT89C52引脚配置1)电源引脚VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。2)时钟引脚XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz晶振。 3)RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平,使单片机复位。4)PSEN程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。5)EA/
12、VPP外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。如果加密位LBI被编程,复位时内部会锁存EA端状态。(二)温度采集单元1.温度传感器(1)DS18B20温度传感器的特点本单元选用DS18B20温度传感器来进行温度数据的采集,其特点如下:单线结构,只需一根信号线和CPU相连。不需要外部元件,直接输出串行数据。不需要外部电源,直接通过信号线供电,电源电压范围为3.3V5V。 测温精度高,测温范围为:-55125,在-1085范围内,精度为O.5。测温分辨率高,当选用12位转换位数时,温度分辨率可达0.0625。数字量的转换精度及转换
13、时间可通过简单的编程来控制,9位精度的转换时间为93.75ms,10位精度的转换时间187.5ms,12位精度的转换时间750ms。 具有非易失性上、下限报警设定的功能,用户可方便地通过编程修改上、下限的数值。 可通过报警搜索命令识别哪片DS18820采集的温度超越上、下限。(2)DS18B20内部结构DS18B20主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。64位光刻ROM:使每一个出厂的DS18820地址序列号都各不相同,这样,就可以实现一根总线上挂接多个DS18820。温度传感器:完成对温度的测量,输出格式为16位符号扩展的二进制补码。低
14、温触发器TL、高温触发器TH:用于设置低温、高温的报警数值。DS18820完成一个周期的温度测量后,将测得的温度值和TL、TH相比较,如果小于TL,或大于TH,则表示温度越限,将该器件内的告警标志位置位,并对主机发出的告警搜索命令,作出响应。修改上、下限温度值时,只需使用一个功能命令即可对TL、TH写入。配置寄存器:R0、R1组成,其值决定温度转换的精度位数、转换时间等。(3)DS18B20与单片机接口电路如图2.2所示,DQ为温度传感器的数据输入/输出端,接到单片机的P2.0口。GND接地,VCC接电源。DS18B20温度传感器将感受到的水温由DQ端口输出,通过单片机P2.0端口送入单片机进
15、行处理与控制。图2.2 DS18B20与单片机接口电路2.时钟单元本次设计选用DS1302芯片作为副板的核心单元。(1)芯片引脚DS1302的引脚排列图如图2.3所示,Vcc1是后备电源,Vcc2是主电源。主电源关闭时,时钟能连续运行。当Vcc2Vcc10.2V时,Vcc2给DS1302供电。当Vcc2Vcc1时,Vcc1给DS1302供电。X1和X2外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻
16、态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。图2.3 DS1302 引脚(2)DS1302与单片机的接口电路如图2.4所示,脚RST是复位端,接到89C52的P2.4引脚。GND引脚接地,VCC接电源。SCLK是串行时钟输入端,接到89C52的P2.5引脚。I/O是数据输入/输出端,接到单片机的P2.3口,X1、X2是32.768MHz晶振输入/输出端。图2.4 DS1302与单片机的接口电路3.控制单元本控制器由9012三极管、固态继电器、加热电阻组成,如图2.5所示。
17、9012三极管与固态继电器结合起到开关的作用,实现对水的加热处理。图2.5 开关量控制环节(三)数据采集的设置、控制单元利用X5045EEPROM存储测量值上下限和开机、关机时间,并且具有看门狗定时器功能,来进行数据采集等过程的设置和控制。1.X5045芯片引脚 引脚定义如图2.6所示。图2.6 X5045的引脚图SO:串行数据输出端,数据在SCK的下降沿输出到SO上。SI:串行数据输入端,所有操作命令、字节地址及写入的数据在此引脚上输入,SI线上输入的数据在SCK的上升沿被锁存。SCK:串行时钟输入端,控制数据的输入和输出。/CS:芯片选择输入端(片选)。当CS/为低电平时,X25045能工
18、作。CS/的电平变化将复位看门狗定时器。VCC:电源电压。/WP:写保护输入端,当WP/为低电平时,对芯片的写操作被禁止,其他功能仍正常。WP/为高电平时,写操作允许,其他功能仍然正常。/RESET:复位输入端,漏极开路输出方式,高电平有效。用于电源检测和看门狗超时输出。GND:电源地。2.X5045的功能(1)上电复位当器件通电并超过Vcc时,X5045内部的复位电路将会提供一个约为200ms的复位脉冲让微处理器能够正常复位。(2)看门狗定时器看门狗定时器对微处理器提供了一个因外界干扰而引起程序陷入死循环或“跑飞”状态保护的功能。X5045内部的一个控制寄存器中有两位可编程位,决定了定时周期
19、的长短。当系统出现故障时,在设定的时间内如果没有对X5045进行访问,看门狗定时器以RESET信号作为输出响应,即变为高电平,延时约200ms后,RESET由高电平变为低电平。/CS的下降沿复位看门狗定时器。(3)低电压检测工作过程中X5045监测电源电压下降,电源电压跌落到Vcc以下时,会产生一个复位脉冲,复位脉冲保持有效到电源电压降1V以下。如果电源电压在降落到门限电压后上升,则在电源电压超过门限电压后延时约200ms,复位信号消失,使得微处理器可以继续工作。3.X5045与单片机的接口电路接口电路如图2.7所示,89C52的P1.0、P1.1、P1.2、P1.3脚分别与X5045的片选端
20、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
21、相连RESET:复位端,与单片机的复位引脚RESET相连。图2.7 X5045与单片机的接口电路(四)人机交互单元该单元采用HD7279芯片来进行键盘和LED显示器的管理,该芯片采用串行接口方式,可以同时驱动8位共阴极LED数码管或64位独立LED发光二极管,同时能对多达88的键盘矩阵进行监视,具有自动消抖并识别按键代码的功能。1.HD7279的引脚介绍其引脚排列如图2.8所示,电源采用+5V供电,DIG0-DIG7分别为8个LED数码管的位驱动输出端。SA-SG分别为LED数码管的A-G的输出端。DP为小数点的驱动输出端。HD7279与微处理器接口线只需要4条,其中非CS为片选信号(低电平有
22、效)。RC引脚用于连接HD7279的外接振荡元件,其典型值为R=1.5千欧,C=15pF。RESET为复位端。该端由低电平变成高电平并且保持25ms即复位结束。通常,该端接+5V即可。图2.8 HD7279的引脚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置低
23、电平。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.9 AT89C52与HD7279A接口电路图2.10
24、 HD7279与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所示,其中包括内部变量清零、看门狗定时器初始化、键盘/显示芯片初始化、时钟芯片初始化,完成初始化功能后,系统进入休眠状态,可
25、减少功耗和提高抗干扰能力,由各种中断唤醒,执行完中断服务程序后,重新进入休眠状态,系统的各任务在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 按键功能
26、及键码表按键功能键码意 义设定设置参数键20H每按下一次,就显示一个设定参数值增建增加18H每按一下,设定参数加一减键减少10H每按一下,设定参数减一左移左移08H每按一下,LEFT加一确认确认键00H每次修改完参数后,按下此键,即可将修改后的参数存入内存中保存起来(三)DS1302的软件设计采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。图3.4为DS1302流程图。图3.4 DS1302流程图 总结通过对整个设
27、计的了解,为以后我在这方面的深入学习打下基础,让我更深刻的体会到“学以致用”的道理。同时也提高了我解决实际问题的能力,培养了自我创新意识。在设计中我必须首先熟悉和掌握单片机的结构及工作原理,单片机的接口技术及相关外围芯片的外特性,控制方法。以单片机核心的电路设计的基本方法和技术了解有关电路参数的计算方法。通过这次毕业设计,无论从选题到定稿,从理论到实践都使我学到了很多东西,它不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。同时也明白了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得到实践。附录一 主板原理图附录二 副板
28、原理图附录三 温度传感器程序#include#include#include#define uchar unsigned char#define uint unsigned intsbit DQ=P13; /ds18b20 端口uchar Temp_Integer=0;uchar Temp_Decimal=0;uchar fg=0;void delay2(uint us)while(us-);uchar Init_DS18B20(void) uchar x=0;DQ = 1; /DQ复位delay2(8); /稍做延时DQ = 0; /单片机将DQ拉低delay2(80); /精确延时 大于4
29、80usDQ = 1; /拉高总线delay2(10);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay2(5);return x;uchar ReadOneChar(void) /读一个字节,LSB uchar i=0; uchar dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay2(5); return(dat);void WriteOneChar(unsigned char dat) /写一个字节 uchar i=0; for (i=
30、8; i0; i-) DQ = 0; DQ = dat&0x01; delay2(5); DQ = 1; dat=1; delay2(5);/*DS18b20读取主函数,整个流程5ms左右*/uchar ReadTemperature(void) /读取温度 uchar L_18B20=0; uchar H_18B20=0; Init_DS18B20(); WriteOneChar(0xCC); / skip:跳过读序号列号的操作 WriteOneChar(0x44); / convert:启动温度转换 delay2(200); Init_DS18B20(); WriteOneChar(0xC
31、C); /skip:跳过读序号列号的操作 WriteOneChar(0xBE); /read:读取温度寄存器,前两个就是温度 L_18B20=ReadOneChar(); /读取温度低八位数据 H_18B20=ReadOneChar(); /读取温度高八位数据 if(H_18B200x7f) /最高位为1时温度是负 L_18B20=L_18B20+1; /补码转换,取反加一 H_18B20=H_18B20; fg=1; /读取温度为负时fg=1 Temp_Decimal=L_18B20&0x0f; /取温度小数部分二进制 L_18B20=L_18B204; /取温度整数部分二进制 H_18B20=H_18B204; Temp_Integer=H_18B20|L_18B20;参考文献1何立民.单片机应用系统设计.航空航天大学出版社.25,46502张毅刚.单片机原理及接口技术.哈尔滨工业大学出版社.35423谭浩强.单片机课程设计.清华大学出版社.21324李广弟.单片机基础.北京航空航天大学出版社.56645注定花,戴汝平.单片微机原理与应用.清华大学出版社.3654