《微波炉程序清单.doc》由会员分享,可在线阅读,更多相关《微波炉程序清单.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微波炉程序清单:#include /头文件#define uchar unsigned char #define uint unsigned int uchar cyc,cyd;uint value,time_value; uchar num;uchar door;sbit P2_0=P20; /数码管片选口sbit P2_1=P21; /同上sbit P2_2=P22; /同上 sbit K2=P24; /时间百位设置口sbit K3=P25; / 时间十位设置口sbit K4=P26; / 时间个位设置口sbit K5=P27; / 设置确认口sbit P1_0=P10; / 门指示灯口s
2、bit P1_1=P11; / 磁管加热指示口sbit P1_2=P12; / 门开关判断口sbit st=P13; /微波炉运行键口sbit BUZZER=P14; /报警输出口uchar dig=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /显示代码uchar LedOut3;voiddelay_250us(void) /250us延迟函数,用于产生2KHZ信号 unsigned char a,b; for(b=19;b0;b-) for(a=5;a0;a-); viod buzz() /报警函数 uint u=0; /定义一变量,
3、用于控制喇叭响的时间 while(u 0; i-) for(j = 200; j 0; j-); void display (unsigned int t ) /动态显示子程序 uchar i; LedOut0=digt%10; /个位 LedOut1=digt%100/10; /十位 LedOut2=digt/100; /百位 for( i=0; i0;c-) for(b=238;b0;b-) for(a=30;a0;a-); key_set() /键值设置子程序 uchar ge, shi, bai; display(0); /键值清零 调用动态显示子程序 ge=0; / 键值个位 shi
4、=0; /键值十位 bai=0; /键值百位 cyc=1; /循环一次 while(cyc) / if(K2=0) /百位键被按下 bai+; /百位加 delay(); /调用延时子程序 if(K3=0) /十位键按下 shi+; / delay(); /调用延时子程序 if(K4=0) /个位键按下 ge+; / delay(); /调用延时子程序 if(ge=10) ge=0; /当个位键的次数为10次,则给0值if(shi=10) shi=0; /当十位键的次数为10次,则给0值if(bai=10) bai=0; /当百位键的次数为10次,则给0值value =bai*100+shi*
5、10+ge; /计算设定值 time_value= value ; / 保留值 display(value); / 调用显示设定值if(K5=0) cyc=0; /退出循环 return value; /返回时间值 /仿真器保留Void main() /主函数 num=0; value=832; /默认初值 time_value=832; /保留时间值 TMOD=0x10; /定时器的工作方式1 TH1 = 0x3c; /装入定时的初值 TL1 = 0xb0; / ET1 = 1; / TR1 = 1; / 开定时器1 ET0=1; /外部中断设置 EX0=1; /开放外部中断0 IT0=1;
6、 /设置下降沿触发 EA=1; 开INT0中断 while(1) / display(value); /调用显示时间 void time1(void) interrupt 3/ TH1 = 0x3c; /定时器初值 TL1 = 0xb0; / / if(st=0) door=1; /当运行键按下,门标志位door为1 if(P1_2=0&door=1) /如果运行标志位door为1且门关 / num+; / P1_0=1; /门指示灯灭 P1_1=0; / 磁管加热指示灯亮 if(num=20) / num=0; / value-; /显示值自减 if(P1_2=0) P1_0=1; /当门关
7、时,门指示灭 if(P1_2=1&time_value=value )/&valuetime_value) /运行当中门开 P1_0=0; /门指示灯亮 P1_1=1; /磁管加热指示灯灭 door=0; /运行标0志位为 if(P1_2=1&valuetime_value) / 运行中门开 P1_0=0; / 门指示灯亮 P1_1=1; / 磁管加热指示灯灭 door=0; /运行标0志位为 buzz() ; /报警器报警 if(value=0) /当加热结束 P1_1=1; /磁管加热指示灯灭 door=0; /运行标0志位为 value=0; /加热时间位0 buzz() ; /报警器报警 void int_0 (void) interrupt 0/ 外部0中断 cyd=1; /打开循环 while(cyd) / key_set(); /键盘输入cyd=0; /关闭循环
限制150内