📄 pushkey.c.bak
字号:
#include <REG51.H>
#define uchar unsigned char
//带点显示
//unsigned char LedCode[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0XDE,0xF9,0xF1};
//不带点显示
unsigned char LedCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0X5E,0x79,0x71};
unsigned char Sel[]={0x80,0x81,0x82,0x83};
uchar key = 0x00;
void delay10ms(unsigned char time)
{
unsigned char a,b,c;
for(a=0;a<time;a++)
for(b=0;b<10;b++)
for(c=0;c<120;c++)
;
}
void delay()
{
uchar i = 0;
uchar j = 0;
for (j=0;j<255;j++)
{
for (i=0; i<250; i++)
;
}
}
void display(uchar key)
{
if(key <= 9)
{
P2 = 0x10;
P0 = 0x1f;
P2 = 0x00;
P2 = 0x80;
P0 = LedCode[0];
}
else
{
P2 = 0x10;
P0 = 0x1f;
P2 = 0x00;
P2 = 0x80;
P0 = LedCode[1];
}
delay10ms(2);
P2 = 0x00;
P2 = 0x10;
P0 = 0x0f;
P2 = 0x00;
P2 = 0x80;
switch(key)
{
case 2:
P0 = LedCode[2];
break;
case 3:
P0 = LedCode[3];
break;
case 4:
P0 = LedCode[4];
break;
case 5:
P0 = LedCode[5];
break;
case 6:
P0 = LedCode[6];
break;
case 7:
P0 = LedCode[7];
break;
case 8:
P0 = LedCode[8];
break;
case 9:
P0 = LedCode[9];
break;
case 10:
P0 = LedCode[0];
break;
case 11:
P0 = LedCode[1];
break;
case 12:
P0 = LedCode[2];
break;
case 13:
P0 = LedCode[3];
break;
case 14:
P0 = LedCode[4];
break;
case 15:
P0 = LedCode[5];
break;
case 16:
P0 = LedCode[6];
break;
case 17:
P0 = LedCode[7];
break;
default:
P0 = 0x3f;
break;
}
delay10ms(1);
}
void KeyScan(void) //按键扫描子程序
{
uchar temp;
P2 = 0x10;
P0 = 0xf5;
P1 = 0xFF;
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
delay();
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
temp = P1;
temp &= 0xFF;
switch(temp)
{
case 0xfe:
key = 2;
break;
case 0xfd:
key = 3;
break;
case 0xfb:
key = 4;
break;
case 0xf7:
key = 5;
break;
case 0xef:
key = 6;
break;
case 0xdf:
key = 7;
break;
case 0xbf:
key = 8;
break;
case 0x7f:
key = 9;
break;
default:
key = 00;
break;
}
}
}
P2 = 0x00;
P2 = 0x10;
P0 = 0xf6;
P1 = 0xFF;
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
delay();
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
temp = P1;
temp &= 0xFF;
switch(temp)
{
case 0xfe:
key = 10;
break;
case 0xfd:
key = 11;
break;
case 0xfb:
key = 12;
break;
case 0xf7:
key = 13;
break;
case 0xef:
key = 14;
break;
case 0xdf:
key = 15;
break;
case 0xbf:
key = 16;
break;
case 0x7f:
key = 17;
break;
default:
key = 00;
break;
}
}
P2 = 0x00;
}
}
void main()
{
while(1)
{
keyscan();
delay10ms(2);
display(key);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -