單片機原理與接口技術:第8章 鍵盤接口_第1頁
單片機原理與接口技術:第8章 鍵盤接口_第2頁
單片機原理與接口技術:第8章 鍵盤接口_第3頁
單片機原理與接口技術:第8章 鍵盤接口_第4頁
單片機原理與接口技術:第8章 鍵盤接口_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章數(shù)碼顯示和鍵盤接口8.1數(shù)碼顯示8.2鍵盤接口8.2鍵盤接口鍵盤是計算機不可缺少的輸入設備,用戶可通過鍵盤向單片機系統(tǒng)輸入指令和數(shù)據等,是實現(xiàn)人機對話的樞紐。8.2.1鍵盤的工作原理1.按鍵輸入的特點

鍵盤實質上是一組按鍵開關的組合。通常使用的是機械彈性開關,利用機械觸電的通斷,實現(xiàn)按下時開關導通,釋放時開關斷開的功能。按鍵觸點的一端和單片機的I/O端口引腳連接,另一端與電壓信號相連,觸點的通斷即可引起端口引腳上的電壓變化,單片機通過程序讀入I/O端口引腳電平信號便可判斷按鍵的狀態(tài)。如圖1所示。圖1.按鍵當開關S未被按下時,P1.7輸入為高電平,S閉合后,P1.7輸入為低電平。但由于機械觸點的彈性作用及電壓突跳等原因,在觸點閉合與斷開的瞬間,會出現(xiàn)電壓抖動,如圖2所示波形。圖2.

按鍵閉合和斷開時的抖動

抖動時間長短與開關的機械特性有關,一般為5~10ms。這種抖動對于人來說是感覺不到的,但對計算機來說,則是完全可以感應到的,因為單片機處理的速度是在微秒級。在實際工作中,按鍵有時靈,有時不靈,實際上可能是這個因素引起的,你只按了一次按鍵,可是計算機卻已執(zhí)行了好幾次任務。按鍵的穩(wěn)定閉合期,由操作人員的按鍵動作所決定,一般為十分之幾秒到幾秒不等。2.按鍵抖動的處理措施(去抖動處理)為了能夠使CPU能正確地讀出與按鍵相連的I/O端口的狀態(tài),并對每一次按鍵只作一次鍵輸入處理,就必須去除抖動影響。常用的去抖動方法有兩種:硬件方法和軟件方法。1)濾波消除抖動這種電路是利用RC電路的充放電特性,通過調整RC的值選擇合適的時間常數(shù),將按鍵抖動信號消除。適用于按鍵數(shù)目較少的情況下。2).軟件消抖

在按鍵數(shù)目較多的情況下一般采用軟件延時的方法,即在單片機獲得某I/O端口為低的信息后,不是立即認定按鍵已被按下,而是延時10~20ms時間后再次檢測該端口,如果仍為低,說明按鍵的確按下了,避開了按鍵按下時的抖動時間。并且在檢測到按鍵釋放后(I/O端口為高)再延時10~20ms,消除后沿的抖動,然后再對鍵值處理。

當然,實際應用中,對按鍵的要求也是千差萬別,要根據不同的需要來編制處理程序。8.2.2獨立式鍵盤及其接口程序1.獨立式鍵盤接口獨立式按鍵是指直接用I/O口線構成的單個按鍵電路。每個獨立式按鍵單獨占有一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會影響其他I/O口線上的工作狀態(tài)。最簡單的獨立式鍵盤結構如圖3(a)所示,每個按鍵的輸出連接到單片機的某個端口引腳上,當某個按鍵按下時,對應的輸出為0,斷開時輸出為1.按鍵可以采用循環(huán)或定時查詢的方式進行檢測,也可以采用中斷方式檢測。(a)查詢方式(b).中斷方式圖3.獨立式鍵盤接口電路圖3中(a)為查詢方式的獨立式按鍵電路,通過I/O口連接,將每個按鍵的一端接到單片機的I/O口,另一端接地,這是最簡單的方法。圖中3個按鍵分別與P1.2~P1.0相連。對于這種按鍵程序可以采用不斷查詢的方法,功能就是:檢測是否有鍵閉合,如有鍵閉合,則P1.2~P1.0有一只引腳為低電平,否則全為高電平;然后延時去抖動,判斷鍵號并轉入相應的鍵處理程序。圖中(b)為采用中斷方式的獨立式按鍵電路。各個按鍵都接到一個與門上,當有任何一個按鍵按下時,都會使與門輸出為低電平,從而引起單片機的中斷,它的優(yōu)點在于不用在主程序中反復查詢按鍵,而等到有鍵按下,單片機才去執(zhí)行相應的鍵處理程序。通常按鍵輸入都采用低電平有效,圖中上拉電阻保證了按鍵斷開時,I/O口有確定的高電平。如I/O口內部有上拉電阻時,外電路可以不配置上拉電阻。2.獨立式按鍵的軟件實現(xiàn)我們以查詢方式(a)為例介紹其軟件實現(xiàn)方法,為簡便說明起見,我們暫不考慮軟件去抖動措施,其程序實現(xiàn)清單如下:

START:MOV A,#07H ;置輸入方式

MOVP1,ALOOP:MOVA,P1 ;讀入鍵盤狀態(tài)

ANLA,#07H CJNEA,#07H,L0 ;是否有鍵按下?

SJMPLOOP ;無鍵按下等待L0: …

;延時去抖動(省略),確實有鍵按下

MOVDPTR,#TAB ;送跳轉表首地址

CPLA ;輸入取反

RLA ;乘2,得表偏移量L1: …

;調用延時程序,鍵釋放(省略)

JMP @A+DPTRTAB:AJMP PRO0 ;入口地址表

AJMP PRO1 AJMP PRO2

PRO0:… LJMP START ;0號鍵執(zhí)行完返回

PRO1:…

LJMP START ;1號鍵執(zhí)行完返回

PRO2:… LJMP START ;2號鍵執(zhí)行完返回獨立式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時,浪費較大,此一般適用于按鍵數(shù)量不多的情況。8.2.3行列式鍵盤(也稱矩陣式鍵盤)接口設計1.行列式鍵盤工作原理

在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖4所示行列式鍵盤,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,本來一個端口(如P1口)最多只有8個按鍵,現(xiàn)在就可以構成4×4=16個按鍵,比它直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯。由此可見,在需要的鍵數(shù)比較多時,可采用行列式法來做鍵盤。圖4.行列式鍵盤接口入出行行列式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,圖4所示接口電路由8051的P1口高、低4位構成4×4行列矩陣鍵盤。鍵盤的列線一端通過電阻接正電源,另一端接單片機的輸入口線;行線的一端接單片機的輸出口線,另一端懸空。故P1.7~P1.4作為鍵盤掃描輸入口線;P1.3~P1.0為鍵盤的輸出口線。只有某按鍵被按下時的相應行線和列線才會接通。2.按鍵識別方法(列掃描法)先判定是否有鍵按下,所有的輸出口向列線輸出低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。結合圖4所示,檢測的方法是P1.0~P1.3輸出全“0”,讀取P1.4~P1.7的狀態(tài),若P1.4~P1.7為全“1”,則無鍵閉合,否則有鍵閉合。然后判斷按鍵的位置,如果有鍵按下,被按鍵處的行線和列線被接通,使穿過閉合鍵的那條行線變?yōu)榈碗娖健7椒ㄊ菍︽I盤的列線進行掃描。P1.0~P1.3按下述4種組合依次輸出:P1.31110P1.21101P1.11011P1.00111然后測試行線狀態(tài)中是否有低電平。在每組列輸出時讀取P1.4~P1.7,若全為“1”,則表示這一列沒有鍵閉合,否則有鍵閉合,再查詢具體是哪一行為“0”。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值。根據得到的行值,可以知道該行的行首鍵號,則可求閉合鍵的鍵號:

閉合鍵的鍵號=行首鍵號+列值求得鍵號后,就可以利用查表指令求得閉合鍵的鍵值了,則就轉入相應的處理程序。4×4鍵盤的行首鍵號分別為:00H、04H、08H、12H

列值為00H、01H、02H、03H輸出口線輸入口線按鍵識別程序由判斷有無按鍵按下程序段、按鍵掃描程序段及求鍵值程序段等三部分組成。其流程圖如圖5所示。若無鍵按下,則返回主程序;若有鍵按下,則CPU通過列掃描獲得被按鍵的行首鍵號和列值,并經過查鍵值表得到被按鍵的鍵值,最后返回主程序。在行列式鍵盤中,也要考慮去抖動問題。圖5例:4×8鍵盤,結合數(shù)碼顯示,當按下某個按鍵時,在數(shù)碼管上顯示出該被按鍵的鍵號。其列線控制口地址為:0FFDDH;行線控制口地址:0FFDEH程序如下:ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#60HMOVA,#00HMOV30H,AMOVA,#00HMOV31H,AMOVA,#10HMOV32H,AMOVA,#10HMOV33H,A

MOVA,#10HMOV34H,AMOVA,#10HMOV35H,A;數(shù)據緩沖區(qū)30H-35H中先存放0、0、-、-、-

MOVR0,#30H;無按鍵按下時,數(shù)碼管顯示0、0、-、-、-MOVR1,#01HMOVR2,#06HLOOP:LCALLAJLCALLXSLJMPLOOPAJ:MOVA,#00HMOVDPTR,#0FFDDHMOVX@DPTR,AMOVDPTR,#0FFDEHMOVXA,@DPTRCJNEA,#0FH,KEYSCANSJMPAJOUTKEYSCAN:MOVR5,#0FEHMOVR6,#00HAJKS:MOVA,R5MOVDPTR,#0FFDDHMOVX@DPTR,AMOVDPTR,#0FFDEHMOVXA,@DPTRANLA,#00001111BCJNEA,#OFH,AJCLMOVA,R5RLAMOVR5,AINCR6LJMPAJKSAJCL:CJNEA,#00000001B,AJNEMOVA,#00HADDA,R6LJMPAJNE3AJNE:CJNEA,#00000010B,AJNE1MOVA,#08HADDA,R6LJMPAJNE3AJNE1:CJNEA,#00000100B,AJNE2MOVA,#10HADDA,R6LJMPAJNE3AJNE2:CJNEA,#00001000B,AJNE3MOVA,#18HADDA,R6AJNE3:MOVB,#10DDIVABMOV31H,AMOVA,BMOV30H,ALJMPAJOUTAJOUT:RETXS:MOVDPTR,#TAB;顯示鍵號

MOVA,@R0MOVCA,@A+DPTRMOVDPTR,#0FFDCHMOVX@DPTR,AMOVA,R1MOVDPTR,#0FFDDHMOVX@DPTR,AINCR0

MOVA,R1RLAMOVR1,ALCALLDELAYDJNZR2,XSOUTMOVR0,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論