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

📄 key.h

📁 这是一个单片机键盘响应程序
💻 H
字号:
int Keyboard(void)
{static uint8_t     ScanCode=0xF7,TempNum=16,LastNum=16,CurrentNum=16,Times=0;
	   switch(ScanCode)   // 扫描信号
	   	{
	   	  case 0xF7:ScanCode=0xFB; break;   //扫描信号:0111→1011
	      case 0xFB:ScanCode=0xFD; break;  // 1011→1101
	      case 0xFD:ScanCode=0xFE; break;  // 1101→1110
	      case 0xFE:ScanCode=0xF7; break;  // 1110→0111
	      default: ScanCode=0xF7;break;
	   	}
	
	   /*在main()函数里需将DDRC设成0x0F,即PC7~PC4为输入,PC3~PC0为输出。
	    下面PORTC=ScanCode意味着,将PC7~PC4设为带上拉功能的输入,
	    而PC3~PC0输出扫描信号。*/
	   PORTC=ScanCode; 
	  	switch(PINC)
		{ 
	/*TempNum记录读到的键值,由于此键值需经进一步处理,
	所以是暂时数值(TempNum)。Times用以记录没有读到有效键值的次数,
	如果次数达到4次(即扫描一轮后没有发现有效键值),
	就表示没有键按下。*/   	  
	      
		  case 0xE7:TempNum=0;Times=0;break;
	      case 0xD7:TempNum=1;Times=0;break; 
		  case 0xB7:TempNum=2;Times=0;break;
		  case 0x77:TempNum=3;Times=0;break;
		  case 0xEB:TempNum=4;Times=0;break;
		  case 0xDB:TempNum=5;Times=0;break;
		  case 0xBB:TempNum=6;Times=0;break;
		  case 0x7B:TempNum=7;Times=0;break;
		  case 0xED:TempNum=8;Times=0;break;
		  case 0xDD:TempNum=9;Times=0;break;
		  case 0xBD:TempNum=10;Times=0;break;
		  case 0x7D:TempNum=11;Times=0;break;
		  case 0xEE:TempNum=12;Times=0;break;
		  case 0xDE:TempNum=13;Times=0;break;
		  case 0xBE:TempNum=14;Times=0;break;
		  case 0x7E:TempNum=15;Times=0;break;
	         default:{
	               Times++;
				    if  (Times==4) 
				      {
					   TempNum=16;
					   Times=0;
				      }
	         		}break;
	  	}
       LastNum=CurrentNum;  
	   CurrentNum=TempNum;
	   if (CurrentNum==LastNum) return(16);
	   else  return(CurrentNum);

}

⌨️ 快捷键说明

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