c51单片机中键盘,数码管,中断的程序代码
4个按键控制
#include
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint);
void display(uchar);
void Inital();
void keyscan();
uchar number,num,numt0;
void main()
{
Inital();
while(1)
{
keyscan();
display(num);
}
}
void Inital()
{
EA=1;
ET0=1;
TMOD=0X01;
TH0=(65535-45872)/256;
TL0=(65535-45872)%256;
}
void display(uchar number)
{
char shi,ge;
shi=number/10;
ge =number%10;
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
//delay(5);
dula=1;
P0=table[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
//delay(5);
}
void delay(uint time)
{
uint i,j;
for(i=0;i
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
num=4;break;
case 0xdd:
num=5;break;
case 0xbd:
num=6;break;
case 0x7d:
num=7;break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
num=8;break;
case 0xdb:
num=9;break;
case 0xbb:
num=10;break;
case 0x7b:
num=11;break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
num=12;break;
case 0xd7:
num=13;break;
case 0xb7:
num=14;break;
case 0x77:
num=15;break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
return num;
}