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