uC 2012 Ch8-1鍵盤顯示sxj (2)課件_第1頁
uC 2012 Ch8-1鍵盤顯示sxj (2)課件_第2頁
uC 2012 Ch8-1鍵盤顯示sxj (2)課件_第3頁
uC 2012 Ch8-1鍵盤顯示sxj (2)課件_第4頁
uC 2012 Ch8-1鍵盤顯示sxj (2)課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章鍵盤顯示及模擬量通道技術8.1鍵盤/顯示器接口擴展技術8.2模擬量I/O8.1鍵盤/顯示器接口擴展技術8.1.1顯示器結構與工作原理8.1.2鍵盤接口工作原理8.1.1顯示器結構與工作原理顯示器概述作用顯示單片機的運行結果與運行狀態(tài)分類LED(發(fā)光二極管):亮度清晰、成本低、控制簡單LCD(液晶):功耗低CRT(陰極射線管):圖形顯示方便使用場合電子顯示屏、工業(yè)測控領域、儀器儀表、電子鐘、家用電器等LED數碼管顯示原理與段碼1111110000000011共陽段碼表共陰段碼表3FHC0H顯示代碼表LED數碼顯示方法靜態(tài)動態(tài)典型靜態(tài)顯示接口圖一程序(1):8位顯示,顯示緩沖30H-37H,用串口方式0DIS: MOVSCON,#00H MOVR0,#30H MOVR7,#08H MOVDPTR,#TABLP: MOVA,@R0

MOVC A,@A+DPTR

MOVSBUF,A JNBTI,$

CLRTI INCR0 DJNZR7,LP

RETTAB: DB3FH,06H,…… CLK BITP1.0 DAB BITP1.1DIS: MOV R0,#30H

MOV R7,#08H MOV DPTR,#TABLP: MOV A,@R0 MOVC A,@A+DPTR

MOV R6,#08H程序(2):8位顯示:顯示緩沖30H-37H,用P1.0-CLK,P1.1-DABLP0: CLR CLK RRC A ;循環(huán)右移 MOV DAB,C

SETB CLK DJNZ R6,LP0 INC R0 DJNZ R7,LP RETTAB: DB3FH,06H,……

P1.0P1.1靜態(tài)顯示應用靜態(tài)顯示應用3.動態(tài)掃描顯示法接口設計動態(tài)掃描顯示對于一組LED數碼顯示器需要兩組信號來控制段碼:字段輸出口輸出的字形代碼位碼:輸出口的控制信號,選擇第幾位顯示器工作一位一位地顯示器數碼——動態(tài)掃描顯示利用人的“視覺暫留效應”顯示刷新的頻率達到30Hz以上,否則會出現閃爍8255的口地址A口:7FFCHB口:7FFDHC口:7FFEH控制寄存器:7FFFH段控位控共陽極MODE: MOV A,#80H ;10000000B=80HA、C口基本輸出 MOV DPTR,#7FFFH ;控制字

MOVX @DPTR,ADISP: MOV R0,#30H ;顯示緩沖 MOV R2,#01H ;6個顯示器,位選點亮的初始碼程序8255A初始化共陽極 INC R0 ;指向下一個顯示緩沖 MOV A,R2

JB ACC.5,EXIT ;到第6個數碼管了?

RL A MOV R2,A AJMP LOOPEXIT: RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H,88H,83H,0C6H,0A1H,86H,8EH,8CH,0BFH,0FFH8.1.2鍵盤接口工作原理鍵盤人機交互的一個重要工具兩種基本類型編碼鍵盤除了按鍵以外,還包括產生鍵碼的硬件電路使用方便、價格較高非編碼鍵盤靠軟件來識別鍵盤上的閉合鍵,由此計算出編碼幾乎不需要附加硬件邏輯在單片機應用系統(tǒng)中被普遍使用1.

非編碼鍵盤的工作原理分類硬件編碼式鍵盤、二維直讀式鍵盤獨立式鍵盤〔簡單鍵盤〕、行列式鍵盤(矩陣式鍵盤)獨立式按鍵行列式鍵盤01111011110111103.消除抖動不良后果的方法⑴硬件去抖動RC濾波電路去抖動電路簡單實用,效果較好。⑵軟件去抖動檢測到按鍵按下后,執(zhí)行延時10ms子程序后再確認該鍵是否確實按下,消除抖動影響。鍵處理的流程圖

4.獨立式按鍵處理過程查鍵:掃描有否鍵按下,若無鍵按下,返回有鍵按下軟件去抖:延時20ms找鍵等鍵釋放軟件去抖:延時20ms;準備輸入等放去抖查鍵KE2: MOV B,#0 ;保存鍵值0KE3: ANL A,#3FH RRC A ;(A.0)Cy JNC KE4

INC B SJMP KE3KE4: ORL P1,#3FH MOV A,P1 ANL A,#3FH CJNE A,#3FH,KE4

MOV A,B ;返回鍵值

CJNE A,#06H,KE5KE5: JC KE6 ;Cy=1,(A)<6KE7: MOV A,#0FFH;(A)>=6KE6: RETKE: ORL P1,#3FH

MOV A,P1 ANL A,#3FH ;P1.0~P1.5 CJNE A,#3FH,KE1 SJMP KE7 ;無鍵按下KE1: LCALL DL20 ;延時去抖

ORL P1,#3FH;修改P1 MOV A,P1 ;讀P1 ANL A,#3FH CJNE A,#3FH,KE2 SJMP KE7 ;誤動作返回找鍵5.矩陣式鍵盤工作方式查詢定時每隔一段時間對鍵盤掃描一次利用單片機內部的定時器的定時器溢出中斷。中斷中斷方式00001111處理過程鍵掃描確認有無按鍵按下去抖動延時按鍵的識別:確定鍵的行、列號掃描算法、線反轉法鍵號的確定等待鍵釋放掃描算法:逐行置低電平,其余各行為高電平,檢查各列電平的變化,如果某列線電平為低電平,即可確定此行列線交叉點處的按鍵被按下。交換行列線的輸出讀取關系也可以實現。線反轉法:首先,將行線編程為輸入線,列線編程為輸出線,然后使列線線全輸出低電平,讀取行線電平,行線從高電平轉為低電平的行線為按下按鍵所在行;然后,將列線編程為輸入線,行線編程為輸出線,然后使行線全輸出低電平,讀取列線電平,列線從高電平轉為低電平的列線為按下按鍵所在列。[例1]掃描算法用8255A作單片機鍵盤接口,A口為輸出口接鍵盤列線。C口為輸入口接鍵盤的4條行線8255A地址 A口:7FFCH

B口:7FFDH

C口:7FFEH 控制寄存器:7FFFH子程序KSI:判定有無閉合鍵的KSI: MOV DPTR,#7FFCH

;A口地址 MOV A,#00H MOVX @DPTR,A

;A口送00H INC DPTR INC DPTR

;C口地址 MOVX A,@DPTR

;讀C口 CPL A ANL A,#0FH

;屏蔽高四位 RET00000000有閉合鍵,則(A)≠0無閉合,則(A)=01111KEY1: ACALL KSI

;檢查是否有鍵閉合 JNZ LK1

;A非“0”則轉移 ACALL DLY6

;“延時6ms AJMP KEY1LK1: ACALL DLY6

;有鍵閉合二次延時 ACALL DLY6

;共12ms去抖動

ACALL KSI

;再檢查是否有鍵閉合 JNZ LK2

;有鍵閉合轉移到LK2 ACALL DLY6 AJMP KEY1

;無鍵閉合,延時6ms后轉KEY1有閉合鍵,則(A)≠0無閉合,則(A)=0LK2: MOV R2,#0FEH

;掃描初值送R2 MOV R4,#00H

;掃描列號送R4,第0列LK4: MOV DPTR,#7FFCH

;A口地址

MOV A,R2 MOVX @DPTR,A

;掃描初值送A口 INC DPTR INC DPTR

;C口地址 MOVX A,@DPTR

;讀C口有閉合鍵,則(A)≠0無閉合,則(A)=001111111 JB ACC.0,LONE

;ACC.0=1,第0行無鍵閉合,轉LONE MOV A,#00H

;裝第0行值 AJMP LKPLONE: JB ACC.1,LTWO

;ACC.1=1,第1行無鍵閉合,轉LTWO MOV A,#08H

;裝第1行值 AJMP LKPLTWO: JB ACC.2,LTHR

;ACC.2=1,第2行無鍵閉合,轉LTHR MOV A,#10H

;裝第2行值 AJMP LKPLTHR: JB ACC.3,NEXT

;ACC.3=1,第3行無鍵閉合,轉NEXT MOV A,#18H

;裝第3行值LKP: ADD A,R4

;計算鍵碼 PUSH ACC

;保護鍵碼LK3: ACALL DIR

;延時6ms ACALL KSI

;檢查是否繼續(xù)閉合,若閉合再延時 JNZ LK3 POP ACC ;若鍵起,則鍵碼送A掃描列號:R4NEXT: INC R4

;掃描列號加1

MOV A,R2 JNB ACC.7,KEND

;若第7位=0,已掃完最高列則轉KND RL A MOV R2,A AJMP LK4

;進行下一列掃描KEND: ………

;掃描完畢掃描列號:R4鍵盤/顯示一體8255接口圖小結鍵盤接口工作原理相應的程序設計方法實驗:鍵盤掃描顯示74LS245雙向總線收發(fā)器74LS273地址鎖存器[例2]靜態(tài)顯示兩位十進制數MOV A,#35H ;將顯示數的BCD碼送累加器AMOV DPTR,#0FEFFH ;取顯示口地址MOVX@DPTR,A ;送顯示數0[例3]DIR1: MOV A,30H ;讀顯示數

MOV B,#100 ;置除數

DIV AB ;產生百位顯示數字

MOV DPTR,#TAB

MOVC A,@A+DPTR ;讀百位顯示符(段碼/字型碼)

MOV DPTR,#0DFFFH ;置74377(百位)地址

MOVX @DPTR,A ;輸出百位顯示符(段碼/字型碼)

MOV A,B ;讀余數

MOV B,#10 ;置除數

DIV AB ;產生十位顯示數字

MOV DPTR,#TAB ;置共陽字段碼表首址

MOVCA,@A+DPTR ;讀十位顯示符(段碼/字型碼)

MOV DPTR,#0BFFFH ;置74377(十位)地址

MOVX@DPTR,A ;輸出十位顯示符(段碼/字型碼)

顯示存在內RAM中30H開始的數據(≤255)

MOV A,B ;讀個位顯示數字

MOV DPTR,#TAB ;置共陽字段碼表首址

MOVC A,@A+DPTR ;讀個位顯示符

MOV DPTR,#7FFFH ;置74377(個位)地址

MOVX @DPTR,A ;輸出個位顯示符

RET ;共陽字段碼表TAB: DB0C0H,0F9H,0A4H,0B0H,99H DB92H,82H,0F8H,80H,90H;[例2]線反轉法KEY: MOV P1,#0F0H ;行線置低電平,列線置輸入態(tài)KEY0: MOV A,P1 ;讀列線數據

CPL A ;數據取反,“1”有效

ANL A,#0F0H ;屏蔽行線,保留列線數據

MOV R1,A ;存列線數據(R1高4位) JZ GRET ;全0,無鍵按下,返回KEY1: MOV P1,#0FH ;行線置輸入態(tài),列線置低電平

MOV A,P1 ;讀行線數據

CPL A ;數據取反,“1”有效

ANL A,#0FH ;屏蔽列線,保留行線數據

MOV R2,A ;存行線數據(R2低4位) JZ GRET ;全0,無鍵按下,返回

JBC F0,WAIT ;已有消抖標志,轉

SETB F0 ;無消抖標志,置消抖標志

LCALL DY10ms ;調用10ms延時子程序消抖

SJMP KEY0 ;重讀行線列線數據GRET: RET參考程序:WAIT: MOV A,P1 ;等待按鍵釋放

CPL A ANL A,#0FH

JNZ WAIT ;按鍵未釋放,繼續(xù)等待KEY2: MOV A,R1 ;取列線數據(高4位) MOV R1,#03H ;取列線編號初值

MOV R3,#03H ;置循環(huán)數

CLR CKEY3: RLC A ;依次左移入C中

JC KEY4 ;C=1,該列有鍵按下,(列線編號存R1) DEC R1 ;C=0,無鍵按下,修正列編號

DJNZ R3,KEY3 ;判

溫馨提示

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

最新文檔

評論

0/150

提交評論