之前做過很多仿真儀表盒,經(jīng)常遇到盒子上既有大量LED指示燈,又有很多按鍵的情況,主芯片使用的SiliconLabs的一款單片機,管腳資源有限,如何應(yīng)對如此多的指示燈和按鍵呢?當(dāng)時選用了max7219來實現(xiàn)多個LED燈的控制,而按鍵則是通過矩陣掃描實現(xiàn)的。
所謂“矩陣掃描”,可以想象成是把幾路IO橫豎交叉形成網(wǎng)格狀,然后把按鍵放置在網(wǎng)格的交叉點上。這種電路應(yīng)用很廣泛,可以由較少的IO口實現(xiàn)較多的按鍵控制。比如,6根IO按照3行3列排列,就可以實現(xiàn)接入9個按鍵;8根IO按照4行4列排列,就可以實現(xiàn)接入16個按鍵。來看下面這個3*3的矩陣按鍵原理圖:
3*3矩陣按鍵1
注意,中間那四個行、列交叉地方的線是分離的,并沒有短接:
3*3矩陣按鍵2
還要注意的是,我們要給行或列IO加上上拉電阻,以保證它們的默認(rèn)狀態(tài)是高電平。
矩陣按鍵掃描的實現(xiàn)原理是這樣的:把屬于列的IO口設(shè)置為輸入狀態(tài),這時由于上拉電阻的作用,當(dāng)按鍵沒有動作時,程序就會讀到高電平;這時開始按行進(jìn)行掃描,先把行1的IO設(shè)置為輸出狀態(tài),然后設(shè)置輸出為低電平,接著依次讀取列IO口的狀態(tài),如果有按鍵被按下,那么列IO口的讀入電平就變成低電平,這時就可以根據(jù)行和列判斷出動作按鍵的位置了。行1的掃描完成后,把行1的IO置高,然后按照上面步驟依次進(jìn)行行2和行3的掃描,確認(rèn)有動作按鍵的位置就可以了。下面是程序的簡單流程圖(沒有包含去抖等處理):
簡單掃描按鍵流程圖
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660565 -
原理圖
+關(guān)注
關(guān)注
1297文章
6338瀏覽量
233805 -
單片機
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634635 -
仿真
+關(guān)注
關(guān)注
50文章
4070瀏覽量
133552 -
矩陣按鍵
+關(guān)注
關(guān)注
0文章
28瀏覽量
8362
發(fā)布評論請先 登錄
相關(guān)推薦
評論