新聞中心

單片機的鍵盤接口

作者: 時間:2017-06-12 來源:網(wǎng)絡(luò) 收藏
在開發(fā)單片機|0">的應(yīng)用系統(tǒng)中,是最常用的人機接口。鍵盤按照是否進行硬件編碼可分為編碼鍵盤與非編碼鍵盤,PC機上的鍵盤是典型的編碼鍵盤,而應(yīng)用系統(tǒng)中的鍵盤一般采用非編碼鍵盤便可滿足需要。所謂非編碼鍵盤實際上就是一組開關(guān),鍵按下,開關(guān)接通。是否有鍵按下,按下的是哪個鍵由對I/O端口的掃描完成(而編碼鍵盤會自動提供所按鍵的編碼),這時,鍵盤的排布方式不同形成了不同的方式。

一、一維直讀方式

每個獨立的按鍵接到單片機的一根I/O端口引線上,如圖1。直接讀入I/O端口(MOV A,P1)便可判斷出所按下的鍵(有鍵按下對應(yīng)的P1.X=0,否則為1)。

這種方式的硬件簡單,但占用的較多,N位只能構(gòu)成N個鍵的鍵盤,適用于按鍵較少的系統(tǒng)。

二、硬件編碼方式

將第一種方式的鍵信號先送人編碼器,再由單片機的讀入,如圖2。這種方式克服了一維直讀方式占用接口多的缺點,若由N位I/O引線,使用相應(yīng)的編碼器,理論上最多可構(gòu)成2N個鍵的鍵盤,但需要增加硬件編碼電路。

本文引用地址:http://www.butianyuan.cn/article/201706/353718.htm三、行列式方式

由N條I/O線組成行,M條I/O線組成列,行列引線的交點上設(shè)置一個按鍵,如圖3。行為輸入端口,列為輸出端口。讀鍵狀態(tài)采用掃描方式,先判斷是否有鍵按下:列線輸出全“0”,讀入列信號,若全為“1”則無鍵按下,否則有鍵按下。再判斷按下的為哪個鍵:列輸出線逐位輸出“0”,讀入行輸入端口,從而判斷出按下的鍵所在的行與列,由此計算鍵值。這種方式占用的I/O引線較少,若N位I/O形成方陣,則最多可構(gòu)成N2/4個鍵的鍵盤,而且不需增加硬件電路,只是軟件相對復(fù)雜一些。這是一種最常用的方式。

四、二維直讀方式

鍵盤排布依舊采用行列式方式,每個鍵有兩個觸點,如圖4。有鍵按下,該鍵對應(yīng)的行線與列線同時變?yōu)?ldquo;0”,否則為“1”,因此鍵的狀態(tài)可以通過直接讀人I/O端口據(jù)其兩位來反映。這種方式具有獨立式和行列式方式的優(yōu)點,但缺點是要求按鍵含有兩個觸點。該方式同行列式方式一樣,若N位I/O形成方陣,則最多可構(gòu)成N2/4個鍵的鍵盤。

五、交互方式

在這種方式中,N位I/O線既作為輸入行線又作為輸出列線,輸入與輸出交互使用,在行列每一個獨立的交點上設(shè)置一個按鍵,如圖5。N位I/O引線,最多可構(gòu)成N(N-1)/2個鍵的鍵盤,比行列式方式占用的I/O引線少,但這種方式要求I/O線必須是可位控的雙向或準(zhǔn)雙向I/O口。如8031的P1口,8155的PC口。鍵盤讀鍵方式與行列式方式相似,I/O端口逐位輸出“0”(其他各位送“1”),再讀入該端口,依次查 詢除送出低電平以外的其他各位。為低則有鍵按下。從讀鍵方式我們可以看到:該方式鍵值有重碼,例如:第i行、第j列有鍵按下,在此方式中第i行同時為第i列,第j行同時為第i列,也可認(rèn)為按下的鍵是第j行,第i列的從而形成重碼。

六、雙交互方式

該方式與交互方式相似,但在交互方式中鍵值有重碼,如圖6。第i行、第j列與第i行、第i列的鍵不獨立,為此在I/O引線作列線時加入二極管隔離,這樣使左下角和右下角交叉點不再重復(fù),除對角線上外,每個交點上都可設(shè)一個按鍵,從而使鍵盤的容量比交互方式增加了一倍,即:N位I/O引線,最多可構(gòu)成N(N-1)容量的鍵盤。鍵掃描程序及鍵值的計算與交互方式相同。

以上各種鍵盤接口,均使用單片機本身的并行I/O端口加以說明。若單片機I/O端口不夠使用時,一般可擴展并行I/O芯片,如:8255,8155等,軟件編程與鍵值的求法可把握上述基本原理自行設(shè)計。另外,也可選用專用的鍵盤接口芯片進行鍵盤接口的設(shè)計,如:8279。但上述幾種方式是較基本,簡單亦是較常用的,可根據(jù)具體情況來選用設(shè)計自己的鍵盤接口。



關(guān)鍵詞: 鍵盤接口 I/O引線 單片機

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉