51單片機(jī)教程:矩陣式鍵盤(pán)接口技術(shù)及程序設(shè)計(jì)
在單片機(jī)系統(tǒng)中鍵盤(pán)中按鈕數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,常常將按鈕排列成矩陣形式,如圖1所示。在矩陣式鍵盤(pán)中,每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鈕加以連接。這樣,一個(gè)端口(如P1口)就能組成4*4=16個(gè)按鈕,比之直接將端口線用于鍵盤(pán)多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就能組成20鍵的鍵盤(pán),而直接用端口線則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。
本文引用地址:http://www.ex-cimer.com/article/171064.htm
單片機(jī)矩陣式鍵盤(pán)接口技術(shù)及編程接口圖>
矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過(guò)電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鈕沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過(guò)讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識(shí)別及編程辦法如下所述。
矩陣式鍵盤(pán)的按鈕識(shí)別辦法
確定矩陣式鍵盤(pán)上何鍵被按下介紹一種“行掃描法”。
行掃描法 行掃描法又稱(chēng)為逐行(或列)掃描查詢(xún)法,是一種最常用的按鈕識(shí)別辦法,如上圖所示鍵盤(pán),介紹過(guò)程如下。
判斷鍵盤(pán)中有無(wú)鍵按下 將全部行線Y0-Y3置低電平,然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鈕之中。若所有列線均為高電平,則鍵盤(pán)中無(wú)鍵按下。
判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程。其辦法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鈕就是閉合的按鈕。
下面給出一個(gè)具體的例程:
圖仍如上所示。8031單片機(jī)的P1口用作鍵盤(pán)I/O口,鍵盤(pán)的列線接到P1口的低4位,鍵盤(pán)的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個(gè)上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。
檢測(cè)當(dāng)前是否有鍵被按下。檢測(cè)的辦法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無(wú)鍵閉合,不然有鍵閉合。
DIY機(jī)械鍵盤(pán)相關(guān)社區(qū):機(jī)械鍵盤(pán)DIY
評(píng)論