機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
第二十六課 矩陣式鍵盤接口技術(shù)及編程
第二十六課 矩陣式鍵盤接口技術(shù)及編程
 更新時間:2008-7-27 16:14:08  點擊數(shù):2
【字體: 字體顏色
1、矩陣式鍵盤的結(jié)構(gòu)與工作原理
  
在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。

  矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及編程方法如下所述。
  2、矩陣式鍵盤的按鍵識別方法
  
確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。
  行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。
  1、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。
  2、判斷閉合鍵所在的位置 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。
  下面給出一個具體的例子:
  圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源+5V,并把列線P1.0-P1.3設(shè)置為輸入線,行線P1.4-P.17設(shè)置為輸出線。4根行線和4根列線形成16個相交點。
  1、檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。
  2、去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。
  3、若有鍵被按下,應(yīng)識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:
   P1.7 1 1 1 0
   P1.6 1 1 0 1
   P1.5 1 0 1 1
   P1.4 0 1 1 1
  在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值
  4、為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。

 
  鍵盤掃描程序:
  從以上分析得到鍵盤掃描程序的流程圖如圖2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
  鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復(fù)雜的,它往往占到一個應(yīng)用程序的大部份代碼,可見其重要性,但說到,這種復(fù)雜并不來自于單片機的本身,而是來自于操作者的習(xí)慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當?shù)乃惴ū硎境鰜,最后再去寫代碼,這樣,才能快速有效地寫好代碼。
  到本課為止,本站教程暫告一個段落!感謝大家的關(guān)心和支持!
  • 上一篇: 實戰(zhàn)二:唱歌
  • 下一篇: 第二十五課 鍵盤接口與編程
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1