pushkey.c
来自「QH_MCU_V1.1单片机C源码. 内含实验程序 这是修改版.」· C语言 代码 · 共 224 行
C
224 行
#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 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(2);
}
void KeyScan(void) //按键扫描子程序
{
uchar temp;
P2 = 0x10;
P0 = 0xf5;
P1 = 0xFF;
temp = P1;
temp &= 0xFF;
if(temp !=0xFF)
{
delay10ms(1);
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)
{
delay10ms(1);
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)
{
display(key);
KeyScan();
// delay10ms(2);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?