#include
#define uint unsigned int//宏命令 定义
#define uchar unsigned char
sfr AUXR = 0x8E;
sfr P4 = 0xC0; //P4
sbit a=P2^5;
sbit b=P2^6;
sbit c=P2^7;
//4行
sbit r1=P3^0;
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;
//4列
sbit c1=P4^4;
sbit c2=P4^2;
sbit c3=P3^5;
sbit c4=P3^4;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void led()//led灯(通过译码器)
{
a=0;
b=0;
c=1;
}
void feng()//蜂鸣器(-)
{
a=1;
b=0;
c=1;
}
void wei()//数码管位选(-)
{
a=0;
b=1;
c=1;
}
void duan()//数码管段选(-)
{
a=1;
b=1;
c=1;
}
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int temp,num;
uint home,mo,num,key;
unsigned char key_scan()
{
unsigned char key_value;
delay(1);
r1=0;
r2=r3=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=0;delay(5);}
else if(!c2){key_value=1;delay(5);}
else if(!c3){key_value=2;delay(5);}
else if(!c4){key_value=3;delay(5);}
delay(1);
r2=0;
r1=r3=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=4;delay(5);}
else if(!c2){key_value=5;delay(5);}
else if(!c3){key_value=6;delay(5);}
else if(!c4){key_value=7;delay(5);}
delay(1);
r3=0;
r2=r1=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=8;delay(5);}
else if(!c2){key_value=9;delay(5);}
else if(!c3){key_value=10;delay(5);}
else if(!c4){key_value=11;delay(5);}
delay(1);
r4=0;
r2=r3=r1=1;
c1=c2=c3=c4=1;
if(!c1){key_value=12;delay(5);}
else if(!c2){key_value=13;delay(5);}
else if(!c3){key_value=14;delay(5);}
else if(!c4){key_value=15;delay(5);}
key=key_value;
return key_value;
}
void main()
{
feng();
P0=0x20;
led();
P0=0xff;
wei();
P0=0xff;
duan();
P0=0xbf;
while(1)
{
key_scan();
duan();
P0=tab[key];
}
}
#include
#define uint unsigned int//宏命令 定义
#define uchar unsigned char
sfr AUXR = 0x8E;
sfr P4 = 0xC0; //P4
sbit a=P2^5;
sbit b=P2^6;
sbit c=P2^7;
//4行
sbit r1=P3^0;
sbit r2=P3^1;
sbit r3=P3^2;
sbit r4=P3^3;
//4列
sbit c1=P4^4;
sbit c2=P4^2;
sbit c3=P3^5;
sbit c4=P3^4;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void led()//led灯(通过译码器)
{
a=0;
b=0;
c=1;
}
void feng()//蜂鸣器(-)
{
a=1;
b=0;
c=1;
}
void wei()//数码管位选(-)
{
a=0;
b=1;
c=1;
}
void duan()//数码管段选(-)
{
a=1;
b=1;
c=1;
}
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned int temp,num;
uint home,mo,num,key;
unsigned char key_scan()
{
unsigned char key_value;
delay(1);
r1=0;
r2=r3=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=0;delay(5);}
else if(!c2){key_value=1;delay(5);}
else if(!c3){key_value=2;delay(5);}
else if(!c4){key_value=3;delay(5);}
delay(1);
r2=0;
r1=r3=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=4;delay(5);}
else if(!c2){key_value=5;delay(5);}
else if(!c3){key_value=6;delay(5);}
else if(!c4){key_value=7;delay(5);}
delay(1);
r3=0;
r2=r1=r4=1;
c1=c2=c3=c4=1;
if(!c1){key_value=8;delay(5);}
else if(!c2){key_value=9;delay(5);}
else if(!c3){key_value=10;delay(5);}
else if(!c4){key_value=11;delay(5);}
delay(1);
r4=0;
r2=r3=r1=1;
c1=c2=c3=c4=1;
if(!c1){key_value=12;delay(5);}
else if(!c2){key_value=13;delay(5);}
else if(!c3){key_value=14;delay(5);}
else if(!c4){key_value=15;delay(5);}
key=key_value;
return key_value;
}
void main()
{
feng();
P0=0x20;
led();
P0=0xff;
wei();
P0=0xff;
duan();
P0=0xbf;
while(1)
{
key_scan();
duan();
P0=tab[key];
}
}