单片机在电饭锅上的应用课程设计.docx
《单片机在电饭锅上的应用课程设计.docx》由会员分享,可在线阅读,更多相关《单片机在电饭锅上的应用课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机在电饭锅上的应用课程设计
引言······························2
1电饭锅的原理与结构······················3
2MCS─51单片机在电饭锅上的应用················6
3程序设计··························12
6结束语···························20
参考文献···························20
21附录Ⅰ:
电路原理接线图····················
.
引言
电饭锅是一种能够进行蒸、煮、炖、煨、焖等多种加工的现代化炊具。
它不但能够把食物做熟,而且能够保温,使用起来清洁卫生,没有污染,省时省力,是家务劳动现代化不可缺少的用具之一。
随着科技、经济的发展,人们生活水平的不断提高,工作生活节奏亦加快,延时预制食品也成了人们日常工作生活中的需要。
目前,己有的智能电子电饭锅在做饭/粥时,是将米和水同时放入锅中,接通电饭锅的电源后,电饭锅即自动进入做饭/粥程序,当做饭/粥完成后,电饭锅即进入保温状态。
这就需要我们用智能程序控制电饭锅的煮饭保温时间,本设计主要介绍MSC-51系列单片机在电饭锅的应用及程序。
本次设计过程中借鉴的一些智能家电书和设计手册,吸收书中自己本没掌握的知识,并得到徐祖华、肖金凤老师的悉心帮助。
对此深表谢忱。
.
.
、电饭锅的原理及结构1
电饭锅的原理1.1这电热线是由自动开在铝质锅的底部煮饭。
电饭锅是利用发热板,发热板内藏电热线,关控制,发热板的中央有一圆孔,孔内有一感温软磁,它借着弹簧向上顶贴着锅底。
这是一℃时,则失去磁性,103种纯铁氧体。
它在100℃或以下时,可以被永久磁铁吸引。
但当升至不再受永久磁铁吸引。
开始加热。
当按下开关按键,开关横杆把磁铁向上顶贴着感温软磁;这时,发热线接通,℃上升。
当当锅内的饭沸腾后,锅内的水就渐渐减少,当水开始蒸干,锅内的温度就由100℃时,感温软磁就不受磁铁吸引,开关的杠杆因弹簧的弹力及本身的重力而下降,103升至℃左右。
压使接触点分开,发热线就断电,同时,接通另一保温电路,保持饭的温度在70主控电饭煲主要由电源部分和控制电路组成,主控电路与热敏电阻形成反馈回路,智能电路实现两种功能,一是采集热敏电阻反馈回来的温度值,二是依据用户选用的工作方式,当电热盘温度达到当对继电器的工作方式的改变来对电热盘加热的控制。
控制方法大至为:
当下降到一定的温度范围后通电加继电器的开关打开,以切断电热盘的电源,前的要求后,热,闭合继电器,以使电热盘始终保持在适合的温度之内。
电饭锅的主要由顶盖温度传感器、底盘温度传感器、驱动电路、加热盘、继电器和
利用这些资源完成的电饭煲具有以下通过控制温度传感器来控制煮饭时间,数码管等组成。
小时粥,7、1、、4、小米量,545分稀饭,62321功能:
、精煮,、超快煮,、冷饭加热,小时汤,8、2小时汤。
并且具有人性化的操作界面,使用者很容易掌握。
电饭煲的功能不再只是简简单单的煮饭了,它可以完成许许多多的功能,它是人们日常生活中不可缺少的家庭好帮手,正是由于智能的控制,人们的生活才变得越来越简单。
1.2电饭煲煮饭过程介绍
.
.
维持沸腾控温过程,要想煮出高质量的米饭,就要掌握各种大米的吸水量,加温时间,煮饭的过程实质上就是使大米由难以为人体所消化停止升温过程,焖饭过程等规律。
时间,一次理想的吸收的β淀粉转化成为人体较易吸收的α淀粉的过程,经过大量的实践和探索,煮饭过程可以抽象成以下几个过程:
吸水过程口感更让大米尽可能的吸收水分,这样煮出来的米饭的更加的饱满,在适合的温度下,度,大米中60好。
让大米的含水量达到25%左右,温度越高,吸水越快。
但是温度一旦超过度以下是非常有必要的,60含有的β淀粉就会转化成α淀粉,会变成糊状,所以控制温度在度左右为最佳温度。
一般控制在35升温过程加热值沸一般说来,这一个过程必须使锅内的热量充分对流,以至于不会造成夹生饭。
10分钟。
腾的时间最佳是维持沸腾度左右,98为了使β淀粉充分转化成为α淀粉,需要在沸腾的状态下,温度大约控制在分钟左右,可以通过控制继电器的开与闭来实现温度的控制。
维持20补炊过程度左右的时候,在通电一段时间,将锅内断电之后,温度会慢慢下降,当温度降到100的多余的水分蒸发掉,补炊的时间根据个人而定。
焖饭过程在补炊过程结束后,锅内基本上没有太多的水分,应停止加热,利用余热来进行焖饭,分钟左右。
12促进大米α淀粉的生成。
一般的焖饭时间大约控制在保温过程.
.
加热盘就会对锅体进行度左右,65整个煮饭过程结束后,自动进入保温模式,温度低于加热。
使用者在此种状态下就可以享用美食了。
功能介绍3位单片机开发的智能电饭煲具有以下的两大功能:
利用凌阳8煲煮功能3.1
精煮1)
分钟后电饭煲进入焖饭状态,此45选择精煮功能,按下开始键,电饭煲开始加热,大约,这表明饭已经煮好。
分钟后,电饭煲进入保温状态,数码显示时数码显示湜,10超快煮2)分钟后电饭煲进入焖饭状态,选择超快煮功能,按下开始键,电饭煲开始加热,大约30,这表明饭已经煮分钟后饭煮好,电饭煲进入保温状态,数码显示扜湜,8此时数码显示好。
冷饭加热3)
分钟后电饭煲进入保温状态,15按下开始键,电饭煲开始加热,大约选择冷饭加热功能,,这表示冷饭加热完成。
数码显示
小米量煮4)分钟后电饭煲进入焖饭状态,40大约选择小米量煮功能,按下开始键,电饭煲开始加热,分钟后饭煮好,电饭煲进入保温状态,这表明小米量的饭已经煮好。
,10湜此时数码显示45分钟稀饭5)分钟后粥45,分钟稀饭功能,按下开始键,电饭煲开始加热,此时数码显示选择45?
已煮好。
.
.
2小时粥6)小时后粥已经,22小时粥功能,按下开始键,电饭煲开始加热,此时数码显示?
选择煮好。
小时汤7)1小时后汤已经1小时汤功能,按下开始键,电饭煲开始加热,此时数码显示?
,选择1熬好。
小时汤)28小时后汤已经2?
,选择2小时汤功能,按下开始键,电饭煲开始加热,此时数码显示熬好。
扜。
注:
以上4种功能模式中,每一种功能结束之后都自动进入保温模式,数码显示1.3定时功能小时显示时间数选择相应功能后设置相应的定时时间,按下开始键,定时开始,每过1自动加热,根据定时的时间和所需过程的时间差电饭锅就能自动启动,在定时时间内,减1。
分钟151小时2例如如果45分钟稀饭定时小时的话,电饭煲会在完成选择的功能,自动保温,45的时候开时启动加热工作,并进入分钟稀饭功能模式。
单片机在电饭锅上的应用MSC-512、系列单片机具有很强的功能,它被广泛的应用于各种自51MCS一公司生产的美国INTEL8051单片机微机电脑控制器控制的电饭锅。
动化的控制系统上。
我们应用其中用微电脑控制电饭锅可根据煮制各种不同食品的需要,编制各种不同的程序,实现不同
另外还可以实现各种状态的显示和使其更可口,的控制,提高煮制食品的质量,味道更美。
新奇的使用者可直观地看到煮制食品的进展情况,定时等功能,在操作上也能有一种轻松,.
.
感觉。
相当于分立元件电路来讲,用电脑控制的电路简单,可靠性高,成本低。
所以。
利用微电脑实现各种家电产品控制的自动化,智能化是一个发展方向。
控制要求2.1
:
我们参照了国外几种不同的先进产品,并结合我国的实际情况,制定了如下控制要求
一、煮制食品的控制曲线:
l所示它们分别如图我们制定了六种煮制食品的控制曲线.
这六种控制曲线被定义为六种菜单,使用者可根据煮制食品的需要任意选择。
二、显示发光管指示定时、预煮、煮炯、LEDLFD位数码管显示时间,显示精度为l分钟。
用4采用保温五种工作状态和白米饭、糯米饭、什锦饭、糙米饭、粥五种菜单程序。
三、鸣响提示当触动按键和饭煮熟时都由蜂鸣器发出鸣响提示。
.
.
四、定时分钟,所设定的定时时间为饭煮熟时的时间,采用倒计时的计时小时50最大定时时间为1210分钟,直接用轻触按键输入,时间设定可递方式,设定精度为增和递减,也可进行单步和快速设定。
五、自动保护具有内锅不在锅体内时不能加电的自动保护功能,具有软件和硬件的超保护功能。
2.2硬件设计它具有丰富单片机做微处理器,R(>M的8051硬件电路原理图如图2所示,采用内部带芯片有四个八8051的指令系统和很强的功能,可使控制电路结构简单体积小,可靠性高。
口为时间、状态和菜单的显示输出口,采用动态扫描P1,P2输出口PO,P1,P2,P3.选位输入/P2口的输出通过三极管送到数码管的段和显示状态、菜单的发光二极管,的显示方式,P1口为操作按oPO口的输出通过三极管分时选通数码管的位和对应的状态、菜单发光二极管驱动和三极管T17,T18G1:
B,G1:
FP3.0和P3.1分别通过反向器键输入口,低电平有效。
可防止单片机复位时可控接入反向器G1:
B.G1:
F主加热盘和副加热元件的可控硅TM1,TM2,BEo
T16驱动蜂鸣器硅瞬间导通现象.P3.2口经三极管这就需要而单片机只能处理数字量信号,由干被控温度是一个连续变化的模拟量信号,为温度传感器,它和电位器RT模/数转换电路,现采用具有负温度系数的测温型热敏电阻的阻值随被测温度的变化而变化,因RTG1:
A组成多谐振荡器,W1、电容C2,施密特触发器阻值的变化而变化,这样就实现了把模拟量信号转变成频率变而振荡器的输出频率也随RT这一信号经过反化的方波信号,单片机记录在单位时间内的周期数就可得到被测的温度值。
起温度微W1P3.S口,单片机利用该信号进行多点闭环温度控制。
电位器G1:
B向器输入到RT调作用。
温度传感器装在锅体底部,间接反映锅内的温度。
TFUSE是热保险管,起超温保护作用。
受压闭合,电路接通,控制器正swSW为机电连锁微动开关,当内锅在锅体内时,开关常工作,否则不能工作,这样可避免发热盘空载加热的现象。
HC()()K为主发热盘。
.
.
H一WARM为副发热元件,装在锅体侧面和顶部,主要起保温作用。
电路可分别安装在两块电路板上,一块为显示操作板,装在温度较低的锅体顶部或侧面。
另一块为可控硅和电源板,可装在锅体底部。
.
.
3、程序设计
主程序框图如下图3所示
主程序判断确有按键输入时,开启蜂鸣器,鸣响0.25后由计时中断服务程序来关闭蜂鸣器。
由按键输入执行保温程序时,必须是没有菜单和定时输入的情况下,且先执行慢速加热至73C的程序后才进入保温程序。
保温时间限制为10小时。
.
.
温度采样子程序在保温和加热时调用,进行温度控制。
CTI为采
样计数器,其流程图见图4。
为提高测量的准确性,应用多次间隔时间采样取其平均值的方法来减小测量误差,在间隔采样过程中如连续出现20次超出正常范围的温度值,则判断为测温电路故障,停止执行正常程序,并做出相应的显示和蜂鸣报警。
CTO设置为计时器,每隔。
.15发出一次中断申请,入口地址为。
ooBH,中断服务程序做相应的各种计时操作处理,中断服务流程图见图4。
选用定时程序的判断,如果没有进行过时间的设定,74H位为零,就判断为没有设置定时,否则74H位由1,执行定时煮制程序。
3.2操作说明
接通电源后时间显示器闪烁显示“o:
00”为正常。
程序选择键:
按该键可循环选择五种设定的程序,分别由发光二极管进行显示。
保温键:
如果没有按过其它键,按该键可直接进入保温状态,保温指示灯亮,否则无效。
时间设定键:
可设定定时煮制的时间,最大定时时间为12小时50分钟。
启动键:
1)按动该键就确认了所选择的程序和定时时间,并开始执行程序,相应的工作状态指示灯亮;2)如按动该键前没有选择程序和设定时间,按动该键后直接执行白米饭程序;3)按动该键并保持约2秒钟则跳过预煮直接进入煮制过程;4)当选择煮粥程序时,第一次按动该键后,时间显示器闪烁显示煮制的时间,该时间可在1:
30一4:
00时间范围内设定,第二次按动该键后,就确认了所设定的输入并开始执行程序;5)执行定时程序过程中,按该键则暂停正常.
.
的时间显示,所显示的是选择程序的煮制时间,释放该键后恢复正常的时间显示。
3.3程序
includehardware.inc
.includeS480.inc
.includeResource.inc
definevoice_start00//开始//
definevoice_cool01//煮饭//
definevoice_fcool02//快煮//
definevoice_bw06//保温//
definevoice_down07//定时减//
definevoice_up08//定时加//
definevoice_off09//返回//
definevoice_alarm10//请放入内锅//
.definevoice_ok11//请享用//
.definevoice_set12//请设定//
.definevoice_high13//注意温度过高//
//*******************************************//
//系统初始化子程序//
//*******************************************//
.public_System_Initial
_System_Initial:
.proc
r1=0x0002
[P_SystemClock]=r1//初始化系统时钟//
r1=0xFF80
[P_IOA_Dir]=r1
r1=0xFFE0
[P_IOA_Attrib]=r1
r1=0xFFE0
[P_IOA_Data]=r1//初始化A口//
r1=0xFFFB
[P_IOB_Dir]=r1
r1=0xFFFF
[P_IOB_Attrib]=r1
r1=0x0004
[P_IOB_Data]=r1//初始化B口//
r1=0x0004//时基选择//
[P_TimeBase_Setup]=r1
intoff//关中断//
.
.
r1=0x0105
[P_INT_Ctrl]=r1//初始化中断//
intfiq,irq//开中断//
retf
.endp
//*********************************************//
//段显子程序//
//*********************************************//
.DATA
Show_tabble:
.dw0x003F,0x0006,0x005B,0x004F,0x0066
.dw0x006D,0x007D,0x0007,0x007F,0x006F
.code
.public_Show
_Show:
.proc
BP=Show_tabble
r1+=BP//求显示码的地址//
r1=[r1]//求出显示码//
r1=r1lsl4
r1=r1lsl4//移至高8位//
r2=[P_IOA_Buffer]
r2&=0x8000
r1|=r2
[P_IOA_Data]=r1//输出显示//
retf
.endp
//******************************************//
//计时子程序//
//******************************************//
.iram
.public_end_120
.var_end_120=0
.code
.public_Time_Count
_Time_Count:
.proc
r1=[_STATUS]
cmpr1,0
jeCount_end
r1=[T1_1]//取第一个数据//
r1+=[T1_2]//第一个数据和第二个数据相加//
r1+=[T1_3]//前三个数据相加//
r1+=[T1_4]//前四个数据相加//
cmpr1,0//和与0相比较//
jeTime2_Count//等于0转到定时2的计数//
r1=[_end_120]
.
.
cmpr1,120//是否到了120次//
jneADD_1//不到转向ADD_1继续相加//
r1=0x00
[_end_120]=r1//到了清0为下次中断作准备//
call_Time_count_down1//调用预置减子程序//
jmpTime_Count_Over
ADD_1:
r1=r1+1
[_end_120]=r1
Time_Count_Over:
r1=[P_IOA_Buffer]//一次中断计时后秒点反相//
r2=0x8000
r1^=r2
[P_IOA_Data]=r1
jmpCount_end
Time2_Count:
r1=[T2_1]//取第一个数据//
r1+=[T2_2]//第一个数据和第二个数据相加//
r1+=[T2_3]//前三个数据相加//
r1+=[T2_4]//前四个数据相加//
cmpr1,0
jeCount_end
r1=[_end_120]
cmpr1,120
jneADD_2
r1=0x00
[_end_120]=r1
call_Time_count_down2
jmpCount_end
ADD_2:
r1+=1
[_end_120]=r1
Count_end:
retf
.endp
//过温检测子程序//
//**********************************************//
.public_Over_Temp
_Over_Temp:
.proc
r1=[_STATUS]
cmpr1,1
jnet_exit
r1=[_Tempreature_value]
cmpr1,36
jnbt_exit//与36即150度比较,温度超过150度时报警并跳到程序的开始//
r1=voice_high
[_Announce_Buff]=r1
.
.
call_PlayRespond
r1=0
[_STATUS]=r1
pc=0x0000
t_exit:
retf
.endp
//温度采集子程序//
//*********************************************//
.ram
.public_Tempreature_value
.var_Tempreature_value
.code
.public_ReadAD
_ReadAD:
.proc
r3=900
[_Tempreature_value]=r3
retf
.endp
//计时加预置子程序//
//***************************************************//
.public_Time_up
_Time_up:
.proc
r1=[_WHICH_TIME]
cmpr1,0x01
jetimeup2
call_Time_up1_sub
jmptime_exit_up
timeup2:
call_Time_up2_sub
time_exit_up:
r1=voice_up
[_Announce_Buff]=r1
call_PlayRespond
retf
.endp
//计时减预置子程序//
//***************************************************//
.public_Time_down
_Time_down:
.proc
r1=[_WHICH_TIME]
cmpr1,0x01
jetimedown2
call_Time_down1_sub
jmptime_exit_down
timedown2:
.
.
call_Time_down2_sub
time_exit_down:
r1=voice_down
[_Announce_Buff]=r1
call_PlayRespond
retf
.endp
//预置1设定减子程序//
//*******************************************************//
.public_Time_down1_sub
_Time_down1_sub:
.proc
r1=[T1_1]//取第一个数据//
r1+=[T1_2]//第一个数据和第二个数据相加//
r1+=[T1_3]//前三个数据相加//
cmpr1,0
jesub1_exit_down
r1=[T1_3]//取第三个数据//
cmpr1,0//判断是否到了0//
jnesub1_exit_05//不到0跳转//
r2=5//到5后写0//
[T1_3]=r2
r1=[T1_2]//取第二个数据//
cmpr1,0//比较是否到了0//
jnesub1_exit_09//不到0跳转减1//
r2=9//到0后写9//
[T1_2]=r2
r2=[T1_1]
r2-=1
[T1_1]=r2
jmpsub1_exit_down
sub1_exit_09:
r2=[T1_2]
r2-=1
[T1_2]=r2//减1操作//
jmpsub1_exit_down
sub1_exit_05:
r2=[T1_3]
r2-=1
[T1_3]=r2//减1操作//
sub1_exit_down:
retf
.endp
//煮饭子程序//
//********************************************//
.public_COOL
_COOL:
.p