📄 key.c
字号:
#include<stdio.h> //头文件
#include<reg52.h> //头文件
int row; //定义行号
int tier; //定义列号
int KeyScan(); //子函数声明
void Delay();
void main() //主函数
{
int Key,i;
while(1) //开始循环扫描键盘
{
Key=KeyScan(); //键盘扫描子函数
for(i=0;i<Key;i++) //根据键值,使LED闪烁相应的次数
{
P2=0x80; //点亮发光二级管
Delay();
P2=0x00; //熄灭发光二级管
Delay();
}
}
}
void Delay() //延时子函数
{
long i;
for(i=10000;i>0;i--); //可以根据系统的时钟频率来调整
}
int KeyScan() //键盘扫描子函数
{
P1=0xF0; //列输出全0
if((P1&0xF0)!=0xF0) //扫描行,如果不全为0,则进入
{
switch(P1) //获得行号
{
case 0x70:
row=1;
break;
case 0xB0:
row=2;
break;
case 0xD0:
row=3;
break;
case 0xE0:
row=4;
break;
default:
break;
}
Delay(); //延时去抖动
P1=0x0F; //行输出全0
if((P1&0x0F)!=0x0F) //扫描列,如果不全为0,则确认按键按下
{
switch(P1) //获得列号
{
case 0x07:
tier=1;
break;
case 0x0B:
tier=2;
break;
case 0x0D:
tier=3;
break;
case 0x0E:
tier=4;
break;
default:
break;
}
return 4*(row-1)+tier; //扫描到按键,返回键值
}
}
else
{
return 0; //未扫描到按键按下,返回0
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -