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

📄 key_scan.h

📁 改程序代码是运用Keil uVision3软件编写的C程序
💻 H
字号:
/***************************************
功能:4*4键盘程序
文件名:KEY_scan.h
硬件:AT89S52
编译人:肖强
编译:Keil-2008-12-9
****************************************/
#ifndef uchar 
#define uchar unsigned char
#endif

#ifndef __KEY_scan__
#define __KEY_scan__

void KEY_delay(void);
uchar KEY_scan(void);
uchar GET_key_data(void);
uchar KEY_scan(void)
{
	uchar key,KEY_data;;
//	while(1)
		
		
	key=GET_key_data();
	if(key==0x11){KEY_data=1;}		 //第1个键按下显示“1”
	else if(key==0x21){KEY_data=2;} //第2个键按下显示2
	else if(key==0x41){KEY_data=3;}  //第3个键按下显示3
	else if(key==0x81){KEY_data=12;}  //第4个键按下显示?
	else if(key==0x12){KEY_data=4;}  //   4
	else if(key==0x22){KEY_data=5;}   //	5
	else if(key==0x42){KEY_data=6;}  //	 6
	else if(key==0x82){KEY_data=13;}  //	  @
	else if(key==0x14){KEY_data=7;}   //	   7
	else if(key==0x24){KEY_data=8;}  //		8
	else if(key==0x44){KEY_data=9;}  //   9
	else if(key==0x84){KEY_data=10;}  //	enter
	else if(key==0x18){KEY_data=14;}  //	 *
	else if(key==0x28){KEY_data=0;}  //	  0
	else if(key==0x48){KEY_data=15;}   //	  #
	else if(key==0x88){KEY_data=11;}	// 	   ESC
	else  KEY_data=20;
		
	return KEY_data;
}
uchar GET_key_data(void)
{
	uchar h,l;//定义行号和列号
	P1=0xf0;
	if((P1&0xf0)!=0xf0)
	{
		KEY_delay();				 //消除抖动
		if((P1&0xf0)!=0xf0)		 //有键按下
		{
			h=0xfe;				//开始扫描键盘 (行扫描)
			while((h&0x10)!=0)
			{
				P1=h;
				h=(P1&0x0f)|0xf0; //得到行号
				if((P1&0xf0)!=0xf0)
				{	
					l=(P1&0xf0)|0x0f;//得到列号
					P1=h;
					while((P1&h)!=h){}	  //等待按键弹起
					return((~h)+(~l)); 	 //有键按下时返回键盘码
				}
				else 
				h=(h<<1)|0x01;		   //改变行扫描位置
			}
			
		}
	
	}	 
 return(0);		//无键盘按下时返回0
}
void KEY_delay(void)	  //延时
{
	uchar i;
	for(i=200;i>0;i--);
}
#endif

⌨️ 快捷键说明

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