l_key.c

来自「自己单片机板c程序」· C语言 代码 · 共 42 行

C
42
字号
/*键盘程序,本程序涉直接采用分时扫描法,将读到的键值直接输出P2口,在LED灯显示,
此程序也将直观看到每个按键所对应的键值了,都从LED表现出来,这是学习矩阵键盘的关键*/

#include <reg52.h>
#include <intrins.h>

unsigned char l_key=0xff;	//我们定入一个变量,存放按键值

void ReadKey(void);   //扫描键盘 获取键值


void main(void)     //入口函数
{
	while(1){
		ReadKey();				//调用键盘扫描
		if(l_key!=0xff)			//如果有键按下,将其输出P2口LED灯显示,
			P2=~l_key;			//这里取反是因为LED灯采用共阴接法
	}
}

void ReadKey(void)						//读键盘值
{
	P0=0xfe;	//将第一列拉低,扫描是否有按键按下,第一列按键包括:0,4,8,C
	l_key=P0;	//读取键值
	if(l_key!=0xfe)	//如果l_key不等于0xfe,说明有键按下,就返回,否则继续扫描下一列	
	     return;
	P0=0xfd;	//将第二列拉低,扫描是否有按键按下,第二列按键包括:1,5,9,D
	l_key=P0;	//读取键值
	if(l_key!=0xfd)	//如果l_key不等于0xfd,说明有键按下,就返回,否则继续扫描下一列	
	     return;
	P0=0xfb;	//将第三列拉低,扫描是否有按键按下,第三列按键包括:2,6,A,F
	l_key=P0;	//读取键值
	if(l_key!=0xfb)	//如果l_key不等于0xfb,说明有键按下,就返回,否则继续扫描下一列	
	     return;
	P0=0xf7;	//将第四列拉低,扫描是否有按键按下,第四列按键包括:3,7,B,F
	l_key=P0;	//读取键值
	if(l_key!=0xf7)	//如果l_key不等于0xf7,说明有键按下,就返回,否则扫描完毕将l_key=0xff	
	     return;
	l_key=0xff;
}  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?