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

📄 4x4keyscan.c

📁 本程序是一个十分简短的51单片机4x4键盘扫描程序
💻 C
字号:
//####################################################################################
//######	name       || writer ||     time   ||  place   ||#########################
//######-----------------------------------------------------#########################
//######4x4键盘扫描程序|| freela ||	 2008/10/14|| 暨南大学 ||#########################
//####################################################################################

#include <at89x52.h>

void delay(long int second);
/*******各按键对应键值*****************

   1:0xE7   2:0xD7    3:0xB7   4:0x77   
   5:0xEB   6:0xDB	  7:0xBB   8:0x7B   
   9:0xED   0:0xDD    A:0xBD   B:0x7D
   C:0xEE   D:0xDE    E:0xBE   F:0x7E

****************************************/
unsigned char key_scan(void)    //键盘扫描程序
{
  unsigned char key_value; //键盘值
  unsigned char real_value;//实际值
  unsigned char temp;
  
  key_value=0xff;
  
  P1=0xF0;
  delay(10);//10ms延时
  
  if(P1!=0xF0)
   
	 {
        temp=P1;
		
        P1=temp|0x0F;

		delay(10);

		key_value=P1;

  	     //	delay(10);
							                        
  	   }
 
 //return key_value;	
   switch(key_value)
   {
	 case 0xDD: 	 //0						 
			  real_value=0;
			  break;

	 case 0xE7:   //1
			  real_value=1;	        
			  break;

	 case 0xD7:   //2
			  real_value=2;
			  break;
				
	 case 0xB7:   //3
			  real_value=3;
			  break;

	 case 0x77:   //4
			  real_value=4;
			  break;			 

	 case 0xEB:   //5
			  real_value=5;
			  break;
			
	 case 0xDB:   //6
			  real_value=6;
			  break;

	 case 0xBB:   //7
			   real_value=7;
			   break;

	 case 0x7B:   //8
			   real_value=8;
			   break;

     case 0xED:   //9
			   real_value=9;
			   break;
	 
	 case 0xBD:  //A
	           real_value=10;
			   break;
	 
	 case 0x7D:  //B
	           real_value=11;
			   break;
	 
	 case 0xEE:  //C
	           real_value=12;
			   break;		   		   			
	 
	 case 0xDE:  //D
	           real_value=13;
			   break;
	 
	 case 0xBE:  //E
	           real_value=14;
			   break;
	 
	 case 0x7E:  //F
			   real_value=15;
			   break;

	 default: break;
   }
return real_value;

  }

void delay(long int second)
{
   unsigned char us,usn;		while(second!=0)			{ usn = 4;				while(usn!=0)					{						us=0xf0;						while (us!=0){us--;};						usn--;					}				second--;			}


}

⌨️ 快捷键说明

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