uc 2012 ch8-1鍵盤顯示_sxj_第1頁
已閱讀1頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第8章 鍵盤顯示及模擬量通道技術(shù),8.1 鍵盤/顯示器接口擴(kuò)展技術(shù)8.2 模擬量I/O通道,8.1 鍵盤/顯示器接口擴(kuò)展技術(shù),8.1.1 顯示器結(jié)構(gòu)與工作原理8.1.2 鍵盤接口工作原理,8.1.1 顯示器結(jié)構(gòu)與工作原理,顯示器概述作用顯示單片機(jī)的運(yùn)行結(jié)果與運(yùn)行狀態(tài)分類LED(發(fā)光二極管):亮度清晰、成本低、控制簡單LCD(液晶):功耗低CRT(陰極射線管):圖形顯示方便使用場合電子顯示屏、工業(yè)測控領(lǐng)域、儀器儀表、

2、電子鐘、家用電器等,LED數(shù)碼管顯示器結(jié)構(gòu),LED數(shù)碼管顯示原理與段碼,11111100,00000011,共陽段碼表,共陰段碼表,3FH,C0H,,,,顯示代碼表,LED數(shù)碼顯示方法,靜態(tài)動(dòng)態(tài),2. 靜態(tài)顯示法接口設(shè)計(jì),靜態(tài)顯示每個(gè)顯示器各筆畫段都獨(dú)占具有鎖存功能的輸出口線因?yàn)楦鞴P畫段接口具有鎖存功能,CPU不再去訪問它,顯示的內(nèi)容也不會(huì)消失優(yōu)點(diǎn)程序簡單,顯示亮度大,節(jié)約了CPU時(shí)間缺點(diǎn)占用

3、的I/O口線較多,成本較高,典型靜態(tài)顯示接口圖一,程序(1):8位顯示,顯示緩沖30H-37H,用串口方式0DIS:MOV SCON, #00HMOV R0, #30HMOV R7, #08HMOV DPTR, #TABLP:MOV A, @R0MOVC A, @A+DPTRMOV SBUF, AJNB TI, $CLR TIINC R0DJNZ R7

4、, LPRETTAB:DB 3FH,06H,……,CLKBIT P1.0DABBIT P1.1DIS:MOVR0, #30HMOVR7, #08HMOVDPTR, #TABLP:MOVA, @R0MOVCA, @A+DPTRMOVR6, #08H,程序(2):8位顯示:顯示緩沖30H-37H, 用P1.0-CLK,P1.1-DAB,LP0:CLRCL

5、KRRCA ;循環(huán)右移MOVDAB, CSETBCLKDJNZR6, LP0 INCR0DJNZR7, LPRETTAB:DB 3FH,06H,……,,,典型靜態(tài)顯示接口圖二,,靜態(tài)顯示應(yīng)用,,,靜態(tài)顯示應(yīng)用,3. 動(dòng)態(tài)掃描顯示法接口設(shè)計(jì),動(dòng)態(tài)掃描顯示對(duì)于一組LED數(shù)碼顯示器需要兩組信號(hào)來控制段碼:字段輸出口輸出的字形代碼位碼:

6、輸出口的控制信號(hào),選擇第幾位顯示器工作一位一位地顯示器數(shù)碼——?jiǎng)討B(tài)掃描顯示利用人的 “視覺暫留效應(yīng)”顯示刷新的頻率達(dá)到30Hz以上,否則會(huì)出現(xiàn)閃爍,[例1] 8255A作顯示器接口,要求6個(gè)LED采用共陽極連接79H~7EH:存放6位顯示器的顯示數(shù)據(jù)(0~9)8255的A口:LED顯示器段控8255的C口:LED顯示器位控,8255的口地址A口:7FFCHB口:7FFDH,C口:7FFEH控制寄存器:7FFFH,段控

7、,位控,共陽極,,MODE:MOVA, #80H;10000000B=80H A、C口基本輸出MOVDPTR, #7FFFH;控制字MOVX@DPTR, ADISP:MOVR0, #30H;顯示緩沖MOVR2, #01H;6個(gè)顯示器,位選點(diǎn)亮的初始碼,程序,,,8255A初始化,共陽極,LOOP:MOVA, #0FFH;滅碼(共陽極)MOVDPTR, #7FFCH

8、;A口為段選MOVX@DPTR, AMOVA, R2MOV DPTR, #7FFEH;C口為位選MOVX@DPTR, AMOVA, @R0MOVDPTR, #TABMOVCA, @A+DPTR;查段碼MOVDPTR, #7FFCH; A口地址MOVX@DPTR, A;向A口輸出段碼ACALLDY1MS;顯示數(shù)據(jù)穩(wěn)定,可保持亮度,

9、8255的口地址A口:7FFCHC口:7FFEH,,,,,,INC R0;指向下一個(gè)顯示緩沖MOVA,R2JBACC.5, EXIT;到第6個(gè)數(shù)碼管了?RLAMOVR2, AAJMPLOOPEXIT:RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80HDB90H,88H,83H,0C6H,0A1H,86H,8EH,8CH

10、,0BFH,0FFH,,,,,,8.1.2 鍵盤接口工作原理,鍵盤人機(jī)交互的一個(gè)重要工具兩種基本類型編碼鍵盤除了按鍵以外,還包括產(chǎn)生鍵碼的硬件電路使用方便、價(jià)格較高 非編碼鍵盤靠軟件來識(shí)別鍵盤上的閉合鍵,由此計(jì)算出編碼幾乎不需要附加硬件邏輯在單片機(jī)應(yīng)用系統(tǒng)中被普遍使用,1. 非編碼鍵盤的工作原理,分類硬件編碼式鍵盤、二維直讀式鍵盤獨(dú)立式鍵盤〔簡單鍵盤〕、行列式鍵盤(矩陣式鍵盤),獨(dú)立式按鍵

11、 行列式鍵盤,,0 1 1 1,1 0 1 1,1 1 0 1,1 1 1 0,2. 按鍵開關(guān)去抖動(dòng)問題,按鍵抖動(dòng)在按下和釋放時(shí),按鍵有抖動(dòng)按鍵時(shí)間:>100ms前跳沿和后跳沿:<20ms,抖動(dòng)時(shí)間一般為5~10ms,A,為確保:對(duì)鍵的一次閉合僅作一次處理必須:去除抖動(dòng),3. 消除抖動(dòng)不良后果的方法,⑴ 硬件去抖動(dòng)

12、RC濾波電路去抖動(dòng)電路簡單實(shí)用,效果較好。⑵ 軟件去抖動(dòng)檢測到按鍵按下后,執(zhí)行延時(shí)10ms子程序后再確認(rèn)該鍵是否確實(shí)按下,消除抖動(dòng)影響。,鍵處理的流程圖,4. 獨(dú)立式按鍵,處理過程查鍵:掃描有否鍵按下,若無鍵按下,返回有鍵按下軟件去抖:延時(shí)20ms找鍵等鍵釋放軟件去抖:延時(shí)20ms,[例1],有鍵按下,返回鍵值;否則,返回0FFH,;準(zhǔn)備輸入,KE2:MOVB,#0 ;保存鍵值0KE3:ANLA,#3FH

13、RRCA;(A.0)?CyJNCKE4INCBSJMPKE3KE4:ORLP1,#3FHMOVA,P1ANLA,#3FHCJNEA,#3FH,KE4MOVA,B ;返回鍵值CJNEA,#06H,KE5KE5:JCKE6 ;Cy=1,(A)=6KE6:RET,KE:ORLP1,#3FH MOVA,P1ANLA

14、,#3FH ;P1.0~P1.5CJNEA,#3FH,KE1SJMPKE7 ;無鍵按下KE1:LCALLDL20 ;延時(shí)去抖ORLP1,#3FH ;修改P1MOVA,P1 ;讀P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7 ;誤動(dòng)作返回,,5. 矩陣式鍵盤,工作方式查詢定時(shí)每隔一段時(shí)間對(duì)鍵盤掃描一次

15、利用單片機(jī)內(nèi)部的定時(shí)器的定時(shí)器溢出中斷。中斷,中斷方式,0000,1 1 1 1,,處理過程鍵掃描確認(rèn)有無按鍵按下去抖動(dòng)延時(shí)按鍵的識(shí)別:確定鍵的行、列號(hào)掃描算法、線反轉(zhuǎn)法鍵號(hào)的確定等待鍵釋放,掃描算法:逐行置低電平,其余各行為高電平,檢查各列電平的變化,如果某列線電平為低電平,即可確定此行列線交叉點(diǎn)處的按鍵被按下。交換行列線的輸出讀取關(guān)系也可以實(shí)現(xiàn)。線反轉(zhuǎn)法:首先,將行線編程為輸入線,列線編程為輸出線,然后使

16、列線線全輸出低電平,讀取行線電平,行線從高電平轉(zhuǎn)為低電平的行線為按下按鍵所在行;然后,將列線編程為輸入線,行線編程為輸出線,然后使行線全輸出低電平,讀取列線電平,列線從高電平轉(zhuǎn)為低電平的列線為按下按鍵所在列。,[例1] 掃描算法,用8255A作單片機(jī)鍵盤接口, A口為輸出口接鍵盤列線。C口為輸入口接鍵盤的4條行線,8255A地址A口:7FFCH B口:7FFDHC口:7FFEH 控制寄存器:7FFFH,子程序 KSI

17、:判定有無閉合鍵的,,KSI:MOVDPTR, #7FFCH;A口地址MOVA, #00HMOVX@DPTR, A;A口送00HINCDPTRINCDPTR;C口地址MOVXA, @DPTR;讀C口CPLA ANLA, #0FH;屏蔽高四位RET,0 0 0 0 0 0 0 0,有閉合鍵,則(A)≠0無閉合, 則(A)=0,1 1 1 1,,,,KEY1:ACAL

18、LKSI;檢查是否有鍵閉合JNZLK1;A非“0”則轉(zhuǎn)移ACALLDLY6;“延時(shí)6msAJMPKEY1LK1:ACALLDLY6;有鍵閉合二次延時(shí)ACALLDLY6;共12ms去抖動(dòng)ACALLKSI;再檢查是否有鍵閉合JNZLK2;有鍵閉合轉(zhuǎn)移到LK2ACALLDLY6AJMPKEY1;無鍵閉合,延時(shí)6ms后轉(zhuǎn)KEY1,有閉合鍵,則(A)≠0無閉

19、合, 則(A)=0,LK2:MOVR2, #0FEH;掃描初值送R2MOVR4, #00H;掃描列號(hào)送R4,第0列LK4:MOVDPTR, # 7FFCH;A口地址MOVA, R2MOVX@DPTR, A;掃描初值送A口INCDPTRINCDPTR;C口地址MOVXA, @DPTR;讀C口,有閉合鍵,則(A)≠0無閉合, 則(A)=0,,0 1 1 1 1 1 1 1,J

20、BACC.0, LONE;ACC.0=1,第0行無鍵閉合,轉(zhuǎn)LONEMOVA, #00H;裝第0行值A(chǔ)JMPLKPLONE:JBACC.1, LTWO;ACC.1=1,第1行無鍵閉合,轉(zhuǎn)LTWOMOVA, #08H;裝第1行值A(chǔ)JMPLKPLTWO:JBACC.2, LTHR;ACC.2=1,第2行無鍵閉合,轉(zhuǎn)LTHRMOVA, #10H;裝第2行值A(chǔ)JMPLKPLTHR:

21、JBACC.3, NEXT;ACC.3=1,第3行無鍵閉合,轉(zhuǎn)NEXT MOVA, #18H;裝第3行值LKP:ADDA, R4;計(jì)算鍵碼PUSHACC;保護(hù)鍵碼LK3:ACALLDIR;延時(shí)6msACALLKSI;檢查是否繼續(xù)閉合,若閉合再延時(shí)JNZLK3POPACC;若鍵起,則鍵碼送A,掃描列號(hào):R4,,,,,NEXT:INCR4;掃描列號(hào)加1MO

22、VA, R2JNBACC.7, KEND;若第7位=0,已掃完最高列則轉(zhuǎn)KNDRLAMOVR2, AAJMPLK4;進(jìn)行下一列掃描KEND:………;掃描完畢,掃描列號(hào):R4,鍵盤/顯示一體 8255接口圖,小結(jié),鍵盤接口工作原理相應(yīng)的程序設(shè)計(jì)方法,實(shí)驗(yàn):鍵盤掃描顯示,74LS245,雙向總線收發(fā)器,74LS273,地址鎖存器,[例2] 靜態(tài)顯示兩位十進(jìn)制數(shù),MOV A, #35H

23、;將顯示數(shù)的BCD碼送累加器AMOV DPTR, #0FEFFH;取顯示口地址MOVX @DPTR, A;送顯示數(shù),,,,0,[例3],,DIR1:MOVA,30H;讀顯示數(shù) MOVB,#100;置除數(shù) DIVAB;產(chǎn)生百位顯示數(shù)字 MOVDPTR,#TABMOVCA,@A+DPTR;讀百位顯示符(段碼/字型碼)

24、 MOVDPTR,#0DFFFH;置74377(百位)地址 MOVX@DPTR,A;輸出百位顯示符(段碼/字型碼) MOVA,B;讀余數(shù) MOVB,#10;置除數(shù) DIVAB;產(chǎn)生十位顯示數(shù)字 MOVDPTR,#TAB;置共陽字段碼表首址 MOV

25、C A,@A+DPTR ;讀十位顯示符(段碼/字型碼) MOVDPTR,#0BFFFH;置74377(十位)地址 MOVX @DPTR,A;輸出十位顯示符(段碼/字型碼),顯示存在內(nèi)RAM中30H開始的數(shù)據(jù)(≤255),,,,,,,MOVA,B;讀個(gè)位顯示數(shù)字MOVDPTR,#TAB;置共陽字段碼表首址MOVCA,@A+DPTR;讀

26、個(gè)位顯示符MOVDPTR,#7FFFH;置74377(個(gè)位)地址MOVX@DPTR,A;輸出個(gè)位顯示符RET;共陽字段碼表TAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H;,,,,,[例2] 線反轉(zhuǎn)法,KEY:MOVP1, #0F0H;行線置低電平,列線置輸入態(tài)KEY0:MOVA, P1;讀列線數(shù)據(jù)CPLA

27、;數(shù)據(jù)取反,“1”有效ANLA, #0F0H;屏蔽行線,保留列線數(shù)據(jù)MOVR1, A;存列線數(shù)據(jù)(R1高4位)JZGRET;全0,無鍵按下,返回KEY1:MOVP1, #0FH;行線置輸入態(tài),列線置低電平MOVA, P1;讀行線數(shù)據(jù) CPLA;數(shù)據(jù)取反,“1”有效ANLA, #0FH;屏蔽列線,保留行線數(shù)據(jù)MOVR2, A;存行線數(shù)據(jù)(R2低4位)

28、JZGRET;全0,無鍵按下,返回JBCF0, WAIT;已有消抖標(biāo)志,轉(zhuǎn)SETBF0;無消抖標(biāo)志,置消抖標(biāo)志 LCALLDY10ms;調(diào)用10ms延時(shí)子程序消抖SJMPKEY0;重讀行線列線數(shù)據(jù)GRET:RET,參考程序:,WAIT:MOVA, P1;等待按鍵釋放CPLA ANLA, #0FHJNZWAIT;按鍵未釋

29、放,繼續(xù)等待KEY2:MOVA, R1;取列線數(shù)據(jù)(高4位)MOVR1, #03H;取列線編號(hào)初值MOVR3, #03H;置循環(huán)數(shù)CLRCKEY3:RLCA;依次左移入C中JCKEY4;C=1,該列有鍵按下,(列線編號(hào)存R1)DECR1;C=0,無鍵按下,修正列編號(hào)DJNZR3, KEY3;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的列線KEY4:MOVA

30、, R2;取行線數(shù)據(jù)(低4位)MOVR2, #00H;置行線編號(hào)初值MOVR3, #03H;置循環(huán)數(shù)CLRC KEY5:RRCA;依次右移入C中JCKEY6;C=1,該行有鍵按下,(行線編號(hào)存R2)INCR2;C=0,無鍵按下,修正行線編號(hào)DJNZR3, KEY5;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的行線,KEY6:MOVA, R

31、2;取行線編號(hào)CLRC RLCA;行編號(hào)×2RLCA;行編號(hào)×4ADDA, R1;行編號(hào)×4+列編號(hào)=按鍵編號(hào)KEY7:CLRC RLCA;按鍵編號(hào)×2RLCA;按鍵編號(hào)×4(LCALL+ RET共4字節(jié))MOVDPTR, #TABJ J

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論