矩陣鍵盤

矩陣鍵盤

排布類似于矩陣的鍵盤組
矩陣鍵盤是單片機外部設備中所使用的排布類似于矩陣的鍵盤組·。在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常将按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。矩陣鍵盤本質是使用8個io口來進行16個按鍵的控制讀取,可以減小io口的使用,用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每個交叉點上,設置一個按鍵。而這樣的按鍵中按鍵的個數是4*4個。[1]
    中文名:矩陣鍵盤 外文名:Matrix keyboard 所屬品牌: 産品類型: 适用:單片機外部設備中使用 作用:切換中控式HDMI矩陣信号源

識别方法

矩陣式結構的鍵盤顯然比直接法要複雜一些,識别也要複雜一些,列線通過電阻接正電源,并将行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀态就可得知是否有鍵按下了。

<1>确定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。

行掃描法行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識别方法,如上圖所示鍵盤,介紹過程如下。

1、判斷鍵盤中有無鍵按下将全部行線Y0-Y3置低電平,然後檢測列線的狀态。隻要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。

2、判斷閉合鍵所在的位置在确認有鍵按下後,即可進入确定具體閉合鍵的過程。其方法是:依次将行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在确定某根行線位置為低電平後,再逐行檢測各列線的電平狀态。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。

下面給出一個具體的例子:

圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分别接有4個上拉電阻到正電源+5V,并把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。

1、檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀态,若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。

2、去除鍵抖動。當檢測到有鍵按下後,延時一段時間再做下一步的檢測判斷。

3、若有鍵被按下,應識别出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。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”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然後可采用計算法或查表法将閉合鍵的行值和列值轉換成所定義的鍵值

4、為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動。

鍵盤掃描程序:

從以上分析得到鍵盤掃描程序的流程圖所示。程序如下

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

<2>确定矩陣式鍵盤上何鍵被按下介紹一種“高低電平翻轉法”。

首先讓P1口高四位為1,低四位為0,。若有按鍵按下,則高四位中會有一個1翻轉為0,低四位不會變,此時即可确定被按下的鍵的行位置。

然後讓P1口高四位為0,低四位為1,。若有按鍵按下,則低四位中會有一個1翻轉為0,高四位不會變,此時即可确定被按下的鍵的列位置。

最後将上述兩者進行或運算即可确定被按下的鍵的位置。

鍵盤處理程序就作這麼一個簡單的介紹,實際上,鍵盤、顯示處理是很複雜的,它往往占到一個應用程序的大部份代碼,可見其重要性,但說到,這種複雜并不來自于單片機的本身,而是來自于操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然後用适當的算法表示出來,最後再去寫代碼,這樣,才能快速有效地寫好代碼。

矩陣鍵盤實驗

實驗目的

1. 了解 4*4 的工作原理。

2. 掌握利用行列掃描法讀取按鍵信息及軟件消抖的方法。

3. 熟悉掌握 VHDL 語言和 QUARTUS 2 軟件的使用

4. 理解狀态機的工作原理和設計方法。

5. 掌握利用 EDA 工具進行自頂向下的電子系統設計方法。

實驗任務

設計制作一個檢測 4*4 矩陣鍵盤的按鍵編碼的實驗, 把實際按鍵的 鍵值的八位編碼先轉換成從 0000-1111 的編碼,再譯成數碼管能識别 的八位編碼, 在數碼管動态顯示時, 矩陣鍵盤的第一行對應 00-03, 4*4 第二行對應 04-07,第三行 08-11,第四行對應 12-15。

實驗原理

1.鍵盤的工作原理: 按鍵設置在行、列線交點上,行、列線分别連接到按鍵開關的 兩端。行線通過上拉電阻接到+5V 電源上。無按鍵按下時,行線處 于高電平的狀态, 而當有按鍵按下時, 行線電平與此行線相連的列 線電平決定。

2.行列掃描法原理:

第一步, 使行線為編程的輸入線,列線是輸出線,拉低所有的列線, 判斷行線的變化,如果有按鍵按下,按鍵按下的對應行線被拉低,否則 所有的行線都為高電平。

第二步, 在第一步判斷有鍵按下後, 延時 10ms 消除機械抖動,再次讀取行值,如果此行線還處于低電平狀态則進入下 一步,否則返回第一步重新判斷。

第三步,開始掃描按鍵位置,采用逐 行掃描,每間隔 1ms 的時間,分别拉低第一列,第二列,第三列,第四 列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置, 分别把行值和列值儲存在寄存器裡。

第四步,從寄存器中找到行值和列 值并把其合并,得到按鍵值,對此按鍵值進行編碼,按照從第一行第一 個一直到第四行第四個逐行進行編碼,編碼值從“0000” 至“1111” , 再進行譯碼,最後顯示按鍵号碼。 3.數碼管動态掃描原理。數碼管動态掃描原理: 數碼管的 7 個段及小數點都是由 LED 塊組成的,顯示方式分為靜 态顯示和動态顯示兩種。數碼管在靜态顯示方式時,其共陽管的位選 信号均為低電平,四個數碼管的共用段選線 a、b、c、d、e、f、g、dp 分别與 CPLD 的 8 根 I/O 口線相連,顯示數字時隻要給相應的段選線送 低電平。數碼管在動态顯示方式時,在某一時刻隻能有一個數碼管被 點亮顯示數字,其餘的處于非選通狀态,位選碼端口的信号改變時, 段選碼端口的信号也要做相應的改變 ,每位顯示字符停留顯示的時間 一般為 1-5ms,利用人眼睛的視覺慣性,在數碼管上就能看到相當穩定 的數字顯示。

相關詞條

相關搜索

其它詞條