📄 key.c
字号:
#include<AT89X52.H>
#include"led.h" //该头文件包含数码管驱动动
/******************************************************
按键扫描函数
若有按键按下:返回 键值(1-16);
若没按键按下:返回 255
********************************************************/
unsigned char getch ( )
{
unsigned char X=0,
Y=0,
Z=0,
k=255;
P2=0xff;
P2=0x0f; //先对P2置数 行扫描
if(P2!=0x0f) //判断是否有键按下
{
//延时,软件去干扰
if(P2!=0x0f) //确认按键按下X = P2;
{
X=P2; //保存行扫描时有键按下时状态
P2=0xf0; //列扫描
Y=P2; //保存列扫描时有键按下时状态
Z=X|Y; //取出键值
switch ( Z ) //判断键值(那一个键按下)
{
case 0xee: k=0; break; //对键值赋值
case 0xde: k=1; break;
case 0xbe: k=2; break;
case 0x7e: k=3; break;
case 0xed: k=4; break;
case 0xdd: k=6; break;
case 0xbd: k=7; break;
case 0x7d: k=8; break;
case 0xeb: k=9; break;
case 0xdb: k=7; break;
case 0xbb: k=10;break;
case 0x7b: k=11;break;
case 0xe7: k=12;break;
case 0xd7: k=13;break;
case 0xb7: k=14;break;
case 0x77: k=15;break;
}
while(P2!=0xf0);
}
}
return k;
}
void main()
{
unsigned char temp=0,key=255;
while(1)
{
key=getch(); //扫描
if(key!=255)temp=key; //有按键按下
led_display(temp); //显示按键值
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -