有关微波炉控制系统的欢迎大家观看,下面是单片机仿真原理图
单片机源程序:
- #include<stdio.h>
- #include<reg52.h>
- #include <absacc.h>
- #define PA XBYTE[0x8000]
- #define PB XBYTE[0x8001]
- #define PC XBYTE[0x8002]
- #define COM XBYTE[0x8003]
- unsigned int data ledtable[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10},keytable[4][6]={{7,8,9,10,16,17},{4,5,6,11,18,19},{1,2,3,12,20,21},{0,15,14,13,22,23}};
- unsigned int i,t=0,time_num=0;
- sbit light1=P1^0;
- sbit light2=P1^1;
- sbit light3=P1^2;
- sbit light4=P1^3;
- /*===================延迟子程序============*/
- void delay(void)
- {
- unsigned char j,k;
- for(j=20;j>0;j--)
- for(k=200;k>0;k--);
- }
- /*===========数码管显示子程序===============*/
- void ledplay(int b)
- {
- unsigned int m,x[2];
- for(i=0;i<2;i++)
- {
- x[i]=b%10;
- b=b/10;
- }
- for(i=0;i<2;i++)
- {
- x[i]=ledtable[x[i]];
- }
- m=0xfd;
- for(i=2;i>0;i--)
- {
- PA=x[i-1];
- PC=m;
- delay();
- PC=0xff;
- PA=0xff;
- m=(m>>1)|(0x80);
- }
- }
- /*=============测试按键===========*/
- unsigned char testkey(void)
- {
- PC=0;
- if((PB&0x0f)!=0x0f)
- return(1);
- else
- return(0);
- }
- /*===============得到键值==========*/
- unsigned int getkey(void)
- {
- unsigned int x,y,m;
- m=0xfe;
- PC=m;
- while((PB&0x0f)==0x0f) //键盘扫描
- {
- m=(m<<1)|0x01;
- PC=m;
- }
- y=m;
- x=PB;
- for(i=0;(x&0x01)!=0;i++)
- x>>=1;
- x=3-i; //行数
- for(i=0;(y&0x01)!=0;i++)
- y>>=1;
- y=5-i; //列数
- while(testkey()); //等待按键释放
- return(keytable[x][y]); //查表得键值
- }
- /*====================main=============*/
- main()
- {
- unsigned int get_num;
- COM=0x82;
- start:while(1)
- {
- while(1) //开关
- { PA=0xff;
- P1=0;
- TR0=0;
- ET1=0;
- get_num=50;
- if(testkey())
- {
- delay();
- if(testkey())
- get_num=getkey();
- }
- if(get_num==10)
- break;
- }
- light1=1;
-
- while(1) //输入第一个数
- {
- get_num=50;
- if(testkey())
- {
- delay();
- if(testkey())
- get_num=getkey();
- }
- if(get_num<10)
- break;
- if(get_num==10)
- goto start;
- ledplay(0);
- }
- time_num=get_num*10;
-
- while(1) //输入第二个数
- {
- get_num=50;
- if(testkey())
- {
- delay();
- if(testkey())
- get_num=getkey();
- }
- if(get_num<10)
- break;
- if(get_num==10)
- goto start;
- ledplay(time_num);
- }
- time_num+=get_num;
-
- while(1) //输入火力挡位
- {
- get_num=50;
- if(testkey())
- {
- delay();
- if(testkey())
- get_num=getkey();
- }
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载:
微波炉(c).rar
(69.63 KB, 下载次数: 75)
|