之前做過很多仿真儀表盒,經常遇到盒子上既有大量LED指示燈,又有很多按鍵的情況,主芯片使用的SiliconLabs的一款單片機,管腳資源有限,如何應對如此多的指示燈和按鍵呢?當時選用了max7219來實現(xiàn)多個LED燈的控制,而按鍵則是通過矩陣掃描實現(xiàn)的。
所謂“矩陣掃描”,可以想象成是把幾路IO橫豎交叉形成網格狀,然后把按鍵放置在網格的交叉點上。這種電路應用很廣泛,可以由較少的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加上上拉電阻,以保證它們的默認狀態(tài)是高電平。
矩陣按鍵掃描的實現(xiàn)原理是這樣的:把屬于列的IO口設置為輸入狀態(tài),這時由于上拉電阻的作用,當按鍵沒有動作時,程序就會讀到高電平;這時開始按行進行掃描,先把行1的IO設置為輸出狀態(tài),然后設置輸出為低電平,接著依次讀取列IO口的狀態(tài),如果有按鍵被按下,那么列IO口的讀入電平就變成低電平,這時就可以根據行和列判斷出動作按鍵的位置了。行1的掃描完成后,把行1的IO置高,然后按照上面步驟依次進行行2和行3的掃描,確認有動作按鍵的位置就可以了。下面是程序的簡單流程圖(沒有包含去抖等處理):
簡單掃描按鍵流程圖
-
led
+關注
關注
242文章
23277瀏覽量
660846 -
原理圖
+關注
關注
1298文章
6343瀏覽量
234026 -
單片機
+關注
關注
6037文章
44558瀏覽量
635217 -
仿真
+關注
關注
50文章
4082瀏覽量
133599 -
矩陣按鍵
+關注
關注
0文章
28瀏覽量
8370
發(fā)布評論請先 登錄
相關推薦
評論