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

然而,通過(guò)將按鈕連接成矩陣,同樣數(shù)量的按鈕可以?xún)H用8個(gè)GPIOs讀取。

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

開(kāi)漏輸出只能被驅(qū)動(dòng)為低電平,而不能被驅(qū)動(dòng)為高電平;輸出為低電平或浮動(dòng)。實(shí)質(zhì)上,輸出只是簡(jiǎn)單地連接到晶體管的漏極引腳(因此稱(chēng)為開(kāi)漏)。

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


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

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

審核編輯:黃飛
-
微控制器
+關(guān)注
關(guān)注
48文章
8222瀏覽量
161095 -
矩陣鍵盤(pán)
+關(guān)注
關(guān)注
7文章
207瀏覽量
32592 -
GPIO
+關(guān)注
關(guān)注
16文章
1309瀏覽量
55568 -
高電平
+關(guān)注
關(guān)注
6文章
224瀏覽量
22630 -
PCB
+關(guān)注
關(guān)注
1文章
2242瀏覽量
13204
發(fā)布評(píng)論請(qǐng)先 登錄
什么是矩陣鍵盤(pán)
什么是矩陣鍵盤(pán)?矩陣鍵盤(pán)掃描原理介紹
VNS網(wǎng)絡(luò)控制矩陣鍵盤(pán)
矩陣鍵盤(pán)有什么用_矩陣鍵盤(pán)有何用途
矩陣式鍵盤(pán)使用方法
矩陣鍵盤(pán)的按鍵識(shí)別方法_矩陣鍵盤(pán)掃描程序
stm32矩陣鍵盤(pán)學(xué)習(xí)筆記

閱讀矩陣鍵盤(pán)的應(yīng)用設(shè)計(jì)原理
評(píng)論