微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 4X4键盘扫描程序

4X4键盘扫描程序

时间:11-10 来源:互联网 点击:
4X4键盘扫描程序,采用查表方式,适用于AVR单片机

此处为4X4键盘软件部分,硬件部分avr.com/news/2008-01/1945.htm&rn=252847&v=1&ref=http%3A//www.picavr.com/news/c37/defaultp7.htm&province=%u5E7F%u4E1C&city=%u5E7F%u5DDE" qs_is_on_div="" rel="nofollow" target="_blank">设计请参照:

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

/*键盘扫描函数读取当前键盘的状态有按键按下返回相应按键值无按键按下返回"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;}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top