摘要
电饭煲,又称作电锅、电饭锅,是大家耳熟能详的家用电器,使用方便,清洁卫生,还具有对食品进行蒸、煮、炖等多种操作功能。常见的电饭锅分为保温自动式、定时保温式以及新型的微电脑控制式三类。普通电饭煲主要由发热盘、限热器、保温开关、杠杆开关、限流电阻、指示灯、插座等组成。
本次课程设计,任务是设计一个微机控制电饭煲的系统智能电饭煲主要由电源部分和控制电路组成,电源部分为220V交流电经过变压器和整流桥后变为一定幅值的直流电,再经过稳压芯片LM7805,输出为+5V的直流电,作为单片机控制部分的电源,控制部分的控制方法大致为:用户按下启动键之后,系统设置一定的加热时间,本系统的加热时间是10分钟,当加热时间到达10分钟或当电热盘温度达到预定的警报限制的要求后,由蜂鸣器和二极管组成的报警系统开始报警,一段时间后,如果没有人员切断电流,系统自动将继电器的开关打开,以切断电热盘的电源,关键词:单片机 电饭煲 定时 报警
1
目录
第一章 概述 ............................................................................................ 3
1.1 设计任务 ..................................................................................... 3 1。2 设计思路 ................................................................................ 3 第二章 硬件部分介绍 ............................................................................ 5
2。1 单片机介绍 ............................................................................ 5 2。2 电源电路 ................................................................................ 6 2。3 液晶显示电路 ........................................................................ 7 2。4 温度检测部分 ........................................................................ 10 2。5 光电隔离电路 ...................................................................... 12 2.6 继电器控制电路 ..................................................................... 13 2。7 其他硬件部分介绍 ................................................................ 15 第三章 程序设计 .................................................................................... 17
3。1 LCD显示定时时间程序简介 ................................................ 17 3。2 DS18B20程序 ..................................................................... 20 3。3其他程序 ................................................................................. 23 总结 参考文献
2
第一章 概述
1.1 设计任务
微机控制电饭煲系统的设计任务如下:
1. 人工操作启动,键盘应设置加热,停止,时间+,时间-选择等
2. 加热10分钟,可以用液晶显示屏来显示加热时间。 3. 加热完成后报警,通过温度传感器或定时器判断加热是否完成,如果完成,单片机发出信号,控制蜂鸣器响.
4. 自动或人工切断电流,一旦加热完成,除了报警之外,还应该在一定时间之后切断加热电流,确保电饭煲设备以及其他事物的安全,避免因为电流引起火灾。
1。2 设计思路
智能电饭煲主要由电源部分和控制电路组成,电源部分由220V交流电经变压器再通过整流桥变为直流电,作为稳压芯片7805的输入,7805的输出为5V的直流电,为单片机系统提供电源,控制部分的控制方法大致为:用户按下启动键之后,系统自动设定加热时间,本系统的加热时间是10分钟,当加热时间到达10分钟或当电热盘温度达到预定的警报限制的要求后,继电器的开关打开,以切断电热盘的电源,同时单片机系统中的蜂鸣器响来达到报警的功能,当下降到一定的温度范围后通电加热,闭合继电器.以使电热盘始终保持在适合的温度范围内。除此之外,对任务书中做出一点改进,即用户可以根据需要自己加时间或者减时间,每按一次改变时间按键,时间减少或增加1分
3
钟,系统的整体框图如下图所示:
图1—1 系统框图4
第二章 硬件部分介绍
2.1 单片机介绍
MCS—51单片机都采用40条引脚的双列直插式封装(DIP),引脚配置如图2—1所示。
图2-1 MCS—51单片机引脚图
单片机引脚信号中,信号名称带上划线的表示该信号低电平有效。40条引脚大致可分为4类:电源、时钟、控制和I/O引脚。 电源:
电源引脚接入单片机的工作电源:Vcc接+5V电源;Vss接地。 时钟:
单片机的时钟由引脚XTAL1和XTAL2接外部时钟配置电路完成。 控制部分:
5
控制线共有4根:
ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ALE功能:用来锁存P0口送出的低8位地址
PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
PSEN:外ROM读选通信号. RST/VPD:复位/备用电源 RST:复位信号输入端
VPD:在Vcc掉电的情况下,接备用电源以保持内部RAM中的数据不丢失。
EA/Vpp:内外ROM选择/片内EPROM编程电源 EA:内外ROM选择端。
Vpp:片内有EPROM的芯片,在EPROM编程期间,施加编程电源。 I/O线
MCS—51单片机具有4个8位的输入/输出口,P0口、P1口、P2口、P3口,共32个引脚.P3口还具有第二功能,用于特殊信号输入输出和控制信号。
2.2 电源电路
芯片介绍
电子产品中常见到的三端稳压集成电路有正电压输出的78××系列和负电压输出的79××系列。78XX,XX就代表它所
6
输出的电压值,能降低电压4—5V,三端IC是指这种稳压用的集成电路只有三条引脚输出,分别是输入端、接地端和输出端。
用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路。它的样子象是普通的三极管.
有时在数字78或79后面还有一个M或L,如78M12或79L24,用来区别输出电流和封装形式等,其中78L调系列的最大输出电流为100mA,78M系列最大输出电流为1A,78系列最大输出电流为1.5A.在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏.
(2)电路原理图
电源电路采用78系列芯片产生+5V.电路图如图2—2:
图2-2 电源电路
LM7805系列集成稳压器的典型应用电路中,这是一个输出正5V直流电压的稳压电源电路.IC采用集成稳压器7805,C1、C2分别为输入端和输出端滤波电容,RL为负载电阻。当输出电较大时,7805应配上散热板。
2。3 液晶显示电路
7
液晶显示器是常用的人机接口界面,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形.液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用.目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
工业字符型液晶1602,能够同时显示16x02即32个字符.
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线,系统中如下图所示:
寄存器选择控制表 RS RW 操作说明 0 0 写入指令寄存器(清除屏等) 8
0 1 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 写入数据寄存器(显示各字型等) 从数据寄存器读取数据 1 1
0 1 1602的操作时序如图2-3所示:
图2—3 1602读写操作时序
9
2。4 温度检测部分
温度检测部分选择的传感器是DALLAS公司生产的DS18B20芯片,DS18B20体积小、经济、灵活。使用户可以充分发挥“一线总线\"的优点. DS18B20的特性
(1)适应电压范围更宽,电压范围:3.0~5。5V,寄生电源方式下可由数据线供电.
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内.
(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。 (6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0。25℃、0。125℃和0。0625℃,可实现高精度测温。 (7)在9位分辨率时最多在93.75ms内把温度转换为数字。 (8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS18B20的管脚排列 DS18B20的引脚定义:
10
图2—4—1 DS18B20引脚定义
(1)DQ为数字信号输入/输出端。 (2)GND为电源地。
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地).
DS18B20在电路中如图2-4-2所示:
图2—4 DS18B20在电路图中
11
2。5 光电隔离电路
光电耦合器(optical coupler,英文缩写为OC)亦称光电隔离器,简称光耦。光电耦合器以光为媒介传输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用.目前它已成为种类最多、用途最广的光电器件之一。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出.这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。
光电隔离电路的作用是在电隔离的情况下,以光为媒介传送信号,对输入和输出电路可以进行隔离,因而能有效地抑制系统噪声,消除接地回路的干扰,有响应速度较快、寿命长、体积小耐冲击等好处,使其在强-弱电接口,特别是在微机系统的前向和后向通道中获得广泛应用.由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。
LED能在通电时发光.光电隔离利用LED与光电探测设备实现隔离阻障,通过光来传输信号。光电探测设备接受LED发出的光信号,再将其转换成原始电信号。
12
图3。 光电隔离
光电隔离是最常用的隔离方法。使用光电隔离的优势是能够避免电气与磁场噪声。而缺点则是传输速度受限于LED的转换速度、高功率散射及LED磨损.
2.6 继电器介绍
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。 电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。符号见下图:
2—5 继电器符号图
13
继电器主要产品技术参数 1、额定工作电压
是指继电器正常工作时线圈所需要的电压. 2、直流电阻(线圈阻抗)
是指继电器中线圈的直流电阻,可以通过万能表测量。 3、吸合电流
是指继电器能够产生吸合动作的最小电流。在正常使用时,给定的电流必须略大于吸合电流,这样继电器才能稳定地工作。而对于线圈所加的工作电压,一般不要超过额定工作电压的1。5倍,否则会产生较大的电流而把线圈烧毁。 4、释放电流
是指继电器产生释放动作的最大电流。当继电器吸合状态的电流减小到一定程度时,继电器就会恢复到未通电的释放状态.这时的电流远远小于吸合电流。
5、触点切换电压和电流(触点容量)
是指继电器允许加载的电压和电流。它决定了继电器能控制电压和电流的大小,使用时不能超过此值,否则很容易损坏继电器的触点。
在继电器释放时,线圈两端产生自感电压以阻止电流减小,通常电压高于3-5倍的线圈工作电压.为了保护控制开关不被这个高压所击穿,常在线圈两端反向并联一个二极管,给自感电压提供一个电流泄放同路,二极管起到续流作用。小型继电器常用1N4004做续流二极管。
14
2.7 其他硬件部分介绍
2.7。1报警电路
报警电路如图2—7—1所示。
图2-7-1 报警电路
在这里我们用三极管作为开关驱动蜂鸣器发声.蜂鸣器与家用电器上的喇叭在用法上也有类似的地方,通常工作电流比较大,电路当的TTL电平基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以,即仅仅用一个管脚很难驱动蜂鸣器发出声音,所以增加了一个三极管来增加通过蜂鸣器的电流。
蜂鸣器的正极性的一端连接到5V电源上面,另一端接到到三极管的集电极,三极管的基极由单片机的一个管脚通过一个与门来控制,当管脚为低时,三极管导通,这样蜂鸣器的电流就可以形成回路,发出声音。当管脚为高时。三极管截止,蜂鸣器不发声音。同时,报警电路还包括一个发光二极管,通过控制与之相连的I/O口输出电平的高低,来控制其闪烁,提示报警。
15
2.7。2 按键部分
在单片机应用系统中,在本系统中由于所需按键较少,故采用独立式非编码键盘。
独立式按键的每个按键都有一根信号线与单片机电路项链,所有按键有一个公共地或公共正端,每个按键相互独立互不影响。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用哟跟I/O端线。独立式按键的软件编程常采用查询式结构.先逐位查询每根I/O线的输入状态,确定按键是否按下,如果按下,则转向该按键的功能处理程序。本系统的按键如图2—7-2所示:
图2—7—2按键图示
按键没有按下时,与I/O口相连的是VCC电源,因此为高电平,当按下按键时,与相应的I/O口相连的是GND,因此由高电平变为低电平,通过检测I/O口电平的高低可以判断是否有按键按下。
16
第三章 程序设计
3。1 LCD显示定时时间程序简介
#include #define uchar unsigned char #define uint unsigned int sbit RS=P1^0; sbit RW=P1^2; sbit EN=P1^3; sbit done=P1^4; sbit twinkle=P1^5; sbit heat=P1^6; sbit beeper=P1^3; sbit start=P2^0; sbit stop=P2^1; sbit add=P2^2; sbit dec=P2^3; sbit jidianqi=P2^4; sbit DQ=P3^7; uchar code temp[]=\"10:00”; unsigned char code str2[]={” ”}; uint aa,ee,date1,data2; uchar high,uchar low; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 *********************************************************** 延迟函数: *********************************************************** void delay(uint aa) 17 { uint bb,cc; for(bb=0;bb〈aa;bb++) for(cc=0;cc<100;cc++); } *********************************************************** LCD写命令与写数据函数 ********************************************************** void write_zhiling(uint com) { RS=0; P1=com; delay(5); EN=1; delay(10); EN=0; } 写数据函数: void write_shuju(uint shuju) { RS=1; P1=shuju; delay(5); EN=1; delay(10); EN=0; } *********************************************************** 1602初始化函数: *********************************************************** void lcd_inite() { write_zhiling(0x38);//使用8位数据,显示两行 18 write_zhiling(0x0c);//显示器件,光标开,字符不闪烁 write_zhiling(0x06);//字符不动,光标自动右移一格 write_zhiling(0x01);//clear write_zhiling(0x80+7);// for(aa=0;aa<5;aa++) { write_shuju(temp[aa]); delay(5); } } 显示函数: void display(uint date) { uint ge,shi,bai,qian; ge=date%10; shi=date/10; bai=data/100%10; qian=data/1000; write_shuju(0x30+qian);//0x30——0x39对应的是1602显示0—-9的 ASCLL码值 write_shuju(0x30+bai); write_shuju(0x30+shi); write_shuju(0x30+ge); } ********************************************************** 定时器0的中断服务程序: *********************************************************** void timer0() interrupt 1 { TH0=(65536—46080)/256;//11.0592MHZ晶振50Ms TL0=(65536-46080)%256; ee++; if(ee==14)//加上前面延时子函数的延时,ee=14的时候大概就是一秒钟 19 { ee=0; date1——; if(date1==0) { data2--; date1=60; } shijian=data2*100+data1 write_zhiling(0x80+7); display(shijian); } } void main() { init_play();//初始化显示 while(1) { read_temp();//读取温度 ds1820disp();//显示温度 display();显示时间 If(shijian==0) { warning(); //报警 delay(); //延时 jidianqi=0;//没人的话自动切断电流 done=0; //指示灯指示完成 } if(tvalue〉high) { warning(); Delay(); Jidianqi=0; TR0=0; } } } 3。2 DS18B20程序 void ds1820rst()/*ds1820复位*/ { unsigned char x=0; 20 DQ = 1;//DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低 delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); } uchar ds1820rd()/*读数据*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; //给脉冲信号 dat〉〉=1; DQ = 1; //给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } void ds1820wr(uchar wdata)/*写数据*/ { unsigned char i=0; for (i=8; i>0; i-—) { DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata〉>=1; } } read_temp()/*读取温度值并转换*/ {uchar a,b; ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ 21 ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue〈0x0fff) tflag=0; else {tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue); } void ds1820disp()//温度值显示 { uchar flagdat; disdata[0]=tvalue/1000+0x30;//百位数 disdata[1]=tvalue%1000/100+0x30;//十位数 disdata[2]=tvalue%100/10+0x30;//个位数 disdata[3]=tvalue%10+0x30;//小数位 if(tflag==0) flagdat=0x20;//正温度不显示符号 else flagdat=0x2d;//负温度显示负号:- if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位为0,不显示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位为0,十位为0也不显示 } } wr_zhiling(0xc0); wr_shuju(flagdat);//显示符号位 wr_zhiling(0xc1); wr_shuju(disdata[0]);//显示百位 wr_zhiling(0xc2); wr_shuju(disdata[1]);//显示十位 22 wr_zhiling(0xc3); wr_shuju(disdata[2]);//显示个位 wr_zhiling(0xc4); wr_shuju(0x2e);//显示小数点 wr_zhiling(0xc5); wr_shuju(disdata[3]);//显示小数位 } 3.3其他程序 ********************************************************** 外部中断0服务程序 ********************************************************** void INT0() interrupt 0 { If(add==0)//加时间 { Delay(); If(add==0) data2+=data2; } If(dec==0)减时间 { Delay(); If(dec==0) data2-=data2 } If(stop==0)//停止 { delay(); If(stop==0) { Jidianqi==0; TR0=0; wr_zhiling(0x01)//qingping 23 } } if(start==0)//开始 { delay(); If(start==0) {TMOD=0x01; TH0=(65536-46080)/256; TH0=(65536-46080)%256; EA=1; ET0=1; TR0=1; EX=0; IT0=0; RW=0; EN=0; date1=60,data2=10; } } 报警程序: void warning() { beeper=0; twinkle=0; delay(); beeper==1; twinkle=1; } 24 总结 这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,万事开头难,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计中遇到了很多问题,最后在老师与同学的帮助下,终于游逆而解.在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 25 参考文献 张弘润等编著。单片机应用设计200例。北京航空航天大学出版社 张淑清等编著。单片机原理及应用技术.国防工业出版社 张毅刚编著.新编MCS51单片机应用设计。哈尔滨工业大学出版社 郭天祥编著.新概念51单片机C语言教程。电子工业出版社 1602中文资料 26 因篇幅问题不能全部显示,请点此查看更多更全内容