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;ifor(j=0;j<120;j++);

}


void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
num++;
if(num==60)
{
num=0;
while(!key1);
}
}
}

if(key2==0)
{
delay(10);
if(key2==0)
{
if(num==0)
{
num=60;

}
num--;
while(!key2);
}
}

if(key3==0)
{
delay(10);
if(key3==0)
{
num=0;
while(!key3);
}
}

if(key4==0)
{
delay(10);
if(key4==0)
{

while(!key4);
TR0=~TR0;
}
}
}


void T0_time() interrupt 1
{
TH0=(65535-45872)/256;
TL0=(65535-45872)%256;
numt0++;
if(numt0==20)
{
numt0=0;
num++;
if(num==60)
{
num=0;

}


}


}













//4x4键盘控制
#include
#define uint unsigned int
#define uchar unsigned char

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 Inital();
void display(uchar );

uchar temp,num;
uchar keyscan();

void delay(uint time)
{
uint x,y;
for(x=0;xfor(y=0;y<110;y++);
}

void main(void)
{
Inital();
while(1)
{
display(keyscan());
}

}


void Inital()
{
P0=0x3e;
dula=1;
dula=0;

wela=1;
P0=0x00;
wela=0;

delay(1000);


wela=1;
P0=0x80;
wela=0;
delay(1000);

}

void display(uchar show)
{
dula=1;
P0=table[show];
dula=0;

}




uchar keyscan()
{
uchar temp,num;
P3=0xfe;
temp=P3;
temp=temp&0xfe;
if(temp!=0xfe)
{
//delay(10);
temp=P3;
temp=temp&0xfe;
if(temp!=0xfe)
{
temp=P3;
switch(temp)
{
case 0xee:
num=0;
break;
case 0xde:
num=1;
break;
case 0xbe:
num=2;
break;
case 0x7e:
num=3;
break;

}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}


P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);

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;



}





相关文档
最新文档