鍵盤(pán)一般由若干個(gè)按鍵組合成開(kāi)關(guān)矩陣,按照其接線(xiàn)方式的不同可分為兩種,一種是獨立式接法,一種是矩陣式接法。
獨立式按鍵是指直接用I/O口線(xiàn)構成的單個(gè)按鍵電路。由于每個(gè)鍵都單獨占用一根線(xiàn),所以每根I/O口線(xiàn)上按鍵的工作狀態(tài)不會(huì )影響其他I/O口線(xiàn)的工作狀態(tài)。獨立式按鍵可直接由單片機的I/O口接入,也可由擴展I/O口接入。系統中若按鍵數量較少,而I/O線(xiàn)較多,可采用獨立式連接方式,硬件、軟件均簡(jiǎn)單,容易實(shí)現,因此被廣泛應用于單片機系統中。獨立式鍵盤(pán)是由若干個(gè)機械觸點(diǎn)開(kāi)關(guān)構成的,將其與單片機的I/O口線(xiàn)連起來(lái),通過(guò)讀I/O口的電平狀態(tài)即可識別出相應的按鍵是否被按下。如圖8-1所示為獨立式按鍵的電路圖。
圖8-1 獨立式按鍵的電路圖
如果按鍵不被按下,其端口就為高電平,如果相應的按鍵被按下,則端口變?yōu)榈碗娖?,在這種鍵盤(pán)的連接方法中,通常采用下拉電平接法,即各按鍵開(kāi)關(guān)一端接低電平,另一端接單片機I/O口線(xiàn),這是為了保證在按鍵斷開(kāi)時(shí),各I/O口線(xiàn)有確定的高電平。通常用來(lái)做鍵盤(pán)的按鍵有觸點(diǎn)式和非觸點(diǎn)式兩種,單片機中應用的一般是由機械觸點(diǎn)構成的觸點(diǎn)式微動(dòng)開(kāi)關(guān),這種開(kāi)關(guān)具有結構簡(jiǎn)單、使用可靠的優(yōu)點(diǎn),但當按下按鍵或釋放按鍵時(shí)有一個(gè)特點(diǎn),就是會(huì )產(chǎn)生抖動(dòng),這種抖動(dòng)人是感覺(jué)不到的,但單片機完全可以感應到,因為單片機處理的速度是在微秒級的,而機械抖動(dòng)的時(shí)間至少是毫秒級,對單片機而言這是一個(gè)很漫長(cháng)的過(guò)程。
所謂矩陣式鍵盤(pán),即當鍵盤(pán)中按鍵數量較多時(shí),為了減少I(mǎi)/O口線(xiàn)的占用,通常將按鍵排列成矩陣形式,如圖8-2所示,在矩陣式鍵盤(pán)中,每條水平線(xiàn)和垂直線(xiàn)在交叉處不直接連通,而是通過(guò)一個(gè)按鍵連接,這樣做的好處是一個(gè)并行口可以構成4×4=16個(gè)按鍵,比直接將端口線(xiàn)用于鍵盤(pán)多出了一倍的按鍵,而且線(xiàn)數越多,區別越明顯,例如,再多加一條線(xiàn)就可以構成20鍵的鍵盤(pán),而直接用端口線(xiàn)則只能多出一個(gè)鍵(9鍵),由此可見(jiàn),在需要的按鍵數量比較多時(shí),采用矩陣法連接鍵盤(pán)是非常合理的。
圖8-2 矩陣式鍵盤(pán)結構
矩陣式結構的鍵盤(pán)比獨立式鍵盤(pán)復雜一些,識別也要復雜一些,圖8-2中列線(xiàn)通過(guò)電阻接電源,并將行線(xiàn)所接的單片機4個(gè)I/O口作為輸出端,而列線(xiàn)所接的I/O口則作為輸入端。這樣,當按鍵沒(méi)有被按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下,行線(xiàn)輸出是低電平,一旦有鍵按下,則輸入線(xiàn)就會(huì )被拉低,這樣通過(guò)讀入輸入線(xiàn)的狀態(tài)就可得知是否有鍵按下,具體的識別及編程方法如下所述。
確定矩陣式鍵盤(pán)上任何一個(gè)鍵被按下通常采用行掃描法或者行反轉法,行掃描法又稱(chēng)為逐行或列掃描查詢(xún)法,是一種最常用的多按鍵識別方法,行反轉法不是經(jīng)常使用,但是在某些特殊場(chǎng)合下也比較適合,在這里僅以行掃描法為例介紹矩陣式鍵盤(pán)的工作原理,行反轉法不作詳細介紹,感興趣的讀者請自行查閱相關(guān)資料。行掃描法的具體任務(wù)如下:
(1)判斷鍵盤(pán)中有無(wú)鍵按下
如圖8-2所示,將全部行線(xiàn)X0~X3置低電平,然后檢測列線(xiàn)Y0~Y3的狀態(tài),只要有一列的電平為低,則表示鍵盤(pán)中有鍵被按下,而且閉合的鍵位于低電平線(xiàn)與4根行線(xiàn)相交叉的4個(gè)按鍵之中,若所有列線(xiàn)均為高電平,則表示鍵盤(pán)中無(wú)鍵按下。
(2)判斷閉合鍵所在的位置
在確認有鍵按下后,即可進(jìn)入確定具體閉合鍵的過(guò)程,其方法是依次將行線(xiàn)置為低電平(即在置某根行線(xiàn)為低電平時(shí),其他線(xiàn)為高電平),當確定某根行線(xiàn)為低電平后,再逐行檢測各列線(xiàn)的電平狀態(tài),若某列為低,則該列線(xiàn)與置為低電平的行線(xiàn)交叉處的按鍵就是閉合的按鍵。
聯(lián)系客服