📄 4-4动态扫描.txt
字号:
/*--------------------------------------------------------------------------------
低4位控制列,
高4位控制行,
键位:
1 2 3 A
4 5 6 B
7 8 9 C
0 H L D
----------------------------------------------------------------------------------*/
#include <AT89X51.h>
char tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x89,0xc7};
void display(char k)
{
P0=tab[k];
P1=0x10;
}
void delay(char t)
{
char a;
for(;t>0;t--)
for(a=0;a<125;a++)
{;}
}
void keyscan()
{
char temp,key;
P2=0xef;
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
delay(10);
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
temp=P2;
temp&=0xf;
switch(temp)
{
case 0xE:key=1;break;
case 0xD:key=4;break;
case 0xb:key=7;break;
case 0x7:key=0;break;
}
display(key);
}}
P2=0xdf;
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
delay(10);
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
temp=P2;
temp&=0xf;
switch(temp)
{
case 0xE:key=2;break;
case 0xD:key=5;break;
case 0xb:key=8;break;
case 0x7:key=14;break;
}
display(key);
}}
P2=0xbf;
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
delay(10);
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
temp=P2;
temp&=0xf;
switch(temp)
{
case 0xE:key=3;break;
case 0xD:key=6;break;
case 0xb:key=9;break;
case 0x7:key=15;break;
}
display(key);
}
}
P2=0x7f;
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
delay(10);
temp=P2;
temp&=0xf;
if(temp!=0xf)
{
temp=P2;
temp&=0xf;
switch(temp)
{
case 0xE:key=10;break;
case 0xD:key=11;break;
case 0xb:key=12;break;
case 0x7:key=13;break;
}
display(key);
}
}
}
void main()
{
while(1)
{
keyscan();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -