矩陣鍵盤是讀取按鈕陣列的有效方式。其中的一些例子包括電話上的撥號盤、銷售點(信用卡支付)機(jī)器上的小鍵盤、計算機(jī)鍵盤,甚至電鋼琴上的鍵盤。
讀取大量按鈕輸入的一種方法是將每個按鈕連接到其自己的微控制器輸入引腳。對于4x4鍵盤,這將需要16個GPIOs(通用輸入/輸出)引腳。

然而,通過將按鈕連接成矩陣,同樣數(shù)量的按鈕可以僅用8個GPIOs讀取。

這減少了所需的微控制器引腳數(shù)量,以及相關(guān)布線數(shù)量PCB走線數(shù)量。
矩陣鍵盤以行和列的網(wǎng)格布線(盡管它們實際上不必以那個方向布置,例如在電子鋼琴鍵盤的例子中)。在微控制器上,行或列引腳被永久設(shè)置為輸入(在本文中,我們將堅持使用行連接實現(xiàn)此目的),而另一組引腳(在本文中,我們將堅持使用列連接實現(xiàn)此目的)在輸出(驅(qū)動為低電平)和浮動(實際上是開漏輸出)之間切換。
行輸入引腳上需要上拉電阻,可以在微控制器外部添加,也可以在微控制器內(nèi)部激活(如果微控制器包含此功能)。一些微控制器具有開漏輸出引腳(用于列),或者引腳可以簡單地設(shè)置為輸入,以便使它們浮動。
如果您不熟悉上拉電阻、浮動和/或開漏等術(shù)語,這里有一些簡單的解釋:
一些定義
浮動輸入是指沒有被主動驅(qū)動到任何特定電平的輸入,實際上可以是任何電平(例如,基于環(huán)境中的靜電)。我們都使用過自動關(guān)閉的門,比如公共設(shè)施中常見的門——除非你主動把門打開,否則會有一種機(jī)制將它再次關(guān)閉。如果沒有自動關(guān)閉機(jī)制(現(xiàn)在想象門沒有閂鎖機(jī)制),門會被風(fēng)吹動或被進(jìn)出的人移動,它不會默認(rèn)到任何特定的位置。
上拉(或下拉)電阻類似于這些門上的自動關(guān)閉機(jī)制,它在不被主動驅(qū)動時將輸入保持在特定電平。上拉(或下拉)電阻可視為一個彈簧,當(dāng)它未被主動驅(qū)動時,將輸入拉至特定電平,您可能會注意到電阻符號實際上看起來像一個小彈簧:

開漏輸出只能被驅(qū)動為低電平,而不能被驅(qū)動為高電平;輸出為低電平或浮動。實質(zhì)上,輸出只是簡單地連接到晶體管的漏極引腳(因此稱為開漏)。

通過在微控制器引腳作為輸入(浮動、無上拉或下拉電阻)和被驅(qū)動為低電平的輸出之間切換,可以實現(xiàn)類似的效果。
讀取矩陣鍵盤
為了讀取矩陣中的任何特定按鈕,我們將相應(yīng)的列引腳驅(qū)動為低,然后讀取相應(yīng)的行引腳;如果row引腳讀數(shù)為低,則按鈕被按下,如果讀數(shù)為高,則按鈕不被按下。


這通常是在快速順序掃描操作中完成的,以檢查矩陣中的每個按鈕,依次驅(qū)動每個列引腳為低,同時讀取其間的每個行引腳。同時按鍵不會給這種方法帶來任何問題,并且仍然可以單獨讀取每個按鍵。
去抖動
機(jī)械開關(guān)還會出現(xiàn)反彈現(xiàn)象,即開關(guān)的觸點在接觸時會發(fā)生物理反彈,從而導(dǎo)致開關(guān)在新狀態(tài)下穩(wěn)定之前出現(xiàn)幾次快速電壓轉(zhuǎn)換:

如果微控制器非常頻繁地讀取輸入,那么它可以將彈跳記錄為按鈕按壓的次數(shù)(而不是用戶期望的僅僅一次按壓);對此最簡單的解決方案是在按鈕的每個后續(xù)讀取之間簡單地留下一些延遲,這將給予按鈕足夠的時間在讀取之間轉(zhuǎn)換(通常10-50毫秒就足夠了)。這類技術(shù)被稱為開關(guān)去抖。

審核編輯:黃飛
-
微控制器
+關(guān)注
關(guān)注
48文章
7947瀏覽量
154854 -
矩陣鍵盤
+關(guān)注
關(guān)注
7文章
207瀏覽量
32101 -
GPIO
+關(guān)注
關(guān)注
16文章
1280瀏覽量
54033 -
高電平
+關(guān)注
關(guān)注
6文章
203瀏覽量
22039 -
PCB
+關(guān)注
關(guān)注
1文章
2092瀏覽量
13204
發(fā)布評論請先 登錄
VNS網(wǎng)絡(luò)控制矩陣鍵盤
矩陣鍵盤有什么用_矩陣鍵盤有何用途
矩陣式鍵盤使用方法

矩陣鍵盤的按鍵識別方法_矩陣鍵盤掃描程序
stm32矩陣鍵盤學(xué)習(xí)筆記

評論