可控温电热壶(信电学院电气09-2张建伟,贾明泽)_第1页
可控温电热壶(信电学院电气09-2张建伟,贾明泽)_第2页
可控温电热壶(信电学院电气09-2张建伟,贾明泽)_第3页
可控温电热壶(信电学院电气09-2张建伟,贾明泽)_第4页
可控温电热壶(信电学院电气09-2张建伟,贾明泽)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2011年度学生科研立项结题申报书作品名称:可控温电热壶作者姓名:张建伟、贾明泽 学院:信息与电气工程学院班级:电气工程及其自动化09-2联系电话指导教师:张仁彦作品类别:自然科学类学术论文哲学社会科学类社会调查报告和学术论文科技发明制作 其它 二一一年十一月可控温电热壶(作品名称)摘要:本作品为可控温电热壶,所完成的主要功能为:1温度模块:实时温度检测、采集、传输与显示。2时间模块:利用实时时钟芯片,编程实现时间计时,并送至数码管进行动态显示。3闹钟与温度报警模块:通过独立按键实现快速设置当前时间、闹钟时间、报警温度,并通过循环检测实现闹钟与温度报警提醒,温度高于报

2、警值时自动断开电源,低于报警值时接通电源,实现温度的准确控制。4掉电保存模块:实现数据掉电自动保存,通电自动恢复的功能。目 录第一章 概述······································

3、83;···············31.1目的意义及国内外同类研究的动态······························31.2课题主要

4、内容及技术指标······································3第二章 系统的总体设计思想········

5、83;································32.1系统的总体设计方案···············&#

6、183;··························42.2各模块的设计方案·····················&#

7、183;······················42.2.1温度检测控制模块·························

8、·················42.2.2实时时钟设计模块······························

9、3;···········52.2.3数码管显示与指示灯功能设计································72.2.4按键设计模块·

10、83;············································72.2.5外部电路及供电方式的设计··

11、83;·······························7第三章 硬件电路的实现················

12、83;····························83.1 温度检测与控制模块硬件设计··················

13、83;···············83.2 实时时钟模块电路硬件设计·······························

14、3;····83.3 数码管显示与指示灯硬件设计··································93.4外部电路及供电方式硬件设计······

15、;····························10第四章 控制系统的程序结构···················&#

16、183;·····················114.1 程序概述··························

17、3;·························114.2 主程序的C语言程序······················&

18、#183;···················114.3 子程序的C语言程序···························

19、3;··············124.3.1变量定义程序·································

20、83;·············124.3.2 DS18B20程序·································

21、3;·············144.3.3 PCF8563程序··································

22、;·············18 第一章 概述1.1目的意义及国内外同类研究的动态目的与意义:是实现温度与时间的同时显示,兼顾温度控制与闹钟提醒的双重功能,方便用户在日常使用中的对于温度控制的需要,并且实现按时提醒用户开启电热壶的要求,而且在日常生活中通过按键反复设置时间与报警温度是一项复杂繁琐的工作,而在本次设计中特别考虑到这一点,通过在STC89C52单片机的支路上设置开关,从而实现单片机与PCF8563的分别供电,从而避免了在不使用电热壶时数码管显示所造成的能

23、源损耗,减少了经济支出。而在PCF8563中纽扣电池的加入保存了设置数值,避免了重新上电后数据的丢失,减少了用户反复设置的苦恼。国内外同类的研究动态:目前,国内已有类似方向的研究(专利号:200820012742),而且实际生产中也有此类产品问世,但是结构多为壶体与底座的连接结构,显示装置设计在底座上,不易移动,占体积大,活动不灵活。而本次设计的控制电路独立拆卸,所用元器件价钱便宜,制作方便。弥补了此前产品中的不足之处。1.2课题主要内容及技术指标主要内容:1,温度传感器DS18B20的设计。 2,实时时钟芯片PCF8563的设计。 3,功能按键与数值调整按键设计。 4,数码管显示与蜂鸣器,指

24、示灯等显示提示电路的设计。 5,继电器单元设计与外部供电方式设计。技术指标:1,温度误差为0.5摄氏度。 2,时间误差为1秒/月第二章 系统的总体设计思想2.1系统的总体设计方案本次设计主要由以下五个设计模块构成即温度检测控制模块,实时时钟设计模块,数码管显示与指示灯功能设计,按键设计模块,外部电路及供电方式的设计。其中温度检测控制模块主要由DS18B20数字温度传感器,SRD-05-VDC-SL-C继电器组成。其中温度传感器负责温度的采集以及以数字量的形式传递至单片机,继电器完成达到预设温度时断开电源的工作,从而实现单片机对温度的控制。实时时钟设计模块则是由PCF8563组成,通过IIC总线

25、传递时间数据,并且RTC中的RAM作为设置数值的存储空间,保证了掉电不丢失预设数据。数码管显示与指示灯功能设计模块则主要是由LG3461共阴极8段8位数码管与发光二级管共同组成,数码管实现预设温度,实时温度,实时时间与预设时间的动态显示,LED灯负责显示当前所处状态,如设置时间,设置温度,设置闹钟等。按键设计模块是由五个独立按键组成的,其中三个是负责按键功能转换,两个是负责加减,从而实现闹钟,时间与报警温度的设置。外部电路及供电方式的设计,这一部分主要特点是实现在不使用电热壶时关闭单片机的电源而始终保持PCF8563的供电,保证所保存的数据,与时间显示正确。这就需要并联单片机与PCF8563而

26、在单片机所在支路上加一个开关,负责单片机支路的供电。2.2 硬件各模块的设计系统的各模块之间的联系与功能分配如下图所示;按键功能设计模块温度检测控制模块数码管显示与指示灯功能设计STC89C52单片机实时时钟设计模块外部电路及供电方式的设计图21系统结构功能框图2.2.1温度检测控制模块这部分主要由两个大的元器件组成,分别是继电器与DS18B20,这其中DS18B20负责的是温度检测与返回,继电器负责的是温度控制。图2-2 DS18B20外观图图2-3 DS18B20的内部结构图18b20 是单线温度传感器,广泛用于多点温度检测,因为他是数字信号,所以可以避免长距离误差。其中一种封装外形如同普

27、通三极管,2 个电源引脚,一个信号接口,硬件连接只需要一个10K 电阻,主要是程序部分,由于是单线采集,精度较高是采样时间比较长,接近1S,所以重复采样的频率不能太高,不然会造成数据紊乱。继电器信号输入端,当输入信号“1”时,继电器吸合,反之释放,所以说控制电路很简单,只是对I0口的操作就可以完成相关设置。2.2.2 实时时钟设计模块图2-4 PCF8563管脚图图2-5 PCF内部结构框图PCF8563是一款工业级,内含IIC总线接口功能的低功耗多功能时钟、日历芯片。PCF8563性价比比较高,它已被广泛用于电表、水表、气表、电话。传真机、便携式仪器及电池供电的仪器仪表等产品领域。通过SDA

28、、SCL实现与单片机的通信,通过IIC协议时间传至单片机,并且在设置闹钟与报警温度时把数据存入内部RAM.2.2.3 数码管显示与指示灯功能设计本次试验中采用的是LG3641共阴极数码管,管脚为8位段选分别是a,b,c,d,e,f,g,h,dp,一位位选。共阴极接法决定了当给引脚高电平时有效。要显示某一指定字符码,需要满足两个条件,字位引脚为高,相应的段选送高电平。本次试验中采用了动态显示,就是利用人眼的视觉残留效果循环动态扫描。从而达到显示时间与温度的目的。发光二级管的原理简单,操作方便。当外部电压大于二极管的导通压降时,二极管道通,另外二极管的亮度由流经二极管的电流决定,电流为50mA-2

29、00mA二极管的亮度为可见一般使用亮度。本实验中使用了三只发光二级管,分别与IO口连接,由输出的高低决定亮或不亮,分别指示设置闹钟,设置温度,设置报警温度这三种状态。2.2.4 按键设计模块按键设计模块在本次试验中采用的是独立按键。原因是本次按键中所需按键数目较少,独立按键较矩阵键盘编程更为简单。图2-6 独立按键示意图2.2.5 外部电路及供电方式的设计本次试验中为了实现掉电数据不丢失以及在电热壶不加热时数码管无显示节约电能的要求,设计主电路为两节纽扣电池供电,PCF8563与单片机及其外界设备并联,并在单片机所在之路加一个按键开关实现单片机及其外设自身的电源控制,而PCF8563始终在上电

30、状态。第三章 硬件电路的实现3.1 温度检测与控制模块硬件设计如图所示为DS18B20的连线设计图 其中1脚接VCC,3脚接地,2脚接单片机的P1.3口,作为数据传输线,为保证在高电平期间,数据线可靠的传输高,R20为外接上拉电阻,阻值为10k. 图2-7 DS18B20接线图控制器件继电器的硬件设计,根据继电器的原理硬件设计如下图2-8 继电器硬件连接图继电器的工作原理为当给继电器输入端一个高电平时,继电器吸和,反之则断开。3.2 实时时钟模块电路硬件设计如下图所示实时时钟模块,SDA作为数据线与单片机的P16引脚相连,SCL作为时钟信号线与单片机P15引脚相连,外部提供晶振:32768Hz

31、。图2-8实时时钟模块3.3 数码管显示与指示灯硬件设计图2-9 数码管显示电路的硬件连接图由数码管原理可知;数码管的段选接在单片机P0口上,通过段选选通。位选为利用P2口的第三位通过74HC138译码选通具体的位。下图为74HC138的真值表以及管脚图:图2-10 74HC138真值表74HC138管脚结构图发光二级管的结构简单,接线只需将阴极与单片机IO端口相连,阳极接正电源。3.4 外部电路及供电方式硬件设计有220V交流电源经稳压源变压为5V直流电给系统供电,单片机电源由开关统一控制,8563实时时钟芯片时刻有电源供电。第四章 控制系统的程序结构与软件框图4.1程序概述软件设计的成功与

32、否关系到整个系统能否具有使用灵活。操作简便,可靠性强等优点,而设计良好的软件能够做到在较少地改变硬件电路的情况下,方便地改进系统的功能,这就对软件的设计提供了较高的要求。遵循“自顶向下,逐步求精“的结构化设计原则,先将任务层次化,然后对每一层再逐步细化,每一层实现的功能尽量是独立的,彼此之间互相影响应该较少,然后按照与划分相反的过程编写,调试程序,待所有子程序都编写设计通过后,依它们之间的逻辑顺序组合起来,构成完整的程序软件。采用这种方法,不仅使软件可读性好,维护方便且易于修改移植。如用户有特殊要求需要改动软件时,则只需修改或替换某子任务所对应的子程序即可,从而加快了系统研制进度,缩短了软件开

33、发周期。软件程序是整个控制系统的核心部分,本次编程用的是C语言。4.2 主程序的C语言程序/主函数#include<reg52.h>#include<define.h>#include<E2proom.h>#include<18b20.h>#include<12r887.h> void main() init();while(1) keyscanwen(); if(wendu=0) temp=readtemp(); /读取温度 jiancewendu(temp); display(temp); /显示温度 keyscan();if(f

34、lag=0) P8563_Readtime(); shi=bcdshi(g8563_Store2); fen=bcdshi(g8563_Store1); miao=bcdshi(g8563_Store0); jianceshijian(shi,fen,miao); displayshi(shi); / displayfen(fen); / displaymiao(miao); /显示函数 guanfeng(); guanfeng1(); 4.3 子程序的C语言程序4.3.1 变量定义头文件/变量定义#define uchar unsigned char#define uint unsigned

35、 intuchar g8563_Store9; /*时间交换区,全局变量声明*/uchar bcdshi(uchar);uchar shibcd(uchar);uint temp,zhang=20;uchar jia,ming,s1zhi,s2zhi,w1zhi,ashi,afen,amiao,ashi1,afen1,amiao1;uchar temp1,mada1,mada2,mada3,k1,k2,k3,miao,shi,fen,flag1,fengzhuang;uchar c8563_Store9;sbit fengming=P27; /蜂鸣器接口 sbit sda=P16; / 将p1

36、.0口模拟数据口 sbit scl=P15; / 将p1.1口模拟时钟口 sbit s1=P11; /时钟设定sbit s2=P12; /闹钟设定sbit naozhi=P25; /闹钟指示uchar code tableshijian=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1,0x08,0x54; /7段数码管段码表共阳uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x

37、39,0x5e,0x79,0x71; /7段数码管段码表共阳void display(uchar);uchar receive_CFGbyte(uchar);void P8563_Readtime();void P8563_Readwen();void P8563_Readnao();void P8563_init();void P8563_settime();void P8563_setwen();void P8563_setnao();void displayshi(uint);uchar bcdshi(uchar x) return (x>>4)*10+(x&0x0f

38、);uchar shibcd(uchar x) return (x/10)*16+(x%10);void delay2(uint z) /时钟延时uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void delay(uint x) uchar i; while(x-) for(i=0;i<121;i+); void delay1(uint i) /延时函数 while(i-); void init() P8563_init(); TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256;

39、 EA=1; ET0=1; fengming=1; fengzhuang=0; flag1=0; /闹钟响的标志位 mada1=0; mada2=0; mada3=0; k1=0; k2=0; k3=0; s1zhi=1; s2zhi=1; w1zhi=1; zhang=1000; jia=0;void didi() fengming=0; delay2(15); fengming=1; delay2(15); 4.3.2 DS18B20程序/名称:18B20温度调节显示#include<intrins.h>sbit DQ=P24; /ds18b20 端口2.4sbit w1=P1

40、0; /定温调节sbit w2=P13; /调节温度、时间+sbit w3=P14; /调节温度、时间-sbit led=P26; /定温指示sbit jidian=P23; /控制继电器uchar snum,wendu,made=0;/*/* 数码管显示函数 */*/void display(uchar wen) uchar shi,ge; shi=wen/10; ge=wen%10; P0=tablege; P2|=0x07; delay1(350); P0=tableshi; P2&=0xfe; delay1(200); void display_() P0=tableshiji

41、an16; P2&=0xfe; P2|=0x06; delay1(100); P0=tableshijian16; P2|=0x07; delay1(50); /*/* 对18b20复位 */*/void fuwei18b20(void) uchar x=0; DQ = 1; /DQ复位 delay1(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay1(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay1(10); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay1(5);/*/* 读一个字节 */*/uns

42、igned char ReadOneChar(void)uchar i=0;uchar dat=0;for (i=8;i>0;i-) DQ = 0; / 给脉冲信号 dat>>=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay1(5); return(dat);/*/* 写一个字节 */*/void WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay1(5); DQ = 1; dat>>

43、=1; delay1(5);/*/* 读取温度 */*/unsigned int readtemp(void)uchar a=0;uint b=0;uint t=0;fuwei18b20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay1(20);fuwei18b20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b

44、<<=4;t=(a>>4)+b;return(t);void keyscanwen() if(s1zhi&&s2zhi)=1) if(fengzhuang=0) if(w1=0) delay2(2); if(w1=0) while(!w1); w1zhi=0; snum+; wendu=1; if(snum=1) temp1=0xff; jia=0; if(snum=1) if(w2=0) delay2(5);if(w2=0) delay2(100); made=1; temp1+;if(temp1=100)temp1=0; if(w3=0) delay

45、2(5);if(w3=0) delay2(100); made=1; if(temp1=0xff) temp1=1; temp1-;if(temp1=0)temp1=99; if(made=0) display_(); else display(temp1); if(snum=2) snum=0; wendu=0; made=0; w1zhi=1; if(temp1=0xff) c8563_Store6=shibcd(110); else c8563_Store6=shibcd(temp1); g8563_Store6=c8563_Store6; /存温度 P8563_setwen(); de

46、lay(2); P8563_Readwen(); delay(2); temp1=bcdshi(g8563_Store6); /定温数据读取 if(temp1=110) led=1; else led=0; void jiancewendu(uchar ding) if(ding>=temp1) if(jia=0) fengming=0; /开蜂鸣器 ming=0; else if(jia=1) fengming=1; ming=1; jidian=0; /开继电器 else jidian=1; /关继电器 fengming=1; /关蜂鸣器 ming=1; 4.3.3 PCF8563程

47、序/8563实时时钟时序#include <intrins.h> #define MIN 0x02 /秒寄存器 #define SEC 0x03 /分寄存器 #define HOUR 0x04 /时寄存器 #define DAY 0x05 /日寄存器 #define WEEK 0x06 /周寄存器 #define MONTH 0x07 /月寄存器 #define YEAR 0x08 /年寄存器 #define read_ADD 0xA3 /读器件地址 #define write_ADD 0xA2 /写器件地址 void delayNOP() ; /- / 函数名称: iic_sta

48、rt() / 函数功能: 启动I2C总线子程序 /- void iic_start() sda=1;delayNOP(); / 延时5usscl=1;delayNOP(); / 延时5ussda=0;delayNOP(); / 延时5us /- / 函数名称: iic_stop() / 函数功能: 停止I2C总线数据传送子程序 /- void iic_stop() sda=0; delayNOP();scl=1; delayNOP();sda=1; delayNOP(); /- / 函数名称: slave_ACK / 函数功能: 向从机发送应答位子程序 /- void slave_ACK()

49、sda = 0; delayNOP(); scl = 1; delayNOP(); scl = 0; /- / 函数名称: slave_NOACK / 函数功能: 从机发送非应答位子程序,迫使数据传输过程结束 /- void slave_NOACK() sda = 1; delayNOP(); scl = 1; delayNOP(); scl = 0; /- / 函数名称: check_ACK / 函数功能: 主机应答位检查子程序,迫使数据传输过程结束 /- void check_ACK() scl=1; delayNOP(); while(sda=1); scl=0; delayNOP();

50、 /- / 函数名称: IICSendByte / 入口参数: ch / 函数功能: 发送一个字节 /- void IICSendByte(uchar date) /写一个字节uchar i,temp;temp=date;for(i=0;i<8;i+)temp=temp<<1;scl=0; delayNOP();sda=CY;delayNOP();scl=1;delayNOP();scl=0;delayNOP();sda=1;delayNOP();/- / 函数名称: IICreceiveByte / 返回接收的数据 / 函数功能: 接收一字节子程序 /- uchar IIC

51、receiveByte()/读一个字节uchar i,k;scl=0;delayNOP();sda=1;delayNOP();for(i=0;i<8;i+)scl=1;delayNOP();k=(k<<1)|sda;scl=0;delayNOP(); return k;/- / 用户调用子程序 / 函数名称: write_CFGbyte / 入口参数: CFG_add寄存器地址,CFG_data要写入寄存器的数值 / 函数功能: 发送1位数据子程序 /- void write_CFGbyte(uchar CFG_add,uchar CFG_data) iic_start();

52、 IICSendByte(write_ADD); / 发送器件写地址 check_ACK(); / 检查应答位 IICSendByte(CFG_add); / 发送寄存器地址 check_ACK(); / 检查应答位 IICSendByte(CFG_data); / 发送寄存器数据 check_ACK(); / 检查应答位 iic_stop(); / 全部发完则停止 /- / 用户调用子程序 / 函数名称: receiveNbyte / 入口参数: CFG_add寄存器地址地址 / 出口参数: receive_da / 函数功能: 接收某个寄存器数据子程序 /- uchar receive_C

53、FGbyte(uchar idata CFG_add) uchar receive_da; iic_start(); IICSendByte(write_ADD); /器件写地址 check_ACK(); IICSendByte(CFG_add); /寄存器地址 check_ACK(); iic_start(); IICSendByte(read_ADD); /器件读地址 check_ACK(); receive_da=IICreceiveByte(); slave_NOACK(); / 收到最后一个字节后发送一个非应答位 iic_stop(); return(receive_da); /- / 用户调用函数 / 函数名称: P8563_Readtime / 函数功能: 读出时间信息 /- void P8563_Readtime() g8563_Store0=(receive_CFGbyte(0x02)&0x7f; /*秒*/ g8563_Store1=(receive_CFGbyte(0x03)&0x7f; /*分*/ g8563_Store2=(receive_CFGbyte(0x04)&0x3f; /*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论