⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 零基础单片机C语言设计全套教程
💻 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 + -