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

📄 keyboardcode.c

📁 单片机控制键盘程序
💻 C
字号:
/////////////////////////////////////////////////////////////////////////
//////--------------------键盘程序部分--------------////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////键盘扫描////////////////////////////////
Uchar keyscan(void)                    ////////////////////使用行扫描法
{
 char n;
 Uchar key;
 DDRA=0x00;//设置I/O口为输入
 DDRB=0xfc;//输出
 PORTB=0x38;
 PORTA=0xF0;
 n=PINA&0xf0;
 if(n!=0xf0)
 {
  delay();
  PORTB=0x38; 
  PORTA=0xF0;
  n=PINA&0xf0;
  if(n!=0xf0)
  {
   switch(n)
   {
    case 0xe0:key=4;break;
    case 0xd0:key=3;break;
    case 0xb0:key=2;break;
    case 0x70:key=1;break;
	}
  }
 }

 PORTB=0x34;
 PORTA=0xF0;
 n=PINA&0xf0;
 if(n!=0xf0)
 {
  delay(); 
  PORTB=0x34; 
  PORTA=0xF0;
 
  n=PINA&0xf0;
  if(n!=0xf0)
 {
   switch(n)
   {
    case 0xe0:key=8;break;
    case 0xd0:key=7;break;
    case 0xb0:key=6;break;
    case 0x70:key=5;break;
	
    }
   }
 }
  PORTB=0x2C;
  PORTA=0xF0;
  n=PINA&0xf0;
 if(n!=0xf0)
 {
  delay();
   PORTB=0x2C; 
  PORTA=0xF0;
 
  n=PINA&0xf0;
  if(n!=0xf0){
   switch(n)
   {
    case 0xe0:key=11;break;
    case 0xd0:key=10;break;
    case 0xb0:key=0;break;
    case 0x70:key=9;break;
	
    }
   }
 }

 PORTB=0x1C;
 PORTA=0xF0;
 n=PINA&0xf0;
 if(n!=0xf0)
 {
 delay();
 PORTB=0x1C; 
  PORTA=0xF0;
  
  n=PINA&0xf0;
    if(n!=0xf0)
 {
    switch(n)
	{
    case 0xe0:key=15;break;
    case 0xd0:key=14;break;
    case 0xb0:key=13;break;
    case 0x70:key=12;break;
	
    }
   }
 }
 if((key!=0x00)&&(key!=0x01)&&(key!=0x02)&&(key!=0x03)&&(key!=0x04)&&(key!=0x05)
 &&(key!=0x06)&&(key!=0x07)&&(key!=0x08)&&(key!=0x09)&&(key!=0x0a)&&(key!=0x0b)
 &&(key!=0x0c)&&(key!=0x0d)&&(key!=0x0e)&&(key!=0x0f))
 key=0x10;
 return(key);
} 
//////////////////////////////////确认键查询//////////////////////////////////
 Uchar ScanKey_okSel(void)                   //only scan the kye of OK
{   Uchar n;
	Uchar i, temp;
	DDRA=0x00;//设置I/O口为输入
    DDRB=0xfc;//输出
    PORTB=0x1C;
    PORTA=0xF0;
    n=PINA&0xf0;
    if(n!=0xf0)
    {
        delay();
        PORTB=0x1C; 
        PORTA=0xF0;
        n=PINA&0xf0;
        if(n!=0xf0)
	       {if(n==0xe0)
	           {
			   return 1;
			   }
	          PORTB=0x1C;
			  PORTA=0xF0; 
	       }
	}  
	else return 0;	
                             //0-not selected  1-selected
}

⌨️ 快捷键说明

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