久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

感覺比較好的矩陣鍵盤掃描程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年11月11日   【字體:

   這個程序是我在寫一個計算器的程序的時候想出來的,總感覺常用的鍵盤掃描程序用起來很麻煩,總是要一行一行的進行掃描,看起來也很繁瑣,于是自己想了一個矩陣鍵盤的掃描程序,原理很簡單的!

    這個程序的基本思路是兩條相交直線只有一個交點的原理,說白了就是先檢測行,再檢測列,或者倒過來也可以。
 
    這個鍵盤掃描子程序是一個有返回值的無參函數,需要之前計算好一個數組就OK了!
 

 
    下面是子函數的實現,我在這里只用一個3*4的矩陣鍵盤為例,原理都是一樣的!
=================================================================
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值就是,相應位置的按鍵了*/
}

=========================================================
程序到這里結束了,如果有什么建議或者不明白的地方可以給我留言^_^!
關閉窗口

相關文章

主站蜘蛛池模板: 成人亚洲网站 | 久久久久久久久久久一区二区 | 日本视频在线播放 | 久久久久久免费毛片精品 | 天天综合网天天综合色 | 亚洲一区二区三区高清 | 一区二区三区在线观看免费视频 | 日本不卡免费新一二三区 | 99久久精品国产麻豆演员表 | h视频在线免费看 | 久久福利电影 | 玖玖视频免费 | 国产不卡在线 | 欧美色专区| 在线色网| 国产精品久久久久一区二区三区 | 乱码av午夜噜噜噜噜动漫 | 毛片一级电影 | 日本超碰 | 亚洲福利在线观看 | 欧美一区二不卡视频 | 亚洲国产精品久久久 | 欧美日韩精品久久久免费观看 | 欧美日韩中文国产一区发布 | 久久久久久久久久久一区二区 | 久久久女女女女999久久 | 国产精品久久久久不卡 | 91精品久久久久久久久久小网站 | 精品视频在线免费观看 | 亚洲精色 | 国产精品久久久久久久 | 国产精品影视在线观看 | 欧美jizzhd精品欧美巨大免费 | 蜜桃传媒av | 一区在线视频 | 精品欧美乱码久久久久久1区2区 | 成人不卡视频 | h视频免费观看 | 成人一区二区在线 | 97精品超碰一区二区三区 | 国产精品一二三区 |