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

📄 getkey.c

📁 矩阵按键程序
💻 C
字号:
#include <AT89X51.H>
unsigned char col[4]={0xef,0xdf,0xbf,0x7f};		
unsigned char row[4]={0x07,0x0b,0x0d,0x0e}; 
#define uint unsigned int 
#define uchar unsigned char
 
void delaynms(uint  n)
{uchar i;
while(n--)
        {for(i=0;i<125;i++);
        }
}

 
unsigned char GetKeyVal()
{
	uint i,j,getSta,keyVal;
	
	for(i=0;i<4;i++)              
	{							
		P2= col[i];
		//delay_us(2);       
		if(P2!=col[i])
		{
			getSta=P2&0x0F;
			for(j=0;j<4;j++)    
				if(getSta==row[j])                                 
				{
					keyVal=j+i*4;
					switch (keyVal)		//按键校正
					{
					case 7:
						keyVal=5;break;
					case 10:
						keyVal=6;break;
					case 13:
						keyVal=7;break;
					case 5:
						keyVal=8;break;
					case 8:
						keyVal=9;break;
					case 11:
						keyVal=10;break;
					case 14:
						keyVal=11;break;
					case 6:
						keyVal=12;break;
					case 9:
						keyVal=13;break;
					case 12:
						keyVal=14;break;
					}

					return keyVal;
				}
		}
	}
	return 0xFF;
}
//**********************************
void main(void)
{
unsigned char temp;
P2=0xFF;
while (1)
      {
	temp=GetKeyVal();
      	if (temp!=0xff)
	{if(temp==9)P1_0=~P1_0;
	else if(temp==10)P1_1=~P1_1;
	else if(temp==11)P1_2=~P1_2;
	else if(temp==12)P1_3=~P1_3;
		
		
		
	  //lcd_putchar(0x30+temp);	//0~F
	  while(GetKeyVal()!=0xff);	//等待按键弹起
	}
	delaynms(10);			//消除抖动
	

      };
}

⌨️ 快捷键说明

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