矩陣鍵盤是讀取按鈕陣列的有效方式。其中的一些例子包括電話上的撥號盤、銷售點(信用卡支付)機器上的小鍵盤、計算機鍵盤,甚至電鋼琴上的鍵盤。
讀取大量按鈕輸入的一種方法是將每個按鈕連接到其自己的微控制器輸入引腳。對于4x4鍵盤,這將需要16個GPIOs(通用輸入/輸出)引腳。
然而,通過將按鈕連接成矩陣,同樣數量的按鈕可以僅用8個GPIOs讀取。
這減少了所需的微控制器引腳數量,以及相關布線數量PCB走線數量。
矩陣鍵盤以行和列的網格布線(盡管它們實際上不必以那個方向布置,例如在電子鋼琴鍵盤的例子中)。在微控制器上,行或列引腳被永久設置為輸入(在本文中,我們將堅持使用行連接實現此目的),而另一組引腳(在本文中,我們將堅持使用列連接實現此目的)在輸出(驅動為低電平)和浮動(實際上是開漏輸出)之間切換。
行輸入引腳上需要上拉電阻,可以在微控制器外部添加,也可以在微控制器內部激活(如果微控制器包含此功能)。一些微控制器具有開漏輸出引腳(用于列),或者引腳可以簡單地設置為輸入,以便使它們浮動。
如果您不熟悉上拉電阻、浮動和/或開漏等術語,這里有一些簡單的解釋:
一些定義
浮動輸入是指沒有被主動驅動到任何特定電平的輸入,實際上可以是任何電平(例如,基于環境中的靜電)。我們都使用過自動關閉的門,比如公共設施中常見的門——除非你主動把門打開,否則會有一種機制將它再次關閉。如果沒有自動關閉機制(現在想象門沒有閂鎖機制),門會被風吹動或被進出的人移動,它不會默認到任何特定的位置。
上拉(或下拉)電阻類似于這些門上的自動關閉機制,它在不被主動驅動時將輸入保持在特定電平。上拉(或下拉)電阻可視為一個彈簧,當它未被主動驅動時,將輸入拉至特定電平,您可能會注意到電阻符號實際上看起來像一個小彈簧:
開漏輸出只能被驅動為低電平,而不能被驅動為高電平;輸出為低電平或浮動。實質上,輸出只是簡單地連接到晶體管的漏極引腳(因此稱為開漏)。
通過在微控制器引腳作為輸入(浮動、無上拉或下拉電阻)和被驅動為低電平的輸出之間切換,可以實現類似的效果。
讀取矩陣鍵盤
為了讀取矩陣中的任何特定按鈕,我們將相應的列引腳驅動為低,然后讀取相應的行引腳;如果row引腳讀數為低,則按鈕被按下,如果讀數為高,則按鈕不被按下。
這通常是在快速順序掃描操作中完成的,以檢查矩陣中的每個按鈕,依次驅動每個列引腳為低,同時讀取其間的每個行引腳。同時按鍵不會給這種方法帶來任何問題,并且仍然可以單獨讀取每個按鍵。
去抖動
機械開關還會出現反彈現象,即開關的觸點在接觸時會發生物理反彈,從而導致開關在新狀態下穩定之前出現幾次快速電壓轉換:
如果微控制器非常頻繁地讀取輸入,那么它可以將彈跳記錄為按鈕按壓的次數(而不是用戶期望的僅僅一次按壓);對此最簡單的解決方案是在按鈕的每個后續讀取之間簡單地留下一些延遲,這將給予按鈕足夠的時間在讀取之間轉換(通常10-50毫秒就足夠了)。這類技術被稱為開關去抖。
審核編輯:黃飛
-
微控制器
+關注
關注
48文章
7552瀏覽量
151423 -
矩陣鍵盤
+關注
關注
7文章
206瀏覽量
31471 -
GPIO
+關注
關注
16文章
1204瀏覽量
52098 -
高電平
+關注
關注
6文章
149瀏覽量
21385 -
PCB
+關注
關注
1文章
1803瀏覽量
13204
發布評論請先 登錄
相關推薦
評論