您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机4X4键盘扫描程序 正文
4X4键盘扫描程序

4X4键盘扫描程序

点击数:7285 次   录入时间:03-04 11:41:32   整理:http://www.55dianzi.com   AVR单片机

4X4键盘扫描程序,采用查表方式,适用于AVR 单片机 。

此处为4X4键盘软件部分,硬件部分设计请参照:

此程序对应的键盘电路为:

/*
键盘扫描函数
 读取当前键盘的状态
 有按键按下返回相应按键值
 无按键按下返回"0x00"
*/
unsigned char key_read(void){
 unsigned char i;
 
 DDRA = 0x00;/*获取列地址*/
 PORTA = 0x0F;
 DDRA = 0xF0;
 i = PINA;
 
 DDRA = 0x00;/*获取行地址*/
 PORTA = 0xF0;
 DDRA = 0x0F;
 i |= PINA;
 
 DDRA = 0x00;/*输出复位*/
 PORTA = 0xFF;
 
 switch (i) {/*将按键码转换成键值*/
  case  0x00: return 0x00;
  case  0xEE: return '1';
  case  0xDE: return '2';
  case  0xBE: return '3';
  case  0x7E: return 'A';
  case  0xED: return '4';
  case  0xDD: return '5';
  case  0xBD: return '6';
  case  0x7D: return 'B';
  case  0xEB: return '7';
  case  0xDB: return '8';
  case  0xBB: return '9';
  case  0x7B: return 'C';
  case  0xE7: return '*';
  case  0xD7: return '0';
  case  0xB7: return '#';
  case  0x77: return 'D';
  default : return 0x00;
  }
}
/*
按键获取函数
 获取按键信号,其中包含有状态记录及按键去颤抖。
 有正确按键按下返回相应按键值
 无正确按键按下返回"0x00"
*/
unsigned char get_key(void){
 unsigned char i;
 statIC unsigned char j;/*按键记录*/
 i = key_read();
 if (i == 0x00){/*无有效按键按下*/
  j = 0x00;/*清除按键记录*/
  return 0x00;/*程序退出*/
  }
 if (j == 0x00) {/*为新按键*/
  j = i;/*保存本次采样结果*/
  delay_ms(10);/*去按键颤抖*/
  i = key_read();
  if(i == j) {
   return i;
   }
  }
 return 0x00;
}



本文关键字:程序  键盘  AVR单片机单片机-工控设备 - AVR单片机

《4X4键盘扫描程序》相关文章>>>