版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 鍵盤顯示及模擬量通道技術,8.1 鍵盤/顯示器接口擴展技術8.2 模擬量I/O通道,8.1 鍵盤/顯示器接口擴展技術,8.1.1 顯示器結構與工作原理8.1.2 鍵盤接口工作原理,8.1.1 顯示器結構與工作原理,顯示器概述作用顯示單片機的運行結果與運行狀態(tài)分類LED(發(fā)光二極管):亮度清晰、成本低、控制簡單LCD(液晶):功耗低CRT(陰極射線管):圖形顯示方便使用場合電子顯示屏、工業(yè)測控領域、儀器儀表、
2、電子鐘、家用電器等,LED數(shù)碼管顯示器結構,LED數(shù)碼管顯示原理與段碼,11111100,00000011,共陽段碼表,共陰段碼表,3FH,C0H,,,,顯示代碼表,LED數(shù)碼顯示方法,靜態(tài)動態(tài),2. 靜態(tài)顯示法接口設計,靜態(tài)顯示每個顯示器各筆畫段都獨占具有鎖存功能的輸出口線因為各筆畫段接口具有鎖存功能,CPU不再去訪問它,顯示的內(nèi)容也不會消失優(yōu)點程序簡單,顯示亮度大,節(jié)約了CPU時間缺點占用
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)顯示應用,,,靜態(tài)顯示應用,3. 動態(tài)掃描顯示法接口設計,動態(tài)掃描顯示對于一組LED數(shù)碼顯示器需要兩組信號來控制段碼:字段輸出口輸出的字形代碼位碼:
6、輸出口的控制信號,選擇第幾位顯示器工作一位一位地顯示器數(shù)碼——動態(tài)掃描顯示利用人的 “視覺暫留效應”顯示刷新的頻率達到30Hz以上,否則會出現(xiàn)閃爍,[例1] 8255A作顯示器接口,要求6個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個顯示器,位選點亮的初始碼,程序,,,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;指向下一個顯示緩沖MOVA,R2JBACC.5, EXIT;到第6個數(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 鍵盤接口工作原理,鍵盤人機交互的一個重要工具兩種基本類型編碼鍵盤除了按鍵以外,還包括產(chǎn)生鍵碼的硬件電路使用方便、價格較高 非編碼鍵盤靠軟件來識別鍵盤上的閉合鍵,由此計算出編碼幾乎不需要附加硬件邏輯在單片機應用系統(tǒng)中被普遍使用,1. 非編碼鍵盤的工作原理,分類硬件編碼式鍵盤、二維直讀式鍵盤獨立式鍵盤〔簡單鍵盤〕、行列式鍵盤(矩陣式鍵盤),獨立式按鍵
11、 行列式鍵盤,,0 1 1 1,1 0 1 1,1 1 0 1,1 1 1 0,2. 按鍵開關去抖動問題,按鍵抖動在按下和釋放時,按鍵有抖動按鍵時間:>100ms前跳沿和后跳沿:<20ms,抖動時間一般為5~10ms,A,為確保:對鍵的一次閉合僅作一次處理必須:去除抖動,3. 消除抖動不良后果的方法,⑴ 硬件去抖動
12、RC濾波電路去抖動電路簡單實用,效果較好。⑵ 軟件去抖動檢測到按鍵按下后,執(zhí)行延時10ms子程序后再確認該鍵是否確實按下,消除抖動影響。,鍵處理的流程圖,4. 獨立式按鍵,處理過程查鍵:掃描有否鍵按下,若無鍵按下,返回有鍵按下軟件去抖:延時20ms找鍵等鍵釋放軟件去抖:延時20ms,[例1],有鍵按下,返回鍵值;否則,返回0FFH,;準備輸入,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 ;延時去抖ORLP1,#3FH ;修改P1MOVA,P1 ;讀P1ANLA,#3FHCJNEA,#3FH,KE2SJMPKE7 ;誤動作返回,,5. 矩陣式鍵盤,工作方式查詢定時每隔一段時間對鍵盤掃描一次
15、利用單片機內(nèi)部的定時器的定時器溢出中斷。中斷,中斷方式,0000,1 1 1 1,,處理過程鍵掃描確認有無按鍵按下去抖動延時按鍵的識別:確定鍵的行、列號掃描算法、線反轉法鍵號的確定等待鍵釋放,掃描算法:逐行置低電平,其余各行為高電平,檢查各列電平的變化,如果某列線電平為低電平,即可確定此行列線交叉點處的按鍵被按下。交換行列線的輸出讀取關系也可以實現(xiàn)。線反轉法:首先,將行線編程為輸入線,列線編程為輸出線,然后使
16、列線線全輸出低電平,讀取行線電平,行線從高電平轉為低電平的行線為按下按鍵所在行;然后,將列線編程為輸入線,行線編程為輸出線,然后使行線全輸出低電平,讀取列線電平,列線從高電平轉為低電平的列線為按下按鍵所在列。,[例1] 掃描算法,用8255A作單片機鍵盤接口, 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”則轉移ACALLDLY6;“延時6msAJMPKEY1LK1:ACALLDLY6;有鍵閉合二次延時ACALLDLY6;共12ms去抖動ACALLKSI;再檢查是否有鍵閉合JNZLK2;有鍵閉合轉移到LK2ACALLDLY6AJMPKEY1;無鍵閉合,延時6ms后轉KEY1,有閉合鍵,則(A)≠0無閉
19、合, 則(A)=0,LK2:MOVR2, #0FEH;掃描初值送R2MOVR4, #00H;掃描列號送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行無鍵閉合,轉LONEMOVA, #00H;裝第0行值AJMPLKPLONE:JBACC.1, LTWO;ACC.1=1,第1行無鍵閉合,轉LTWOMOVA, #08H;裝第1行值AJMPLKPLTWO:JBACC.2, LTHR;ACC.2=1,第2行無鍵閉合,轉LTHRMOVA, #10H;裝第2行值AJMPLKPLTHR:
21、JBACC.3, NEXT;ACC.3=1,第3行無鍵閉合,轉NEXT MOVA, #18H;裝第3行值LKP:ADDA, R4;計算鍵碼PUSHACC;保護鍵碼LK3:ACALLDIR;延時6msACALLKSI;檢查是否繼續(xù)閉合,若閉合再延時JNZLK3POPACC;若鍵起,則鍵碼送A,掃描列號:R4,,,,,NEXT:INCR4;掃描列號加1MO
22、VA, R2JNBACC.7, KEND;若第7位=0,已掃完最高列則轉KNDRLAMOVR2, AAJMPLK4;進行下一列掃描KEND:………;掃描完畢,掃描列號:R4,鍵盤/顯示一體 8255接口圖,小結,鍵盤接口工作原理相應的程序設計方法,實驗:鍵盤掃描顯示,74LS245,雙向總線收發(fā)器,74LS273,地址鎖存器,[例2] 靜態(tài)顯示兩位十進制數(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;讀個位顯示數(shù)字MOVDPTR,#TAB;置共陽字段碼表首址MOVCA,@A+DPTR;讀
26、個位顯示符MOVDPTR,#7FFFH;置74377(個位)地址MOVX@DPTR,A;輸出個位顯示符RET;共陽字段碼表TAB:DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H;,,,,,[例2] 線反轉法,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;已有消抖標志,轉SETBF0;無消抖標志,置消抖標志 LCALLDY10ms;調(diào)用10ms延時子程序消抖SJMPKEY0;重讀行線列線數(shù)據(jù)GRET:RET,參考程序:,WAIT:MOVA, P1;等待按鍵釋放CPLA ANLA, #0FHJNZWAIT;按鍵未釋
29、放,繼續(xù)等待KEY2:MOVA, R1;取列線數(shù)據(jù)(高4位)MOVR1, #03H;取列線編號初值MOVR3, #03H;置循環(huán)數(shù)CLRCKEY3:RLCA;依次左移入C中JCKEY4;C=1,該列有鍵按下,(列線編號存R1)DECR1;C=0,無鍵按下,修正列編號DJNZR3, KEY3;判循環(huán)結束否?未結束繼續(xù)尋找有鍵按下的列線KEY4:MOVA
30、, R2;取行線數(shù)據(jù)(低4位)MOVR2, #00H;置行線編號初值MOVR3, #03H;置循環(huán)數(shù)CLRC KEY5:RRCA;依次右移入C中JCKEY6;C=1,該行有鍵按下,(行線編號存R2)INCR2;C=0,無鍵按下,修正行線編號DJNZR3, KEY5;判循環(huán)結束否?未結束繼續(xù)尋找有鍵按下的行線,KEY6:MOVA, R
31、2;取行線編號CLRC RLCA;行編號×2RLCA;行編號×4ADDA, R1;行編號×4+列編號=按鍵編號KEY7:CLRC RLCA;按鍵編號×2RLCA;按鍵編號×4(LCALL+ RET共4字節(jié))MOVDPTR, #TABJ J
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論