矩陣式鍵盤與LED顯示示例_第1頁
矩陣式鍵盤與LED顯示示例_第2頁
矩陣式鍵盤與LED顯示示例_第3頁
矩陣式鍵盤與LED顯示示例_第4頁
矩陣式鍵盤與LED顯示示例_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

矩陣式鍵盤與LED顯示示例——匯編程序的編寫試編寫程序,將按鍵值用七段數碼管顯示出來。矩陣式鍵盤與LED顯示接線如下圖圖主程序

org000H LJMPMAIN ORG0030HMAIN:MOVSP,#5Fh;初始化堆棧LOOP:

LCALLScankey;判斷按鍵值

LcallDisplay;顯示按鍵

sjmpLOOPLED數碼管驅動電路公共電阻限流各路分別限流dpgfedcba00000110共陰極字形“1”編碼示例:06H七段LED數碼管驅動碼表顯示子程序;顯示子程序,;A存放在要顯示的字符COMCATAB:;共陰

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H

;

[0-7]DB

7FH,6FH,77H,7CH,39H,5EH,79H,71H,76H

;[8-F]COMANTAB:;共陽

DB

0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H

;[0-7]DB

80H,90H,88H,83H,0c6H,0a1H,86H,8eH

;

[8-F]Display:MOVDPTR,#COMCATABMOVCA,@A+DPTR

MOVP2,ARET按鍵判斷方法如圖所示:如果有鍵按下,則該端口為低電平首先判斷哪行有鍵按下1、行線接輸入口,列線接輸出口。2、置所有列線為低電平3、讀行線狀態,若行線均為高電平,則沒有鍵按下;4、某行有按鍵按下,則該行線為低電平5、如果所有行都為高電平,則無鍵按下其次判按哪列有鍵按下1、先讓C0列為低電平,其余列線為高電平,讀行線狀態,2、如行線狀態不全為“1”,則說明所按鍵在該列;否則所按鍵不在該列,3、再使C1列線為低電平,其它列為高電平,判斷C1列有無按鍵按下。

最后根據行號和列號,獲得按鍵號

鍵號=行首號+列號根據鍵號進入相應的功能程序。矩陣鍵盤的接法;鍵盤掃描子程序,F0為1則有鍵按下,鍵值存放在A中Scankey:callScanrow;掃描行

mov

b,a;把掃描所得行值保存在寄存器B中

callscancol;掃描列

Adda,b;計算鍵號Rt2:ret判段哪行有鍵按下1、行線接輸入口,列線接輸出口。2、置所有列線為低電平3、讀行線狀態,若行線均為高電平,則沒有鍵按下;4、某行有按鍵按下,則該行線為低電平5、如果所有行都為高電平,則無鍵按下;判斷哪行有鍵按下子程序,;如果有鍵按下,則鍵號F0=1,A為行首號值。否則F0=0;scanrow:

CLRF0MOVP1,#0FH;置高4位全0,低四位輸入

MOVA,P1ROW0: jbacc.0,ROW1;判斷第0行是否有按鍵按下

setbF0

mova,#0

sjmpRRET判斷哪行有按鍵按下子程序ROW1: jbacc.1,ROW2;判斷第1行是否有按鍵按下

setbF0

mova,#4

sjmpRRETROW2: jnacc.2,ROW3;第2行

setbF0

mova,#8

sjmpRRETROW3: jbacc.3,RRET;第3行

setbF0

mova,#0CHRRET:ret判按哪列有鍵按下1、先讓C0列為低電平,其余列線為高電平,讀行線狀態,2、如行線狀態不全為“1”,則說明所按鍵在該列;否則所按鍵不在該列,3、再使C1列線為低電平,其它列為高電平,判斷C1列有無按鍵按下。

;判斷哪列被按下子程序

,結果存放在A中

scancol:movp1,#11101111B;第0列掃描字

mova,p1

orla,#F0H

cpla

jzL1

mova,#0

jmp

rtL1:movp1,#11011111B;第1列掃描字

mova,p1

orla,#F0H

cpla

jzL2

mova,#1

jmp

rt

L2:movp1,#10111111B;第2列掃描字

mova,p1

orla,#F0H

cpla

jzL2

mova,#2

Jmp

rtL3:movp1,#01111111B;第3列掃描字

mova,p1

orla,#F0H

cpla

jz

rt

mova,#3Rt:ret

開關閉合與斷開時的抖動及去抖電路

按鍵較少時:去抖電路

按鍵較多時:軟件延時,通常為10ms10ms延時子程序D_1S:MOVR6,#100;1SD10mS:MOVR5,#401T+(1T+1T+2*124T)*40

DL:MOVR4,#124;1T/1T+1T+2*124T

NOP;1T

DJNZR4,$;2T

DJNZR5,DL;2T

DJNZR6,D10MSRET總時間t=40*(1+(1+1+2*124)*40)T=10001us=10.001ms10ms延時子程序DJNZR5,DL;2TDL:MOVR4,#123;1TL:DJNZR4,$;2TD10mS:MOVR5,#40;1T+(1T+1T+2*123T+2T)*40總時間t=1+(1+1+2*123+2)*40)T=10001us=10.001msNOP;1TRET常用指令字節數及執行的機器周期數指令字節數周期數MOVRn,#data21NOP11DJNZRn,rel

22RET12LCALLaddr1632;鍵盤掃描子程序,F0為1則有鍵按下,鍵值存放在A中Scankey:call

溫馨提示

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

評論

0/150

提交評論