if(digit==c2) {buzzer=0; c2=c2-2;}
while(digit<=0) //加热结束关闭系统 {TR0=0; TR1=0;
P0=0xe0; P1=0; P2=0; P3=0;} } }
void scanner(void) //扫描函数 { char col,row; //声明行和列
char scan,keyin,kcode; //声明扫描信号,列按键值,扫描码 scan=0xef;
for(col=0;col<4;col++)
{ P1=scan; //P1按键扫描
keyin=rowkey(); //读入第col行的列按键值
_nop_(); //三个_nop_();作用为让 P1 口的状态稳定 _nop_(); _nop_();
if(keyin!=0) //若有按键按下 { for(row=0;row<3;row++) { if(keyin==(0x01< { kcode=row+3*col; //计算出按键码 digit=digit*10+kcode; //扫描码写入七段数码管数组 digit=digit00; //取输入的后三位,输入不够三位高位为零 break; //离开第row列扫描 } } while(rowkey()!=0) //等按键放开 debouncer(); //防抖动函数 } if(qidong==0) //判断启动按键是否按下 { qid=1; while(qidong==0); } if(chs==0) //重新输入数值 { digit=0; while(chs==0); } 32 huoli(); //火力大小的判断 scan=(scan<<1)|0x01; //产生左一位扫描信号 } } char m=0,n=0; void T1_1ms(void)interrupt 3 //T1中断子程序开始,显示四位数码管 { TH1=TH1_M1;TL1=TL1_M1; dig[0]=digit; dig[1]=(digit0)/10; dig[2]=(digit00)/100; dig[3]=digit/1000; P2=TAB[dig[m]] & disp[m]; m=(m<3)? m+1:0; if(qid==1) //启动步进电机 if(--count==0) {OUTPUT=OUTPUT&0xf0; //P0口高四位不变 OUTPUT=excite[n]|OUTPUT; n=(n<4)? n+1:0; count=times;} } int m0=50; void t0_1s(void)interrupt 1 //定时中断TR0 { TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit--; m0=50;} } void huoli(void) //火力大小函数 { if(da==0) //判断大火力是否按下 { a1=1;a2=0;a3=0; while(da==0); //等待按键放开 } if(zhong==0) //判断中火力是否按下 { a1=0;a2=1;a3=0; while(zhong==0); } if(xiao==0) { a1=0;a2=0;a3=1; while(xiao==0); } 33 } void debouncer(void) { int i; for(i=0;i<1200;i++); } //延时防抖程序 //约10ms延时 34 5电路制作与系统调试 在电路的制作过程中,要充分认识各个元器件的功能,同时也要确切认准元件的各个引脚序号,在充分了解之后进行电路的连接,连接之后做反复检查。 在制作PCB板的过程中,首要任务就是封装尺寸一定要准确,其次元件排放不能随意,既要好看,也要考虑到前后左右其他原件间的间距。 在焊接电路时,要学会握住好电烙铁,插上原件时小心元件引脚放反。 在焊接完成之后,进行系统调试,在调试的过程中,我遇到了几个棘手的问题,幸好最终找到了解决的方法。 1. 按键的时候总是出现两个数码管显示一样的数字。 2.上拉电阻很重要,漏接上拉电阻导致电机不运转。 3.蜂鸣器发声时间长短设置要适当。 35 6总结与展望 一、对毕业设计的总结 本毕业设计的内容是基于AT89S52的微波炉控制器的设计与实现,涉及软件和硬件两个部分。如今,微波炉已经走进每个普通的家庭,成为一种烹调加热食物的好工具。因此,制作本毕业设计有着实质的现实意义。本人学习单片机的时候是通过汇编语言入门的,后来由于对C语言产生了一定的兴趣,C语言在单片机的运用也逐渐熟练起来,所以本设计的软件部分使用C语言来编写。为了完成本设计,我查阅了不少的相关的资料,对单片机的基本功能得到了充分的认识。编写程序方面,我用到了编译软件Keil C51和仿真软件Proteus。通过运行这两个软件,可以验证程序的语法和程序的功能实现是否真确,找出程序出现的问题,然后不断的修改和尝试,最终调试出烧录到单片机上的程序。 二、对毕业设计的展望 由于时间与工作的关系,毕业设计只是用七段数码管显示时间,用单片机输出引脚控制步进电机转速等功能。其实,除此以外还有值得加强和改进的地方: 1.电路板的布局有待完善 2.数字显示可改用液晶显示 3.火力输出可改为继电器输出 4.可增加显示加热温度功能 36