收藏 分销(赏)

微波炉课程设计.doc

上传人:仙人****88 文档编号:8784740 上传时间:2025-03-02 格式:DOC 页数:33 大小:320.03KB
下载 相关 举报
微波炉课程设计.doc_第1页
第1页 / 共33页
微波炉课程设计.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述
课 程 设 计 说 明 书 目 录 摘要.....................................................1 目录..................................................................2 第一章 前言...........................................................3 1.1概述..............................................................3 1.2具体要求..........................................................3 第二章 总体方案设计....................................................5 2.1系统总体框图......................................................5 2.2定时模块..........................................................5 2.3按键输入模块......................................................6 2.3.1方案选择......................................................6 2.3.2按键输入设计..................................................6 2.4显示模块..........................................................7 2.4.1档位显示......................................................7 2.4.2计时显示......................................................8 2.5音响发声模块......................................................8 2.6电源模块..........................................................9 2.7功率输入模块......................................................9 第三章 系统软件设计和仿真.............................................11 3.1keil和protues软件................................................11 3.2系统软件编辑流程图................................................12 3.3系统程序调试......................................................12 3.3.1显示模块调试..................................................12 3.3.2定时模块调试..................................................15 3.3.3按键扫描模块..................................................17 第四章 总结...........................................................22 附录..................................................................23 第一章 前言 1.1概述 近年来,微波炉已经走进了千家万户的厨房,成为现代家庭的必备产品。随着控制技术和智能技术的发展,微波炉也向着智能化、信息化发展。我们希望微波炉能够按既有程序进行烹调,又不需要使用者根据食物的类型、数量、温度等因素去设定微波炉的工作时间,因为人为设定的工作时间过长,含水分较多的食物可能会产生过热碳化的现象,若时间过短则达不到预期的烹调效果。这不仅在节能方面未做过多考虑,使用者还需要经常翻看使用说明书才能完成操作过程。针对这些问题,我觉得有必要研制一种操作简单且烹调效果好的微波炉,根据一些家常菜按固定程序烹调的现象,可采取分时、分档火力加热,节时又节能。 本可编程微波炉控制器系统,以AT89C51单片机为核心, 由计时系统、手动键盘、温度测量、状态显示等功能模块组成。基于题目基本要求,本系统可实现微波炉的启动、停止、功率设定、加热时间设定、加热时间显示等功能。此外,还扩展了液晶显示工作状态、时间显示、微波炉火力档位设定、火力指示等功能。 其中常规基础部分可以选择火力并设定加热时间,系统通过发光二极管显示选择的火力档。系统启动后开始倒计时,此外还能通过LED显示。计时结束即工作完毕时,系统发出警报。 1.2具体要求 (1) 制定一个在不同功能时火力的控制时序表。具有三档微波加热功能,分别表示微波炉工作状态为烹调、烘烤、解冻,试验使用LED模拟。 (2) 实现工作步骤:复位待机——〉检测显示电路——〉设置输出功能和定时器初值——〉启动定时和工作开始——〉结束烹调、音响提示。 (3) 在上电或手动按复位键时,控制器输出的微波功率控制信号为0,微波加热处于待机状态,时间显示电路显示为00.00。 (4) 具有4位时间预置电路,按键启动时间设置,最大预设数为99分99秒。 (5) 设定初值后,按开启键,一方面按选择的挡位启动相应的微波加热;另一方面使计时电路以秒为单位作倒计时。当计时到时间为0则断开微波加热器,并给出声音提示,即扬声器输出2~3s的双音频提示音。 (6) 若在待机状态时按测试键,则4位数码管交替显示全亮和全灭两种状态,以检测数码管各发光段的好坏。 第二章 总体方案设计 2.1 系统的总体框图 系统以AT89C51单片机为核心,连接各外部电路完成人机交互等各功能的控制。系统的总体框图如下图2.1所示。 图2.1系统总体框图 A T 8 9 C 5 1 内部定时器 按键输入电路 电源电路 档位显示电路 LED显示电路 音响发声电路 功率输出电路 2.2定时模块 方案一:采用传统的机械式定时,定时时间通过机械旋钮来控制。该方法操作简单,对设定时间只要旋转到相应的位置即可。但由于机械式定时容易磨损,定时精度低,也不能实现一些复杂的功能。特别是一些人性化的界面设计无法实现。 方案二:采用小规模集成元件定时,比如用计数器/分频器,该方法价格便宜,但是接线复杂,设计也比较困难,对时序要求比较高。该方案功能单一,也无法实现复杂功能,扩展麻烦。也不能实现一些人性化的界面设计。 方案三:采用单片机的定时器定时 。由于当前市场上的单片机都内含定时器计数器,所以用单片机定时比较方便。另外,单片机能够实现复杂功能,能够设计出友好的人机界面接口,价格也比较便宜,单片机定时比较准确,性价比很高。 综上所述,定时部分我们采用单片机的定时器来实现。 2.3按键输入模块 2.3.1方案选择 由于该微波炉控制系统用到的按键比较多,所以对按键的设计非常重要。单片机按键显示系统设计一般有如下几种方案 : 方案一:采用并行口扩展芯片扩展并行口的方法来设计键显系统。用来做键显系统的传统的芯片有8155、8255、8279等。这种方式的优点是速度快,显示数据简单,缺点是,占用单片机口线多。由于本系统的“火力”加热由多个发光二极管来模拟,所以,占用口线较多。显然,在本系统中不宜采用。 方案二:采用直接接I/O口方法。利用对I/O口的编辑可以实现相应的功能,用这种方法用的I/0口占用的比较多,但是用程序编程比较简单。 由于本系统用到程序复杂,故使用方案二,直接使用I/O口来实现。 2.3.2 按键输入设计 输入模块采用9个按键作为输入设备,实现数据输入控制。按键是一种常见的输入装置,在日常生活中,按键在计算机、电话、手机、微波炉等格式电子产品上已经被广泛应用,按键通常采用行列扫描法来确定所按下键的行列位置。由于按键是一种机械开关,所以设计其控制电路时,需要涉及到按键扫描、键盘译码,光靠按键是无法完成按键输入工作的。其中按键扫描又涉及到时序产生、按键扫描和消除抖动。这些按钮分别与P1口相连,分别是:30s、1MIN、5MIN、清零、档+、档-、启动、停止和检测数码管。连接电路图如下图2-1所示: 图2-1 按键电路 2.4显示模块 2.4.1档位显示 档位显示电路有一个共阴极LED显示,有1,2,3档,分别代表“烹调”、“烘烤”、“解冻”三个档位,直接将LED接至单片机P3口通过单片机发送低电平使LED发光,电路图如图2-2所示: 图2-2 档位显示电路 2.4.2计时显示 显示部分采用八段数码管实现。本次设计总共设计了1~3档共计3个火力档,考虑到用LED指示工作火力档,将会占据大量控制芯片的I/O口,所以采用LED数码管显示当前工作的火力档位的倒计时。具体设计时,采用4位LED数码管显示加热倒时,烹饪计时为减法计数,最大计时时间为99:99。采用四位八段数码管一个,格式为(分_十位、分_个位、秒_十位、秒_个位)。时间显示用到两个锁存器,共用一个输出口P0,分时复用,一个锁存器用来锁存“位”,一个锁存器用来锁存“段码”,数码管就可以稳定显示。档位显示单独用P3口输出数据。数码管均采用共阴数码管。显示模块设计图如图2-3所示: 图2-3 计时显示电路 2.5音响发声模块 本系统要求扬声器能够给出声音提示,输出2—3秒的双音频提示音。我们采用蜂鸣器来实现实现双音频输出。将蜂鸣器的借口与P2.3连接,原理图如下图2-4所示: 图2-4 蜂鸣器报警电路 2.6电源模块 本系统要给单片机提供一个5V的直流电源,所以设计一个220V转换为5V的电源电路,电路如下图2-5所示: 图2-5 由220V输出5V的电源电路 2.7 功率输出模块 磁控管是微波电子管的一种,通常作为微波能发生器。它的阴极电压可达到3KV以上,工作频率2KMHz,阳极电流为300mA-1200 mA,它的工作状态,不能直接控制,而高压是通过变压器得到,所以由此可以得出,要控制磁控管的工作状态,可以间接控制变压器初级绕组的供电状态。 为使单片机可以控制磁控管,通过单片机的一个引脚输出信号,去控制继电器的导通与关断,但是需要一个驱动电路,所以用到了三极管PNP,为防止继电器由导通到关断时产生的过电流对电路造成危害,所以和继电器并联一个反向二极管。 由于磁控管需要的电压很高,这里不予画出,只是通过继电器控制电路的开通与关断。实际仿真中,用灯泡代替,可以看到电路通断的切换状态,如果应用到实际中,灯泡就可以用变压器替换。电路原理图如下图2-6所示: 图2-6 功率输出电路 第三章 系统软件设计和仿真 3.1 keil和proteus软件 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。 Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 3.2 系统软件编辑流程图 图3-1 程序流程 3.3系统程序调试 3.3.1显示模块调试 烹饪计时为减法计数,最大计时时间为99:99。显示部分采用四位八段数码管一个和一位八段数码管一个。四位七段数码管用来显示工作时间,格式为(分_十位、分_个位、秒_十位、秒_个位)。一位七段数码管用来显示火力档位,档位分为(1-3)档,时间显示用到两个锁存器,共用一个输出口P0,分时复用,一个锁存器用来锁存“位”,一个锁存器用来锁存“段码”,数码管就可以稳定显示。档位显示单独用P3口输出数据。数码管均采用共阴数码管,设计一个数组dis[]来表示分的十位,分的个位,秒的十位,秒的个位,在通过循环程序显示,其程序如下: /*------------------------ 时间变换为每个显示位 --------------------------*/ void time_converter() { dis[0]=count_s/600; //取分的十位 dis[1]=(count_s/60)%10; //取分的个位 dis[2]=(count_s%60)/10; //取秒的十位 dis[3]=(count_s%60)%10; //取秒的个位 } /*------------------------ 显示函数 --------------------------*/ void display() { uchar t; uchar k; for(k=0;k<4;k++) //LED显示 { wei=1; P0=codecho[k]; wei=0; P0=0xff; delay_ms(1); duan=1; P0=codevalue[dis[k]]; duan=0; P0=0xff; delay_ms(1); } P3=codevalue[pv]; //显示档位 */ while(!P24) //按键测试 { for(t=0;t<4;t++) { wei=1; P0=codecho[t]; wei=0; P0=0xff; delay_ms(1); duan=1; P0=codevalue[10]; duan=0; P0=0xff; delay_ms(1); P3=codevalue[10]; } } } 仿真图如下图3-2所示: 图3-2 显示模块仿真 3.3.2 定时模块 采用单片机内部定时器,用两个定时器T0,T1,T0用来倒计时微波炉的时间,用方式一定时50ms,用一个循环20次,就是定时1s,设定此致为TH0=0x3c,TL0=0xaf。T1用来定时火力的大小,用方式一,用来定时加热和冷却,初值TH0=0x3c,TL0=0xaf。程序如下所示: /*------------------------ 定时器初始化 --------------------------*/ void t_clr() { EA=1; //CPU开中断 ET0=1; ET1=1; //定时器 中断允许 TMOD=0X11; //定时器T1、T0 定时 方式一 TH0=0X3c; TL0=0Xaf; //6M 晶振,65536-155367=50000,50000*20=1000000us=1s TH1=0X3c; TL1=0X0af; } /*------------------------ 定时器T1中断 --------------------------*/ void t1() interrupt 3 { TR1=0; TH1=0X3c; TL1=0X0af; TR1=1; if (pv_j!=0) //需要加热 {cyc1--; if (cyc1==0) {cyc1=20; pv_j--; if (pv_j==0) //加热时间到 { P22=1; //否则,停止加热,进入冷却阶段 } } } else if (pv_l!=0) //是否需要冷却 {cyc1--; if (cyc1==0) {cyc1=20; pv_l--; if (pv_l==0) //冷却时间到 { P22=0; //进行加热 pv_j=pv*6+6;} //再次设定加热时间 } } } 3.3.3按键扫描模块 通常的按键所用开关为机械弹性开关。由于机械触电的弹性作用,按键在闭合及断开的瞬间均伴随有一连串的抖动。键抖动会引起一次按键被误读多次。为了确保CPU对键的一次闭合仅作一次处理,必须去除抖动。 消除抖动的方法有硬件和软件两种方法。硬件方法常用RS触发器电路。软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。这里用程序延时的方法消除抖动,并对按键进行编辑,程序如下: /*------------------------ 键盘扫描函数 --------------------------*/ void key_scan() { if(!P10) { delay_ms(70); if(!P10) count_s+=30; //时间 +30秒 if (count_s>6000) count_s=0; } if(!P11) { delay_ms(70); if(!P11) count_s+=60; //时间 +1 分 if (count_s>6000) count_s=0; } if(!P12) { delay_ms(70); if(!P12) count_s+=300; //时间+5分 if (count_s>6000) count_s=0; } if(!P13) { delay_ms(70); if(!P13) count_s=0; //时间清零 } if(!P14) { delay_ms(70); if(!P14) {if (pv<3) pv++; //档位+1 pv_j=pv*6+6; //加热时间 pv_l=30-pv_j; //冷却时间 } } if(!P15) { delay_ms(70); if(!P15) {if (pv>0) pv--; //档位-1 pv_j=pv*6+6; pv_l=30-pv_j; } } if(!P16) { delay_ms(70); if(!P16) { P22=1; if(count_s==0) //如果没有设定时间,不加热,定时器不工作 {TR0=0; TR1=0;} else //如果已经设定时间,则开始计时,开始加热 { pv_j=6*pv+6; pv_l=30-pv_j; t_clr(); TR0=1; TR1=1; P22=0;} } } if(!P17) //停止加热,终止定时器 { delay_ms(70); if(!P17) {P22=1; P23=0; TR0=0; TR1=0; } } } 仿真图形如下图3-3所示: 图3-3 按键仿真电路 第四章 总结 在调试过程中,主要的问题不是电路的问题,而是程序的问题。问题主要在微波炉驱动和显示模块和按键模块方面。 驱动问题:在驱动的时候,软件中,只需要给相应端口一个电平,驱动继电器的时候,需要考虑电压和电流,驱动电压为5V,电流为100mA左右。 显示问题:显示的时候,先要确定位,通过锁存器确定。然后确定输出的具体数值,由另一个锁存器锁存。开始的时候,由于程序的问题,显示会不完整,并且出现显示错位的问题。后来,通过在显示程序里加入一定的延时,让七段数码管有一定时间来调整,避免了锁存混乱的情况,最终显示趋于稳定和正确。 按键问题:按键是人机交互的关键,主要涉及识别和去抖动。如果没有加入延时去抖动,会出现按一下动作多次的问题。 这次课程设计让我感受颇深,首先在刚拿到这个设计要求时,很是束手无策,但是通过老师悉心指导后,一次一次的翻阅参考资料,一次一次的捉摸,终于在和搭档的努力下,完成了这次课程设计。在设计的过程中,同学提出好的建议是我意识到学习贵在交流,只有在交流中才能提升自己,才能丰富自己的只是,只有在交流的过程中,才能产生多心的火花新的思想。要完成设计,必须做到一丝不苟,对各个部位的电路图都要检查,无比达到完美,因为电子方面只要出现一点小错误都会导致整体的瘫痪,因此不能粗心大意。在设计的过程中,我知道了做任何事情都要以严谨的态度对待,找个课程设计我有了能够综合运用所学知识的机会,让我的动手能力,逻辑思维能力得到了相应的锻炼。也让我学习有了新的理解。 作为当代大学生,我明白了,我们应该多多加强动手能力的训练,正所谓:实践出真知。理论和实践是不可分的整体! 附录 参考文献 [1]张毅刚、彭喜元、董继成.单片机原理及应用[M].北京:高等教育出版社,2003年12月 [2]袁庆辉 曹卫芳.基于单片机的可编程微波炉控制器系统设计[J].工业控制计机,2008(4) [3]王小利.可编程微波炉控制器系统设计[J]. 实验室研究与探索,2009(1) [4]李亚.微波炉控制器的设计与分析[J]. 中国科技博览,2010(30) [5] 公茂法、马宝甫编著 单片机人机接口实例集 北京航空航天出版社1998 [6] 李广弟等 单片机原理机应用 北京航空航天大学出版社,2003 [7] 李华 MCS-51系列单片机使用接口技术。北京航空航天大学出版社,1990 [8] 何立民 单片机应用系统设计。北京航空航天大学出版社,1993 原理图: 仿真图: 程序: #include <reg51.h> #define uint unsigned int #define uchar unsigned char uint dis[]={0x00,0x00,0x00,0x00}; uint pv=1,pv_j=6,pv_l=24; //定义 档位、加热时间、冷却时间(每个周期) uint count_s=0; //记录定时时间 uint cyc0=20,cyc1=20; // 为了计时一秒,定时器一次中断为50ms,20*50ms=1s uchar codevalue[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff}; //七段数码管显示码,显示0~9和全亮 uchar codecho[]={0xfe,0xfd,0xfb,0xf7}; //位选码 sbit P10=P1^0; //引脚定义 sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P14=P1^4; sbit P15=P1^5; sbit P16=P1^6; sbit P17=P1^7; sbit duan=P2^0; sbit wei=P2^1; sbit P22=P2^2; sbit P23=P2^3; sbit P24=P2^4; /*-------------------- 延时函数,大致延时一毫秒 -------------------*/ void delay_ms(uint t) {uchar i; while(t--) { i=250; while(--i); } } /*------------------------ 定时器初始化 --------------------------*/ void t_clr() { EA=1; //CPU开中断 ET0=1; ET1=1; //定时器 中断允许 TMOD=0X11; //定时器T1、T0 定时 方式一 TH0=0X3c; TL0=0Xaf; //6M 晶振,65536-155367=50000,50000*20us=1000000us=1s TH1=0X3c; TL1=0X0af; } /*------------------------ 键盘扫描函数 --------------------------*/ void key_scan() { if(!P10) { delay_ms(70); if(!P10) count_s+=30; //时间 +30秒 if (count_s>6000) count_s=0; } if(!P11) { delay_ms(70); if(!P11) count_s+=60; //时间 +1 分 if (count_s>6000) count_s=0; } if(!P12) { delay_ms(70); if(!P12) count_s+=300; //时间+5分 if (count_s>6000) count_s=0; } if(!P13) { delay_ms(70); if(!P13) count_s=0; //时间清零 } if(!P14) { delay_ms(70); if(!P14) {if (pv<3) pv++; //档位+1 pv_j=pv*6+6; //加热时间 pv_l=30-pv_j; //冷却时间 } } if(!P15) { delay_ms(70); if(!P15) {if (pv>0) pv--; //档位-1 pv_j=pv*6+6; pv_l=30-pv_j; } } if(!P16) { delay_ms(70); if(!P16) { P22=1; if(count_s==0) //如果没有设定时间,不加热,定时器不工作 {TR0=0; TR1=0;} else //如果已经设定时间,则开始计时,开始加热 { pv_j=6*pv+6; pv_l=30-pv_j; t_clr(); TR0=1; TR1=1; P22=0;} } } if(!P17) //停止加热,终止定时器 { delay_ms(70); if(!P17) {P22=1; P23=0; TR0=0; TR1=0; } } } /*------------------------ 时间变换为每个显示位 --------------------------*/ void time_converter() { dis[0]=count_s/600; //取分的十位 dis[1]=(count_s/60)%10; //取分的个位 dis[2]=(count_s%60)/10; //取秒的十位 dis[3]=(count_s%60)%10; //取秒的个位 } /*------------------------ 显示函数 --------------------------*/ void display() { uchar t; uchar k; for(k=0;k<4;k++) //LED显示 { wei=1; P0=codecho[k]; wei=0; P0=0xff; delay_ms(1); duan=1; P0=codevalue[dis[k]]; duan=0; P0=0xff; delay_ms(1); } P3=codevalue[pv]; //显示档位 */ while(!P24) //按键测试 { for(t=0;t<4;t++) { wei=1; P0=codecho[t]; wei=0; P0=0xff; delay_ms(1); duan=1; P0=codevalue[10]; duan=0; P0=0xff; delay_ms(1); P3=codevalue[10]; } } } /*------------------------ 主函数 --------------------------*/ void main() { uchar n=200; P23=0; t_clr(); //初始化 while(1) { key_scan(); //键盘扫描 time_converter();//数值转换 display(); //显示 } } /*------------------------ 定时器T0中断 --------------------------*/ void t0() interrupt 1 { TR0=0; TH0=0X3c; TL0=0Xaf; cyc0--; if (cyc0==0) {cyc0=20; count_s-
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服