📄 键盘扫描.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint key1 ,temp;
uint keyscan();
void display(uint i);
uchar code table []={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
0xa1,0x86,0x8e,0xff};
sbit a = P1^3;
sbit b= P1^4;
sbit c= P1^5;
sbit d= P1^6;
void delay(uint N)
{
while(N!=0) N--;
}
void main()
{ // P0=0xff;
while(1)
{
a=b=c=d=1;
key1=keyscan();
display(key1);
delay(5000);
// P0=0xff;
}
}
void display(uint i)
{
P0=0xff;
delay(100);
P0=table[i];
}
uint keyscan()
{ uint key;
P2=0x7f;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{ delay(500) ;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{ case 0x0e: key=12;break;
case 0x0d: key=13;break;
case 0x0b: key=14;break;
case 0x07: key=15;break;
}
}
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
P2=0xbf;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{ delay(500) ;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{ case 0x0e: key=8;break;
case 0x0d: key=9;break;
case 0x0b: key=10;break;
case 0x07: key=11;break;
}
}
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
P2=0xdf;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{ delay(500) ;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{ case 0x0e: key=4;break;
case 0x0d: key=5;break;
case 0x0b: key=6;break;
case 0x07: key=7;break;
}
}
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
P2=0xef;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{ delay(500) ;
temp=P2;
temp=temp&0x0f;
if(temp!=0x0f)
{
switch(temp)
{ case 0x0e: key=0;break;
case 0x0d: key=1;break;
case 0x0b: key=2;break;
case 0x07: key=3;break;
}
}
}
while(temp!=0x0f)
{
temp=P2;
temp=temp&0x0f;
}
if(0<=key&&key<=15)
return key;
else return 16;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -