第07章 顯示器與鍵盤接口技術_第1頁
第07章 顯示器與鍵盤接口技術_第2頁
第07章 顯示器與鍵盤接口技術_第3頁
第07章 顯示器與鍵盤接口技術_第4頁
第07章 顯示器與鍵盤接口技術_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章顯示器與鍵盤接口技術

鍵盤與顯示系統(tǒng)

非編碼鍵盤接口

LED數(shù)碼管顯示接口

7.1LED數(shù)碼管顯示接口顯示器和鍵盤是兩種重要外設鍵盤用于輸入數(shù)據和命令顯示器用于顯示控制過程和運算結果一、LED數(shù)碼管顯示原理

◆LED數(shù)碼管是單片機系統(tǒng)常用的顯示器件。它由若干發(fā)光二極管組成

◆控制不同組合的發(fā)光二極管導通,就能顯示出不同的數(shù)字◆LED數(shù)碼管分為共陰極和共陽極兩種7.1LED數(shù)碼管顯示接口7.1LED數(shù)碼管顯示接口1.共陰極LED數(shù)碼管

spgfedcba顯示2:01011011=5BH

spgfedcba顯示b:01111100=7CH7.1LED數(shù)碼管顯示接口共陰極數(shù)碼管段碼表7.1LED數(shù)碼管顯示接口2.共陽極LED數(shù)碼管

spgfedcba顯示2:10100100=A4H

spgfedcba顯示b:10000011=83H7.1LED數(shù)碼管顯示接口共陽極數(shù)碼管段碼表二、數(shù)碼管的顯示方式

7.1LED數(shù)碼管顯示接口顯示方式靜態(tài)顯示

動態(tài)顯示

◆靜態(tài)顯示是指LED數(shù)碼管顯示某一字符時,相應的發(fā)光二極管恒定導通或恒定截止。7.1LED數(shù)碼管顯示接口1.靜態(tài)顯示方式7.1LED數(shù)碼管顯示接口圖示為51單片機控制2位LED數(shù)碼管靜態(tài)顯示接口電路,圖中數(shù)碼管為共陽極7.1LED數(shù)碼管顯示接口◆完成0~99循環(huán)計數(shù)靜態(tài)顯示功能的程序流程圖。LED2顯示十位計數(shù)值LED1顯示個位計數(shù)值

7.1LED數(shù)碼管顯示接口源程序

CNT_HEQU61H ;計數(shù)待顯示十位數(shù)據

CNT_LEQU60H ;計數(shù)待顯示個位數(shù)據

ORG0000H LJMPMAIN ORG 0066HMAIN: MOVSP,#70H MOVCNT_H,#00H ;61H、60H單元清0 MOVCNT_L,#00H LCALLDISPLAY ;調用顯示子程序7.1LED數(shù)碼管顯示接口LOOP:LCALLDELAY1S INC CNT_L MOV A, CNT_L XRL A, #10 JNZ DSP MOV CNT_L,#00H INC CNT_H MOV A, CNT_H XRL A, #10 JNZ DSP MOV CNT_H,#00HDSP: LCALLDISPLAY ;調用顯示子程序

LJMP LOOP7.1LED數(shù)碼管顯示接口DISPLAY:MOVDPTR,#TABLE;顯示子程序

MOV A,CNT_H MOVC A,@A+DPTR MOV P3,A MOV DPTR,#TABLE MOV A,CNT_L MOVC A,@A+DPTR MOV P1,A RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99H DB92H,82H,0F8H,80H,90H7.1LED數(shù)碼管顯示接口;************************************DELAY1S:MOV R3,#04H ;延時1秒子程序LOOP3:MOV R2,#0FAHLOOP2:MOV R1,#0F9H NOPLOOP1:NOP NOP DJNZ R1,LOOP1 DJNZ R2,LOOP2 DJNZ R3,LOOP3 RET END利用人眼的視覺暫留效應,就可以給人同時顯示的感覺7.1LED數(shù)碼管顯示接口2.動態(tài)顯示方式動態(tài)顯示是一位一位地輪流循環(huán)點亮各位數(shù)碼管,每位點亮的時間為1~5ms7.1LED數(shù)碼管顯示接口圖示為51單片機控制的4位LED數(shù)碼管動態(tài)顯示接口電路為方便與數(shù)碼管的顯示接口,在片內RAM的30H開始設置顯示緩沖區(qū),如圖所示7.1LED數(shù)碼管顯示接口什么叫顯示緩沖區(qū)?DPLAY:MOV R0,#30H ;R0指針指向顯示緩沖區(qū)首址

MOV DPTR,#SEGTAB MOV R2,#01H ;置位選碼初值

MOV A,R2DISP: MOV P1,A ;輸出位選碼

MOV A,@R0 ;取出要顯示的數(shù),準備查段選碼

MOVCA,@A+DPTR;查字型碼

MOV P3,A ;段選碼送P3口

ACALLDELAY1MS ;延時1ms。延時子程序DELAY1MS略

INC R0 ;修改顯示緩沖區(qū)單元地址

MOV A,R2 JB ACC.3,GORET;4位顯示完否?

RLA ;未顯示完,位選碼左移1位

MOV R2,A AJMPDISPGORET:RETSEGTAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HDB

88H,83H,C6H,A1H,86H,8EH4位LED數(shù)碼管動態(tài)顯示子程序如果要在4位數(shù)碼管上動態(tài)顯示××.×,顯示緩沖區(qū)中應放什么內容?程序如何修改?共陽極數(shù)碼管L的段碼是多少?共陽極數(shù)碼管y的段碼是多少?如果要在4位數(shù)碼管上動態(tài)顯示PLAY,顯示緩沖區(qū)中應放什么內容?程序如何修改?

spgfedcba顯示L:11000111=C7H

spgfedcba顯示y:10010001=91H討論題共陰極數(shù)碼管與共陽極數(shù)碼管有什么不同?動態(tài)掃描顯示是基于什么機理?靜態(tài)顯示與動態(tài)顯示各有什么特點?消除按鍵抖動有哪些方法?獨立式鍵盤和行列式鍵盤各有什么特點?行列式鍵盤是如何識別按鍵的?下次課前預習7.2和7.3,并思考下列問題7.2非編碼鍵盤接口鍵盤編碼鍵盤通過編碼電路識別鍵碼,硬件較復雜非編碼鍵盤通過軟件識別鍵碼,硬件簡單7.2非編碼鍵盤接口◆鍵盤是若干按鍵的集合,是單片機常用輸入設備,操作人員可以通過鍵盤輸入數(shù)據或命令◆單片機的鍵盤通常使用機械觸點式按鍵開關◆按鍵觸點在閉合或斷開時會產生抖動現(xiàn)象7.2非編碼鍵盤接口◆觸點的去抖動方法●軟件去抖動:軟件延時10ms●硬件去抖動:R-S觸發(fā)器一、獨立式按鍵接口

常用于按鍵數(shù)量較少的場合7.2非編碼鍵盤接口

ORG0100HKEYSCAN: MOVP1,#0FFH MOVA,P1 LCALLDEL10MS MOVB,P1 CJNEA,B,GORET JNBACC.0,KEY0 JNBACC.1,KEY1 JNBACC.2,KEY2 JNBACC.3,KEY3 JNBACC.4,KEY4 JNBACC.5,KEY5 JNBACC.6,KEY6 JNBACC.7,KEY7GORET:RET獨立式鍵盤接口按鍵查詢子程序這條指令做什么用?KEY0: LCALL FUNC0 RET KEY1: LCALL FUNC1 RET KEY2: LCALL FUNC2 RET KEY3: LCALL FUNC3 RET KEY4: LCALL FUNC4 RET KEY5: LCALL FUNC5 RET KEY6: LCALL FUNC6 RET KEY7: LCALL FUNC7 RET 獨立式鍵盤接口按鍵查詢子程序(續(xù))二、行列式非編碼鍵盤接口

按鍵設置在行線和列線的交叉處7.2非編碼鍵盤接口7.2非編碼鍵盤接口判別是否有鍵按下

識別按鍵位置(逐行掃描)

鍵值的計算按鍵識別步驟

7.2非編碼鍵盤接口1.判別是否有鍵按下──全掃描各行線同時送低電平同時讀各列線的值全為1,則無鍵按下不全為1,則有鍵按下7.2非編碼鍵盤接口2.識別按鍵位置──逐行掃描依次使每條行線為低電平,分別讀取列線值全為1,則按鍵不在這一行不全為1,按鍵就在這一行7.2非編碼鍵盤接口3.鍵值的計算鍵值=(行號×列數(shù))+列號

=行首鍵值+列號行首鍵值:每行第0列的鍵值列號:指列的序號例如Y0列的列號為0例如Y1列的列號為1例如5號鍵的列號是15號鍵的行首鍵值是4鍵值=行首鍵值+列號=5鍵盤掃描子程序流程圖KEYSCAN:ACALLKSCAN ;全掃描,查看有沒有鍵按下

JZ GORET ;A=0說明沒有鍵按下,返回

LCALLDEL10MS;有鍵按下,延時10ms去抖動

ACALLKSCAN ;全掃描,再查有沒有鍵按下

JZ GORET ;A=0說明沒有鍵按下,返回

ACALLKEYSUM ;有鍵按下,逐行掃描確定鍵值

RL A RL A ;鍵值×4 MOVDPTR,#FTAB JMP@A+DPTR ;散轉,執(zhí)行所按鍵相應功能子程序GORET:RET

4×4行列式鍵盤掃描子程序FTAB: LCALL FUNC0 ;調用0號鍵功能子程序

RET ;返回主程序

LCALL FUNC1 ;調用1號鍵功能子程序

RET ;返回主程序

. . . LCALL FUNC15;調用15鍵功能子程序

RET ;返回主程序

LCALL ERRSUB;鍵值為16,異常處理

RET;KSCAN為判斷有無鍵按下子程序,A≠0表示有鍵按下KSCAN:MOV P1,#0F0H;行線同時低電平,列線準備讀

MOV A,P1 ;讀取列線數(shù)據,全為1無鍵按下

CPL A ;A取反

ANL A,#0F0H;屏蔽行線,A全為0無鍵按下

RET ;返回,A≠0表示有鍵按下4×4矩陣式鍵盤掃描子程序(續(xù))識別按鍵位置──逐行掃描依次使每條行線為低電平,分別讀取列線值全為1,則按鍵不在這一行不全為1,按鍵就在這一行KEYSUM:MOV R6,#00H;R6存放行首鍵值,0行首鍵值=0 MOV R7,#0FEH;第0行的行掃描字LOOP: MOV P1,R7 ;逐行輸出行掃描字

MOV A,P1 ;讀列線數(shù)據

SWAPA ;A的高低半字節(jié)交換

JB ACC.0,L1 ;第0列無鍵按下,轉查第1列

MOV A,#0 ;第0列有鍵按下,列號0送A SJMPKSOLVE ;轉求鍵值

L1: JB ACC.1,L2 ;第1列無鍵按下,轉查第2列

MOV A,#1 ;第1列有鍵按下,列號1送A

SJMPKSOLVE ;轉求鍵值

L2: JB ACC.2,L3 ;第2列無鍵按下,轉查第3列

MOV A,#2 ;第2列有鍵按下,列號2送A

SJMPKSOLVE ;轉求鍵值

L3: JB ACC.3,NEXT;第3列無鍵按下,本行掃描結束

MOV A,#3 ;第3列有鍵按下,列號3送A

SJMPKSOLVE ;轉求鍵值求鍵值子程序(鍵值在A中返回)NEXT: MOV A,R7 ;取出行掃描字

JNB ACC.3,ERR ;已掃描完仍未查到被按鍵,異常處理

RL A ;未掃描完,則R7循環(huán)左移一位

MOV R7,A ;得到下一行的行掃描字

ADD R6,#4 ;得到下一行的行首鍵值

SJMP LOOP ;轉LOOP,掃描下一行ERR: MOV A,#16 ;鍵值賦16,表示出錯! RETKSOLVE:ADD A,R6 ;計算鍵值,鍵值=行首鍵值+列號

PUSHACC ;鍵值進棧暫存WAIT: ACALLKSCAN ;查按鍵釋放否?防止重復執(zhí)行鍵功能

JNZ WAIT ;沒有釋放,等待

POP ACC ;鍵值出棧

RET ;返回到ACALLKEYSUM的下一句求鍵值子程序(續(xù))7.3鍵盤與顯示系統(tǒng)◆在單片機應用系統(tǒng)中,為節(jié)省I/O口線,可將數(shù)碼管顯示器和鍵盤結合起來,構成實用的鍵盤與顯示系統(tǒng)。7.3鍵盤與顯示系統(tǒng)7.3鍵盤與顯示系統(tǒng)◆圖中4×4行列式鍵盤剛才介紹過,鍵盤掃描程序與前面的KEYSCAN子程序相同

◆圖中的4位LED動態(tài)掃描顯示電路上節(jié)課已介紹過,4位數(shù)碼管動態(tài)顯示子程序如下:

DPLAY:MOV R0,#30H ;R0指向顯示緩沖區(qū)首址

MOV DPTR,#SEGTAB MOV R2,#01H ;置位選碼初值

MOV A,R2DISP: MOV P1,A ;輸出位選碼

MOV A,@R0 ;取出要顯示的數(shù),準備查段選碼

MOVCA,@A+DPTR;查字形碼

MOV P3,A ;字形碼送P3口

ACALLDELAY1MS ;延時1ms。延時子程序DELAY1MS略

INC R0 ;修改顯示緩沖區(qū)單元地址

MOV A,R2 JB ACC.3,GORET;4位顯示完否?

RLA ;未顯示完,位選碼左移1位

MOV R2,A AJMPDISPGORET:RETSEGTAB:DBC0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90HDB

88H,83H,C6H,A1H,86H,8EH4位LED數(shù)碼管動態(tài)顯示子程序鍵盤與顯示系統(tǒng)程序流程圖

鍵盤與顯示系統(tǒng)主程序

ORG 0000H LJMP MAIN ORG 0100HMAIN: . ;初始化部分(略)

. .KEYSCAN:LCALL KSCAN;全掃描,檢查是否有鍵按下

JZ KS1 ;A=0表示沒有鍵按下,轉KS1 AJMP KS2KS1: LCALL DPLAY ;調用動態(tài)顯示子程序,顯示一遍

AJMP KEYSCANKS2: MOV R3,#L ;利用動態(tài)掃描防抖動延時約10msDELY: LCALL DPLAY ;調用動態(tài)顯示子程序,顯示一遍

DJNZ R3,DELY;延時大約10ms時間到

LCALL KSCAN ;全掃描,再查是否有鍵按下

JZ KS1 ;A=0表示沒有鍵按下,轉KS1 LCALL KEYSUM;有鍵按下,逐行掃描確定鍵值KSCAN:MOV P1,#0F0H;準備讀

MOV A,P1 CPL A ANL A,#0F0H RET ;A=0則無鍵按下KEYSUM為求鍵值子程序,鍵值在A中返回

MOV R2,ARL A ADD A,R2 ;鍵值×3 RL A ;鍵值×6 MOV DPTR,#FTAB JMP @A+DPTR ;散轉,執(zhí)行所按鍵相應功能子程序FTAB: LCALL FUNC0 ;調用0號鍵功能子程序

LJMP KS1 ;程序進入循環(huán)

LCALL FUNC1 ;調用1鍵

溫馨提示

  • 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

提交評論