感觉比较好的矩阵键盘扫描程序

时间:2012-08-15来源:网络

=================================================================
uchar code key_table[]=
{
0x77,
0x7b,
0x7d,
0xb7,
0xbb,
0xbd,
0xd7,
0xdb,
0xdd,
0xe7,
0xeb,
0xed
};
/*上面的数组要自己事先计算好,只要把行和列的值连接在一起就可以得到相应按键对应的值了*/
unsigned char key_scan(void )
{
unsigned char i, key_code;/*变量的声明*/
key_port = 0x0f;/*这里的key_port是在前面宏定义的一个GPIO口,
先将行(或者列)置位*/ 
if(key_port != 0x0f)/*如果有按键按下则GPIO的初值就会变化,
就会执行下面的语句*/
{
delay(5);/*这里是的延时实现的是消抖,这里就不作介绍了*/
if(key_port != 0x0f)/*确定真的有按键按下*/
{
key_code = key_port;/*把行(或者列)的值赋给key_code*/
key_port = 0xf0;/*再把列(或者行置位)*/
key_code |= key_port;/*把行和列的值组合起来并赋值给key_code*/
for(i = 0; i 12; i++)/*因为每一个按键按下对应的key_code只有一个,
所以根据矩阵键盘的按键个数用相应的FOR循环就可以确定到底是哪一个按键被按下*/
{
if(key_table[i] == key_code)
{
key = i+1;
break;
}
}
}
}
else key = 0;
return key;/*返回的KEY值就是,相应位置的按键了*/
}
 		
1 2

关键词: 矩阵键盘 扫描程序 FOR循环

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版