收藏 分销(赏)

电饭煲专业课程设计程序.doc

上传人:a199****6536 文档编号:2532516 上传时间:2024-05-31 格式:DOC 页数:68 大小:387.04KB
下载 相关 举报
电饭煲专业课程设计程序.doc_第1页
第1页 / 共68页
电饭煲专业课程设计程序.doc_第2页
第2页 / 共68页
电饭煲专业课程设计程序.doc_第3页
第3页 / 共68页
电饭煲专业课程设计程序.doc_第4页
第4页 / 共68页
电饭煲专业课程设计程序.doc_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、课程设计任务书 专业 年级 班 一、 设计题目 电饭煲控制器二、 重要内容电饭煲控制器有预约功能,有烹饪大米饭、粥、保温、冷饭加热等功能三、 详细规定 1.详细功能大米饭:当达到105时,停止加热,并在15分钟后通过蜂鸣器提示顾客。粥:开始加热后,通过测温元件监视锅底温度,使锅底温度保持在99100.5之间(100时停止加热、99时开始加热),此种状态持续20分钟,之后通过蜂鸣器提示顾客过程结束。保温:使锅底温度维持在5060之间。冷饭加热:锅底加热至100,使锅底温度保持在99100.5之间(100时停止加热、99时开始加热),此种状态持续5分钟,之后通过蜂鸣器提示顾客过程结束。2.定期 顾

2、客可以是电饭煲在预约时间(倒计时方式)开始工作,最长预约时长为12小时。3.控制面板四个发光管分别与大米饭、粥、保温、冷饭加热相相应,另一发光管用于区别工作与预约,两位数码管用于预约时间及倒计时。按键有:开始键、功能键、加键、减键。四、 进度安排1、理解任务规定,拟定详细方案2、lcd12864液晶屏子程序设计3、DS18B20温度传子程序感器设计4、设计单片机按键功能程序5、依照任务规定编写程序,设计按键电路6、检查设计效果,完善功能五、 完毕后应上交材料电饭煲控制器论文六、 总评成绩指引教师 签名日期 年 月 日系主任 审核日期 年 月 日摘要电饭煲控制器有预约功能,有烹饪大米饭、粥、保温

3、、冷饭加热等功能.。基于stc89c52单片机控制电饭煲控制器,有lcd液晶屏显示和ds18b20温度检测功能,尚有定期工作选取功能。核心字:电饭煲 温度控制 DS18B20 LCD12864 键盘按键目录一、任务分析与设计电路11、总体方案设计11.1、控制方案选取11.2、测温模块控制选取11.3、键盘按键方案选取21.4、显示方案选取21.5、声音模块方案选取31.6、功率元件模块方案选取32、电路设计32.1、控制模块32.2、测温模块62.3、键盘模块102.4、显示模块112.5、声音模块132.6、功率模块14二、软件设计151、程序流程图151.1、主流程图151.2、子流程图

4、171.3、功率元件控制流程图171.4、定期预约工作流程图18三、系统调试分析201、系统硬件调试202、系统软件调试20四、心得体会20一、任务分析与设计电路1、总体方案设计1.1、控制方案选取 方案:采用STC公司STC89C52RC。此单片机价格低,资源多,高性价比,应用广泛,无论是从内部构造,还是编程方面,51系列单片机都相对简朴容易掌握和使用。 对于本题目而言,由于电饭煲需要实现功能少,对解决器规定不高, 使用STC89C52RC不但可以完全实现对电饭煲控制,还节约了成本。综合考虑,电饭煲控制器采用STC89C52RC单片机。1.2、测温模块控制选取测温模块采用数字温度传感器DS1

5、820。DS1820是美国DALLAS半导体公司生产可组网数字式温度传感器,其内部使用了在板(ON-B0ARD)专利技术。所有传感元件及转换电路集成在形如一只三极管集成电路内。与其他温度传感器相比,DS1820具备如下特性:1. 独特单线界面方式,DS1820在与微解决器连接时仅需要一条口线即可实现微解决器与DS1820双向通讯。2.DS1820支持多点组网功能,各种DS1820可以并联在唯一三在线,实现多点测温。3.DS1820在使用中不需任何外围元键。4.测温范畴55125,固有测温辨别率0.5。5.测量成果以9位数字量方式串行传送。由于在本课程设计中,电饭煲盼望温度最高值在数字温度传感器

6、DS1820量程内,同步,DS1820具备测温系统简朴、测温精度高、连接以便、占用口线少等长处。因此,我选用DS18B20温度传感器。1.3、键盘按键方案选取由于在该课程设计中,需要按键只要四个:开始键、功能键、加键、减键,键盘个数较少,可以用独立式按键电路。因此我选用独立按键电路。1.4、显示方案选取方案一、使用数码管显示。数码管能显示数字,用法简朴以便,可是显示过于单调。方案二、使用lcd12864液晶屏。lcd12864能清晰显示字符和数字,显示信息更多。由于数码管只能显示数字,过于单调,而lcd12864能显示中文和数字,尚有各种图案,能更好地进行人机沟通,达到更好显示效果。综上所述,

7、我选用lcd1286液晶屏。1.5、声音模块方案选取由于在该课程设计中,只需要对工作状态和工作方式提示,用蜂鸣器产生bee bee声音即可。1.6、功率元件模块方案选取功率元件控制通过固态继电器来完毕。固态继电器也称作固态开关。是一种由固态电子构成新型电子开关器件,集光电藕合,大功率双向晶闸管,及触发电路,阻容吸取回路于一体.用来代替老式电磁式继电器。实现对单相或者三相电动机正反转控制,或者其她控制无触点无动作噪音。开关速度快无火花干扰和可靠性高等特性。由于单片机学习板配有固态继电器,因此直接选用单片机学习板继电器作为功率元件模块。2、电路设计2.1、控制模块STC89C52是一种低电压,高性

8、能CMOS8位单片机,片内含8k bytes可重复擦写Flash只读程序存储器和256 bytes随机存取数据存储器(RAM),器件采用ATMEL公司高密度、非易失性存储技术生产,兼容原则MCS-51指令系统,片内置通用8位中央解决器和Flash存储单元,STC89C52单片机在电子行业中有着广泛应用。特点:1、兼容MCS51指令系统2、8kB可重复擦写(不不大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定期/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、

9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设立睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品需求。工作原理:STC89C52为8 位通用微解决器,采用工业原则C51内核,在内部功能及管脚排布上与通用8xc52 相似,其重要用于会聚调节时功能控制。功能涉及对会聚主IC 内部寄存器、数据RAM及外部界面等功能部件初始化,会聚调节控制,会聚测试图控制,红外遥控信号IR接受译码及与主板CPU通信等。重要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口

10、,外接电阻电容构成复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,如图1-1、1-2所示。图1-1 AT89C52DIP封装引脚图图1-2 最小系统图2.2、测温模块测温模块采用数字温度传感器DS1820。DS1820是美国DALLAS半导体公司生产可组网数字式温度传感器,其内部使用了在板(ON-B0ARD)专利技术。所有传感元件及转换电路集成在形如一只三极管集成电路内。与其他温度传感器相比,DS1820具备如下特性:独特单线界面方式,DS1820在与微解决器连接时仅需要一条口线即可实现微解决器与DS1

11、820双向通讯。2.DS1820支持多点组网功能,各种DS1820可以并联在唯一三在线,实现多点测温。3.DS1820在使用中不需任何外围元件。4.测温范畴55125,固有测温辨别率0.5。5.测量成果以9位数字量方式串行传送。DS18B20有两种封装形式,即TO92封装和8-pinSOIC封装。每种封装样式及引脚排列见图1-3,其引脚功能描述见表1。 图1-3DS18B20引脚排列序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线界面引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选取VDD引脚。当工作于寄生电源时,此引脚必要接地。表1 DS18B20详细引脚

12、功能描述下图是温度检测模块原理如图1-4所示:图1-4 温度检测模块原理图2.3、键盘模块在键盘模块中,我采用独立式按键电路。特点:1)每个键独立地接入一根数据输入线。2)平时所有数据输入线都连接成高电平;3)当任何一种按键压下时,与之相连数据输入线被拉成低电平。4)要判断与否有键按下,只要位解决指令即可。独立连接式键盘长处是构造简朴、使用以便,但随着键数增多,所占用IO口线也增长。该系统键盘由4个独立键盘构成。键盘一脚接在单片机P1.0至P1.4脚上,此外一脚接在电源地上,当有键盘按下时对应键盘就会有一低电平送到单片机内部。为消除触点式按键开关机械抖动,单片机内部有程序进行消抖解决,然后拟定

13、那一种键盘被按下日后执行程序完毕该系统指定工作。按键键盘原理图如图1-5所示:图1-5 按键图2.4、显示模块显示模块我使用了lcd12864液晶屏。带中文字库12864是一种具备4位/8位并行、2线或3线串行各种界面方式,内部具有国标一级、二级简体中文字库点阵图形液晶显示模块;其显示辨别率为12864,内置8192个16*16点中文,和128个16*8点ASCII字符集.运用该模块灵活界面方式和简朴、以便操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵中文.也可完毕图形显示.低电压低功耗是其又一明显特点。由该模块构成液晶显示方案与同类型图形点阵液晶显示模块相比,无论硬件电路

14、构造或显示程序都要简洁得多,且该模块价格也略低于相似点阵图形液晶模块。其控制办法如图1-7、1-8所示。12864显示电路如图1-6所示:图1-6 12864电路图图1-7 图1-82.5、声音模块该模块使用蜂鸣器。蜂鸣器需要驱动电流较大(50100mA),由于单片机输出低电平时驱动电流只有十几毫安,因而要外接一种PNP三极管作为功率驱动器件。当P37口输出低电平时,PNP导通,蜂鸣器正常工作,当当P37口输出高电平时,PNP截止,蜂鸣器暂停工作。原理如图1-9:图1-9蜂鸣器2.6、功率模块功率模块我选用单片机学习板上固态继电器。如图1-10所示。图1-10 继电器电路图当单片机P36口输出

15、低电平时,BJT管导通,LED9批示灯亮,继电器工作。二、软件设计1、程序流程图系统软件设计采用构造化和模块化设计办法,便于程序编写、调试和排除错误,同步也便于检查和维护。单片机系统软件程序重要由如下模块构成:初始化主程序、输入及显示、温度采集、功率元件控制。1.1、主流程图如图2-1所示:图2-1 系统主流程图1.2、子流程图如图2-2:图2-2 系统子程序流程图1.3、功率元件控制流程图图2-2子流程图 电饭煲控制系统对电饭煲加热与否需要依照当前锅内温度以及所处工作模式做出选取。其软件控制流程如下图所示。 控制器先通过温度传感器获得当前锅内温度,依照所处工作模式,得到需要到达目的温度。若当

16、前锅内温度不大于目的温度,则控制器接通加热盘加热,否则断开加热盘,停止加热。功率元件控制流程如图2-3所示。图2-3 功率元件控制流程图1.4、定期预约工作流程图系统运营后,若按下“开始”按键,系统即可进入定期预约功能状态,表达“时”位个位数值处在可设定状态,高位默认显示“0”。此时按下“加”键,预定期间小时数个位将累加1,如果累加后数值不不大于9,高位数值将自动变为1;若按下“减”键,预定期间小时数个位将减去1。 由于本控制系统支持最大定期12小时,当小时数超过12后会溢出为0。即置定期数值时,若当前示数为12,且按下“加”键,则lcd显示数值由12变为00。预约小时数设定完毕后,按下“开始

17、”键,系统则保存顾客设定定期时间并退出定期时间设定状态。随如图2-4所示:图2-4 定期工作流程图三、系统调试分析1、系统硬件调试按照画好电路图把外围电路接好,重要自己做了一种独立按键小键盘。而ds18b20温度传感器接线比较简朴,只需3跟线就完毕了。2、系统软件调试12864液晶屏原理比较好理解,不要多长时间就看懂。而ds18b20温度传感器原理就有点难懂,看了比较久才看懂。但在自己编译过程中,却浮现诸多错误。例如,系统无法读取ds18b20里面温度,仔细检查程序后发当前ds18b20读取数据时间那里有错误,时间太短,导致无法读取。在编写主程序时,发现无法返回温度值给单片机,搞了好久都搞不定

18、。日后发现是忘掉了在ds18b20子程序那里加入返回函数return,加上return后,终于完毕。四、心得体会在看到课程设计题目后,我就感觉应当是挺好玩。果然我看到了电饭煲控制器这个题目!此前在家里就修过坏了电饭煲,可惜没能修好.通过这次课程设计后,我想我应当能修坏了电饭煲了!这次课程设计获益良多,既加深了我c语言知识,又让我学会了lcd12864和ds18b20使用。而在编程过程中,一种小小语句错误就会到致程序无法运营,更让我明白谨慎小心重要性。在最后系统能正常运作时,整个人均有一种成功飘然.附录程序:主程序#include#include#include#include/#include

19、#define uchar unsigned char#define uint unsigned intsbit k1=P32; /功能按键sbit k2=P33;sbit k3=P34;sbit k4=P35;sbit a1=P10;/按键批示灯sbit b1=P11;sbit c1=P12;sbit c2=P13;uchar code m1=煮饭;uchar code m2=煮粥;uchar code m3=保温;uchar code m4=冷饭加热;uchar code m5=工作状态;uchar code m6=定期状态;uchar code m7=预定期间:;uchar code m

20、8=H;uchar m9=;uchar code m10=定期时间:;void zhufan(); /煮饭函数声明void zhuzhou(); /煲粥函数声明void baowen(); /保温函数声明void jiare(); /冷饭加热函数声明void timing(); /定期预约函数void select();sbit y1=P36; /继电器 sbit y2=P37;/蜂鸣器uint s1=0,s=0,m=0,h=0;/秒,分,时计数/*延时*/void delay2(uint x) while(x-)uint y;for(y=125;y0;y-);/*定期器*/void time

21、0() /定期器0TMOD=0x01;TH0=(65536-50000)/256;/50msTL0=(65536-50000)%256;ET0=1;TR0=1;void t0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;s1+;if(s1=20)s+;s1=0; / 1 s if(s=60)m+;s=0; / 1 minif(m=60)h+;m=0; / 1 hourif(h=12)h=0; /12 hour /*按键功能*/ void key() if(k1=0) / 工作状态按键delay2(10);if(k1=0)lc

22、d_init();/lcd初始化a1=0;b1=1;c1=1;c2=1;lcd_pos(0,0); /显示菜单print(m1);lcd_pos(0,3);print(m2);lcd_pos(0,6);print(m3);lcd_pos(2,2);print(m4); while(!k1); /等待松开按键 while(k1&k2&k3&k4);/等待选取菜单功能 delay2(10); select(); if(k2=0) / 预定功能按键delay2(10);if(k2=0)lcd_init();a1=0x02;lcd_pos(0,0);print(m7); timing(); void

23、select() /选取4种功能if(k1=0)/煮饭delay2(10);if(k1=0)a1=0;b1=1;c1=1;c2=1; /工作批示灯lcd_init();lcd_pos(0,3);print(m1);/while(!k1);/lcd_pos(0,3);/print(m2);zhufan();if(k2=0) /煮粥delay2(10);if(k2=0)a1=1;b1=0;c1=1;c2=1;lcd_init();lcd_pos(0,3);print(m2);zhuzhou();if(k3=0) /保温delay2(10);if(k3=0)a1=1;b1=1;c1=0;c2=1;l

24、cd_init();lcd_pos(0,3);print(m3);baowen();if(k4=0)/冷饭加热delay2(10);if(k4=0)a1=1;b1=1;c1=1;c2=0;lcd_init();lcd_pos(0,2);print(m4);jiare();/*煮饭*/void zhufan() uchar w1,w4; lcd_init(); lcd_pos(0,3); print(m1); y1=1; /打开继电器,开始加热/ get_temp();/ delay(100);/ w4=get_temp(); while(get_temp()26)break;/ / while

25、(1)/ lcd_pos(3,0);print(m1); / while(temp25)/温度不不大于105C时 / get_temp();/ lcd_pos(2,0);/ dis_temp(); EA=1;while(s0;w1-) /煮饭完毕,鸣笛5次 y2=0; delay2(100); delay2(100); y2=1; delay2(100); delay2(100); if(y2=1)break; baowen();/*煮粥*/void zhuzhou() uchar w1; lcd_init(); lcd_pos(0,3); print(m2);y1=1; /打开继电器,开始加

26、热get_temp(); /获取温度数值while(temp100); EA=1;while(m100)y1=0; /温度不不大于100,停止加热if(temp0;w1-) y2=0; delay2(100); delay2(100); y2=1; /煲粥完毕,鸣笛5次 delay2(100); delay2(100);baowen(); /*保温*/void baowen() lcd_init(); lcd_pos(0,3); print(m3); while(1) get_temp(); if(temp=60)y1=0;delay2(100);if(k1=0)delay2(10);if(k

27、1=0)zhufan();if(k2=0)delay2(10);if(k2=0)zhuzhou();if(k3=0)delay2(10);if(k3=0)baowen();if(k4=0)delay2(10);if(k4=0)jiare(); /*冷饭加热*/void jiare()uchar w1;lcd_init(); lcd_pos(0,2); print(m4);y1=1;get_temp();while(temp100); EA=1; while(m100)y1=0;delay2(100); /温度不不大于100,停止加热if(temp0;w1-) y2=0; delay2(100)

28、; delay2(100); y2=1; /冷饭加热完毕,鸣笛5次 delay2(100); delay2(100);baowen();/*定期预约*/void timing()uchar e1=0,e2=0,e3=0;uchar q1;lcd_pos(0,5);write_data(m90);delay2(10);lcd_pos(0,6);write_data(m90);lcd_pos(0,7);print(m8);delay2(10);do/while(1)/if(k3=0) /个位减1delay2(10);if(k3=0)e2-;while(!k3);if(k4=0) /个位加1dela

29、y2(10);if(k4=0)e2+;while(!k4); if(e2=10)e2=0;e1+;if(e212)e1=0;e2=0;lcd_pos(0,5); write_data(m9e1);delay2(10);lcd_pos(0,6);write_data(m9e2);/ while(k1); /按确认键结束lcd_init();/lcd初始化a1=0;b1=1;c1=1;c2=1;lcd_pos(0,0); /显示菜单print(m1);lcd_pos(0,3);print(m2);lcd_pos(0,6);print(m3);lcd_pos(2,2);print(m4);EA=1;

30、delay2(100);do /预定功能选取if(k1=0) /煮饭delay2(10);if(k1=0)q1=1; lcd_init();lcd_pos(0,3);print(m1);if(k2=0) /煲粥delay2(10);if(k2=0)q1=2;lcd_init();lcd_pos(0,3);print(m2);if(k3=0) /保温delay2(10);if(k3=0)q1=3;lcd_init();lcd_pos(0,3);print(m3);if(k4=0) /冷饭加热delay2(10);if(k4=0)q1=4;lcd_init();lcd_pos(0,2);print

31、(m4);e2=e3%10; /定期时间显示e1=e3/10; lcd_pos(3,0); print(m10); lcd_pos(3,5);write_data(m9e1);delay2(10);lcd_pos(3,6);write_data(m9e2);lcd_pos(3,7);print(m8); while(e3=e3-s)!=0);/定期计算EA=0;if(q1=1)zhufan(); /电饭煲工作状态if(q1=2)baozhou();if(q1=3)baowen();if(q1=4)jiare(); void main() EA=0; /关中断time0(); /定期器初始化lc

32、d_init(); / 12864液晶 初始化 lcd_pos(0,2); print(m5); /显示 工作状态 lcd_pos(2,2); print(m6); /显示 预定状态 while(1) key(); 12864LCD显示子程序/*12864子函数函数(各启动命令)*/#include #include #include #define uchar unsigned char#define uint unsigned int/* 端口定义*/sbit LCD_RS = P20; /寄存器选取输入 sbit LCD_RW = P21; /液晶读/写控制sbit LCD_EN = P22; /液晶使能控制sbit LCD_PSB = P23; /串/并方式控制void delay1ms(uint x) uint i,j;for(j=0;jx;j+) for(i=0;i110;i+);/*/* */*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */*

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服