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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第七章顯示器與鍵盤接口技術(shù)

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

非編碼鍵盤接口

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

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

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

◆控制不同組合的發(fā)光二極管導(dǎo)通,就能顯示出不同的數(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)顯示

動(dòng)態(tài)顯示

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

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

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

CNT_LEQU60H ;計(jì)數(shù)待顯示個(gè)位數(shù)據(jù)

ORG0000H LJMPMAIN ORG 0066HMAIN: MOVSP,#70H MOVCNT_H,#00H ;61H、60H單元清0 MOVCNT_L,#00H LCALLDISPLAY ;調(diào)用顯示子程序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 ;調(diào)用顯示子程序

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 ;延時(shí)1秒子程序LOOP3:MOV R2,#0FAHLOOP2:MOV R1,#0F9H NOPLOOP1:NOP NOP DJNZ R1,LOOP1 DJNZ R2,LOOP2 DJNZ R3,LOOP3 RET END利用人眼的視覺暫留效應(yīng),就可以給人同時(shí)顯示的感覺7.1LED數(shù)碼管顯示接口2.動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示是一位一位地輪流循環(huán)點(diǎn)亮各位數(shù)碼管,每位點(diǎn)亮的時(shí)間為1~5ms7.1LED數(shù)碼管顯示接口圖示為51單片機(jī)控制的4位LED數(shù)碼管動(dòng)態(tài)顯示接口電路為方便與數(shù)碼管的顯示接口,在片內(nèi)RAM的30H開始設(shè)置顯示緩沖區(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ù),準(zhǔn)備查段選碼

MOVCA,@A+DPTR;查字型碼

MOV P3,A ;段選碼送P3口

ACALLDELAY1MS ;延時(shí)1ms。延時(shí)子程序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ù)碼管動(dòng)態(tài)顯示子程序如果要在4位數(shù)碼管上動(dòng)態(tài)顯示××.×,顯示緩沖區(qū)中應(yīng)放什么內(nèi)容?程序如何修改?共陽極數(shù)碼管L的段碼是多少?共陽極數(shù)碼管y的段碼是多少?如果要在4位數(shù)碼管上動(dòng)態(tài)顯示PLAY,顯示緩沖區(qū)中應(yīng)放什么內(nèi)容?程序如何修改?

spgfedcba顯示L:11000111=C7H

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

常用于按鍵數(shù)量較少的場(chǎng)合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獨(dú)立式鍵盤接口按鍵查詢子程序這條指令做什么用?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 獨(dú)立式鍵盤接口按鍵查詢子程序(續(xù))二、行列式非編碼鍵盤接口

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

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

鍵值的計(jì)算按鍵識(shí)別步驟

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

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

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

LCALLDEL10MS;有鍵按下,延時(shí)10ms去抖動(dòng)

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

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

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

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

4×4行列式鍵盤掃描子程序FTAB: LCALL FUNC0 ;調(diào)用0號(hào)鍵功能子程序

RET ;返回主程序

LCALL FUNC1 ;調(diào)用1號(hào)鍵功能子程序

RET ;返回主程序

. . . LCALL FUNC15;調(diào)用15鍵功能子程序

RET ;返回主程序

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

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

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

CPL A ;A取反

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

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

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

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

JB ACC.0,L1 ;第0列無鍵按下,轉(zhuǎn)查第1列

MOV A,#0 ;第0列有鍵按下,列號(hào)0送A SJMPKSOLVE ;轉(zhuǎn)求鍵值

L1: JB ACC.1,L2 ;第1列無鍵按下,轉(zhuǎn)查第2列

MOV A,#1 ;第1列有鍵按下,列號(hào)1送A

SJMPKSOLVE ;轉(zhuǎn)求鍵值

L2: JB ACC.2,L3 ;第2列無鍵按下,轉(zhuǎn)查第3列

MOV A,#2 ;第2列有鍵按下,列號(hào)2送A

SJMPKSOLVE ;轉(zhuǎn)求鍵值

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

MOV A,#3 ;第3列有鍵按下,列號(hào)3送A

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

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

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

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

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

SJMP LOOP ;轉(zhuǎn)LOOP,掃描下一行ERR: MOV A,#16 ;鍵值賦16,表示出錯(cuò)! RETKSOLVE:ADD A,R6 ;計(jì)算鍵值,鍵值=行首鍵值+列號(hào)

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

JNZ WAIT ;沒有釋放,等待

POP ACC ;鍵值出棧

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

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

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

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

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

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

MOVCA,@A+DPTR;查字形碼

MOV P3,A ;字形碼送P3口

ACALLDELAY1MS ;延時(shí)1ms。延時(shí)子程序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ù)碼管動(dòng)態(tài)顯示子程序鍵盤與顯示系統(tǒng)程序流程圖

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

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

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

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

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

DJNZ R3,DELY;延時(shí)大約10ms時(shí)間到

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

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

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 ;散轉(zhuǎn),執(zhí)行所按鍵相應(yīng)功能子程序FTAB: LCALL FUNC0 ;調(diào)用0號(hào)鍵功能子程序

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

LCALL FUNC1 ;調(diào)用1鍵

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論