📄 key.c
字号:
#include<stdio.h> //头文件
#include<reg52.h> //头文件
int row; //定义行号
int tier; //定义列号
int KeyScan(); //声明键盘扫描子函数
void Delay(); //声明延时子函数
void main() //主函数
{
int Key,i;
P2=0x00; //初始化为LED灭
while(1) //开始循环扫描键盘
{
Key=KeyScan(); //调用键盘扫描子函数,获取键值
for(i=0;i<Key;i++) //根据键值,控制LED闪烁的次数
{
P2=0x01; //点亮发光二级管
Delay();
P2=0x00; //熄灭发光二级管
Delay();
}
Key=0; //键值归零
}
}
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
}
}
void Delay() //延时子函数
{
int i;
for(i=1000;i>0;i--); //空循环,延时
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -