單片機的鍵盤(pán)接口
一、一維直讀方式
每個(gè)獨立的按鍵接到單片機的一根I/O端口引線(xiàn)上,如圖1。直接讀入I/O端口(MOV A,P1)便可判斷出所按下的鍵(有鍵按下對應的P1.X=0,否則為1)。
這種方式的硬件簡(jiǎn)單,但占用的I/O引線(xiàn)較多,N位I/O引線(xiàn)只能構成N個(gè)鍵的鍵盤(pán),適用于按鍵較少的系統。
二、硬件編碼方式
將第一種方式的鍵信號先送人編碼器,再由單片機的I/O引線(xiàn)讀入,如圖2。這種方式克服了一維直讀方式占用接口多的缺點(diǎn),若由N位I/O引線(xiàn),使用相應的編碼器,理論上最多可構成2N個(gè)鍵的鍵盤(pán),但需要增加硬件編碼電路。
由N條I/O線(xiàn)組成行,M條I/O線(xiàn)組成列,行列引線(xiàn)的交點(diǎn)上設置一個(gè)按鍵,如圖3。行為輸入端口,列為輸出端口。讀鍵狀態(tài)采用掃描方式,先判斷是否有鍵按下:列線(xiàn)輸出全“0”,讀入列信號,若全為“1”則無(wú)鍵按下,否則有鍵按下。再判斷按下的為哪個(gè)鍵:列輸出線(xiàn)逐位輸出“0”,讀入行輸入端口,從而判斷出按下的鍵所在的行與列,由此計算鍵值。這種方式占用的I/O引線(xiàn)較少,若N位I/O形成方陣,則最多可構成N2/4個(gè)鍵的鍵盤(pán),而且不需增加硬件電路,只是軟件相對復雜一些。這是一種最常用的鍵盤(pán)接口方式。
四、二維直讀方式
鍵盤(pán)排布依舊采用行列式方式,每個(gè)鍵有兩個(gè)觸點(diǎn),如圖4。有鍵按下,該鍵對應的行線(xiàn)與列線(xiàn)同時(shí)變?yōu)?ldquo;0”,否則為“1”,因此鍵的狀態(tài)可以通過(guò)直接讀人I/O端口據其兩位來(lái)反映。這種方式具有獨立式和行列式方式的優(yōu)點(diǎn),但缺點(diǎn)是要求按鍵含有兩個(gè)觸點(diǎn)。該方式同行列式方式一樣,若N位I/O形成方陣,則最多可構成N2/4個(gè)鍵的鍵盤(pán)。
在這種方式中,N位I/O線(xiàn)既作為輸入行線(xiàn)又作為輸出列線(xiàn),輸入與輸出交互使用,在行列每一個(gè)獨立的交點(diǎn)上設置一個(gè)按鍵,如圖5。N位I/O引線(xiàn),最多可構成N(N-1)/2個(gè)鍵的鍵盤(pán),比行列式方式占用的I/O引線(xiàn)少,但這種方式要求I/O線(xiàn)必須是可位控的雙向或準雙向I/O口。如8031的P1口,8155的PC口。鍵盤(pán)讀鍵方式與行列式方式相似,I/O端口逐位輸出“0”(其他各位送“1”),再讀入該端口,依次查 詢(xún)除送出低電平以外的其他各位。為低則有鍵按下。從讀鍵方式我們可以看到:該方式鍵值有重碼,例如:第i行、第j列有鍵按下,在此方式中第i行同時(shí)為第i列,第j行同時(shí)為第i列,也可認為按下的鍵是第j行,第i列的從而形成重碼。
六、雙交互方式
該方式與交互方式相似,但在交互方式中鍵值有重碼,如圖6。第i行、第j列與第i行、第i列的鍵不獨立,為此在I/O引線(xiàn)作列線(xiàn)時(shí)加入二極管隔離,這樣使左下角和右下角交叉點(diǎn)不再重復,除對角線(xiàn)上外,每個(gè)交點(diǎn)上都可設一個(gè)按鍵,從而使鍵盤(pán)的容量比交互方式增加了一倍,即:N位I/O引線(xiàn),最多可構成N(N-1)容量的鍵盤(pán)。鍵掃描程序及鍵值的計算與交互方式相同。
評論