實驗七,矩陣式鍵盤輸入實驗匯總_第1頁
實驗七,矩陣式鍵盤輸入實驗匯總_第2頁
實驗七,矩陣式鍵盤輸入實驗匯總_第3頁
實驗七,矩陣式鍵盤輸入實驗匯總_第4頁
實驗七,矩陣式鍵盤輸入實驗匯總_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗七、矩陣式鍵盤輸入實驗一、實驗目的1 .學習矩列式鍵盤工作原理2 .學習矩列式接口的電路設計和程序設計 二、實驗設備1 .仿真器2 .單片機最小系統(tǒng)實驗教學模塊3 .矩陣式鍵盤實驗模塊4 .動態(tài)掃描數碼管顯示模塊三、實驗要求要求實現:在矩陣式鍵盤中的某個鍵被按下時,8位LED動態(tài)顯示器上最低位顯示該鍵對應的字符,以前的字符向高位推進 1位(即類似于計算器)。 注意,在進行該項實驗之前,請先進行實驗二 數碼管動態(tài)掃描顯示實驗 四、實驗原理矩陣式由行線和列線組成,按鍵位于行、列的交叉點上。如圖所示,一個 4*4的 行、列結構可以構成一個由16個按鍵的鍵盤。很明顯,在按鍵數量較多的場 合,矩陣式

2、鍵盤與獨立式鍵盤相比,要節(jié)省很多的I/0 口。YCCCO Cl C2 C3Pl. 4 Pl. 5 Pl. 6 Pl. 7圖7-1矩陣式鍵盤結構4. 1矩陣式鍵盤工作原理按鍵設置在行、列交節(jié)點上,行、列分別連接到按鍵開關的兩端。行線通過上拉 電阻接到VCC上。平時無按鍵動作時,行線處于低電平狀態(tài),而當有按鍵按下 時,列線電平為低,行線電平為高。這一點是識別矩陣式鍵盤是否被按下的關鍵 所在。因此,各按鍵彼此將相互發(fā)生影響,所以必須將行、列線信號配合起來并 作適當的處理,才能確定閉合鍵的位置。4. 2按鍵識別方法下面以圖7-2中4號鍵被按下為例,來說明此鍵是如何被識別出來的。前已述及,鍵被按下時,與

3、此鍵相連的行線電平將由與此鍵相連的列線電平決 定,而行線電平在無鍵按下時處于高電平狀態(tài)。如果讓所有列線處于高電平那么 鍵按下與否不會引起行線電平的狀態(tài)變化,始終是低電平,所以,讓所有列線處 于高電平是沒法識別出按鍵的。現在反過來,讓所有列線處于低電平,很明顯, 按下的鍵所在行電平將也被置為高電平,根據此變化,便能判定該行一定有鍵被 按下。但我們還不能確定是這一行的哪個鍵被按下。所以,為了進一步判定到底 是哪一列的鍵被按下,可在某一時刻只讓一條列線處于低電平,而其余所有列線 處于高電平。當第1列為低電平,其余各列為高電平時,因為是鍵 4被按下,所 以第1行仍處于低電平狀態(tài);當第2列為低電平,其余

4、各列為高電平時,同樣我 們會發(fā)現第1行仍處于低電平狀態(tài),直到讓第 4列為低電平,其余各列為高電平 時,因為是3號鍵被按下,所以第1行的高電平轉換到第4列所處的高電平,據 此,我們確信第1行第4列交叉點處的按鍵即3號鍵被按下。根據上面的分析,很容易得出矩陣鍵盤按鍵的識別方法,此方法分兩步進行。第 一步,識別鍵盤有無健被按下;第二步,如果有鍵被按下,識別出具體的按鍵。 分述如下:識別鍵盤有無鍵被按下的方法是:讓所有列線均為低電平,檢查各行線電平是否 有高電平,如果有,則說明有鍵被按下,如果沒有,則說明無鍵被按下(實際編程時應考慮按鍵抖動的影響,通??偸遣捎密浖訒r的方法進行消抖處理)。識別具體按鍵

5、的方法是(亦稱之為掃描法):逐列置零電平,并檢查各行線電平 的變化,如果某行電平由低電平變?yōu)楦唠娖?則可確定此行此列交叉點處按鍵被按下。圖7 2實驗硬件連線圖五、實驗步驟1、按照圖7-2的電路圖,用導線將矩陣式鍵盤、數碼管動態(tài)掃描顯示模塊和單片 機的最小系統(tǒng)實驗模塊連接正確。2、示例程序如下:Keyvalue EQU 40HFirstptr EQU 30hLowptr EQU 36HHighptr EQU 37H .*主程序* ;讀到鍵盤的值暫放的地址;顯示緩沖區(qū)地址低位MAIN:LOOP:KEY:ORG 0000H NOP NOP LJMP WAIT MOV R1,#Firstptr MOV

6、 R0,#08H MOV A,#10H MOV R1,A INC R1 DJNZ R0,LOOP MOV P2,#00H MOV R2,#0EFH MOV P1,#0FFH MOV A,R2 MOV P1,A MOV A,P1 MOV Keyvalue,A ORL A,#0F0H MOV A,R2 RL A MOV R2,A LCALL DISP DJNZ R1,KEY ;四列有無掃描完成;去抖延時 SJMP LOOP1 ;等待釋放子程序 MOV P1,#0FFH MOV P1,R3 MOV A,P1 CJNE A,KEYVALUE,K0 LCALL DISP JMP KEY_ON ; 判斷各

7、行是否有低電平;測試鍵是 否釋放;關閉所有的顯示 洌數為4。;準備掃描,P1 口高4位為列線;讀出口狀態(tài)之 前,先向P1 口寫1指向表格的指針,現在為 0FFH即無顯示 WAIT: LJMP MAIN ;先清空30-3f之間的16個暫存區(qū)LOOP1: MOV R1,#04H ;先掃描第一列; 低電平送P1 口 ;掃描結果送回ACC;存儲掃描結果供去抖后判斷;屏蔽高四位 MOV R3,A ;列信息CJNE A,#0F0H,KEY_ON ;有鍵按下則轉到 KEY_ON ;該行沒 有鍵按下,繼續(xù)掃描下一列 KEY_ON: LCALL DL10MS ;鍵處理子程序K0: MOV A,KeyvalueC

8、JNE A,#0E1H,K1 ;K0 未按下,轉移 K1 LCALL MOVDISPMOV Firstptr,#0 LCALL DISP LJMP LOOP1 K1: CJNE A,#0D1H,K2 ;K1 未按下,轉移 K2 LCALL MOVDISP MOV Firstptr,#1 LCALL DISP LJMP LOOP1K2: CJNE A,#0B1H,K3 ;K2 未按下,轉移 K3 LCALL MOVDISPMOV Firstptr,#2 LCALL DISPLJMP LOOP1K3: CJNE A,#71H,K4 ;K3LCALL MOVDISPMOV Firstptr,#3LC

9、ALL DISPLJMP LOOP1K4: CJNE A,#0E2H,K5 ;K4LCALL MOVDISPMOV Firstptr,#4LCALL DISPLJMP LOOP1K5: CJNE A,#0D2H,K6 ;K5LCALL MOVDISPMOV Firstptr,#5LCALL DISPLJMP LOOP1K6: CJNE A,#0B2H,K7 ;K6LCALL MOVDISPMOV Firstptr,#6LCALL DISPLJMP LOOP1K7: CJNE A,#72H,K8 ;K7LCALL MOVDISPMOV Firstptr,#7LCALL DISPLJMP LOOP

10、1K8: CJNE A,#0E4H,K9 ;K8LCALL MOVDISP 未按下,轉移 K4未按下,轉移 K5未按下,轉移 K6未按下,轉移K7未按下,轉移K8未按下,轉移K9MOV Firstptr,#8LCALL DISPLJMP LOOP1K9: CJNE A,#0D4H,KA ;K9 未按下,轉移 KA LCALL MOVDISPMOV Firstptr,#9LCALL DISPLJMP LOOP1KA: CJNE A,#0B4H,KB ;KALCALL MOVDISPMOV Firstptr,#0AHLCALL DISPLJMP LOOP1KB: CJNE A,#74H,KC ;K

11、BLCALL MOVDISPMOV Firstptr,#0BHLCALL DISPLJMP LOOP1KC: CJNE A,#0E8H,KD ;KCLCALL MOVDISPMOV Firstptr,#0CHLCALL DISPLJMP LOOP1KD: CJNE A,#0D8H,KE ;KDLCALL MOVDISPMOV Firstptr,#0DHLCALL DISPLJMP LOOP1KE: CJNE A,#0B8H,KF ;KELCALL MOVDISPMOV Firstptr,#0EHLCALL DISPLJMP LOOP1KF: CJNE A,#78H,ERRO ;KFLCALL

12、MOVDISPMOV Firstptr,#0FHLCALL DISP未按下,轉移 KB未按下,轉移KC未按下,轉移KD未按下,轉 移KE未按下,轉移 KF未按下,轉移ERROERRO: LJMP LOOP1;MOVDISP程序用于調整存放在30 37H中的顯示值的位置 MOVDISP:MOVR0,#LOWPTRMOV_D:MOV R1,#HIGHPTR MOV R2,#08H MOV A,R0 MOV R1,A DEC R1 DEC R0 DJNZ R2,MOV_D RET;高電平選通;循環(huán)指針;關閉所有的顯示;顯示子程序DISP: MOV R4,#01H DISP3:DISP2:DL10MS

13、: MOV R1,#01HDL1: MOV R6,#60HDL2:DJNZ R6,DL2 DJNZ R1,DL1 RET MOV R5,#08H MOV R0,#Firstptr MOV P2,#00H MOV DPTR,#TAB MOVC A,A+DPTR MOV P2,#00H MOV P0,A MOV P2,R4 INC R0 RL A MOV R4,A DJNZ R5,DISPL1 MOV P2,#00H; RET MOV A,R4 ; 選通 該位;偏移量加1 ;選通下一位;取字符;顯示前,關閉上一次的顯示;送字符偏移 量 DISPL1: MOV A,R0 ;字符送到 P0 口DL1MS: MOV R5,#08hLOOP3: MOV R6,#10HLOOP2: DJNZ R6,LOOP2DJNZ R5,LOOP3 RETTAB: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH DB 01H,09H,11H,0C1H,63H,85H,61H,71H ;共陽END DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0

溫馨提示

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

評論

0/150

提交評論