




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章-LED顯示與鍵盤接口10.2鍵盤接口工作原理10.2鍵盤接口工作原理鍵盤人機交互的一個重要工具兩種基本類型編碼鍵盤除了按鍵以外,還包括產生鍵碼的硬件電路使用方便、價格較高非編碼鍵盤靠軟件來識別鍵盤上的閉合鍵,由此計算出編碼幾乎不需要附加硬件邏輯在單片機應用系統中被普遍使用1.
非編碼鍵盤的工作原理分類硬件編碼式鍵盤、二維直讀式鍵盤獨立式鍵盤〔簡單鍵盤〕、行列式鍵盤(矩陣式鍵盤)獨立式按鍵行列式鍵盤01111011110111102.按鍵開關去抖動問題按鍵抖動在按下和釋放時,按鍵有抖動按鍵時間:>100ms前跳沿和后跳沿:<20ms,抖動時間一般為5~10msA為確保:對鍵的一次閉合僅作一次處理必須:去除抖動3.消除抖動不良后果的方法⑴硬件去抖動RC濾波電路去抖動電路簡單實用,效果較好。⑵軟件去抖動檢測到按鍵按下后,執行延時10ms子程序后再確認該鍵是否確實按下,消除抖動影響。鍵處理的流程圖
4.獨立式按鍵處理過程查鍵:掃描有否鍵按下,若無鍵按下,返回有鍵按下軟件去抖:延時20ms找鍵等鍵釋放軟件去抖:延時20ms[例1]有鍵按下,返回鍵值;否則,返回0FFHP10P118051
K1P12P13P14P15K2K3K4K5K6+5V;準備輸入等放去抖查鍵KE2: CLR C 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 DIR
;顯示一次LED(“延時6ms”)
AJMP KND ;無鍵閉合,延時6ms后退出LK1: ACALL DIR
;有鍵閉合二次延時 ACALL DIR
;共12ms去抖動
ACALL KSI
;再檢查是否有鍵閉合 JNZ LK2
;有鍵閉合轉移到LK2 ACALL DIR
AJMP KND
;無鍵閉合,延時6ms后退出有鍵閉合,則(A)≠0無鍵閉合,則(A)=0鍵盤掃描程序KEY1返回時,
(F0)=1:無鍵閉合、(F0)=0:有鍵閉合
(A)=鍵值(閉合的鍵的編號)KND: SETB F0 ;無鍵標志 RET
;掃描完畢LK2: CLR F0 ;有鍵標志 MOV R2,#0FEH
;掃描初值送R2 MOV R4,#00H
;掃描列號送R4LK4: MOV DPTR,#7FFCH
;A口地址
MOV A,R2 MOVX @DPTR,A
;掃描初值送A口 INC DPTR INC DPTR
;C口地址 MOVX A,@DPTR
;讀C口有閉合鍵,則(A)≠0無閉合,則(A)=001111111KEY1: ACALL KSI
;檢查是否有鍵閉合 JNZ LK1
;A非“0”則轉移 ACALL DIR
;顯示一次LED(“延時6ms”) AJMP KEY1LK1: ACALL DIR
;有鍵閉合二次延時 ACALL DIR
;共12ms去抖動
ACALL KSI
;再檢查是否有鍵閉合 JNZ LK2
;有鍵閉合轉移到LK2 ACALL DIR AJMP KEY1
;無鍵閉合,延時6ms后轉KEY1LK2: MOV R2,#0FEH
;掃描初值送R2 MOV R4,#00H
;掃描列號送R4LK4: 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
;檢查是否繼續閉合,若閉合再延時 JNZ LK3 POP ACC ;若鍵起,則鍵碼送A RET掃描列號:R4NEXT: INC R4
;掃描列號加1
MOV A,R2 JNB ACC.7,KND
;若第7位=0,已掃完最高列則轉KND RL A MOV R2,A AJMP LK4
;掃描下一列KND: SETB F0 ;無鍵標志 RET
;掃描完畢掃描列號:R4A、R21111111011111101111110111111011111101111110111111011111101111111[例2]線反轉法KEY: MOV P1,#0F0H ;行線置低電平,列線置輸入態KEY0: MOV A,P1 ;讀列線數據
CPL A ;數據取反,“1”有效
ANL A,#0F0H ;屏蔽行線,保留列線數據
MOV R1,A ;存列線數據(R1高4位) JZ GRET ;全0,無鍵按下,返回KEY1: MOV P1,#0FH ;行線置輸入態,列線置低電平
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 ;按鍵未釋放,繼續等待KEY2: MOV A,R1 ;取列線數據(高4位) MOV R1,#03H ;取列線編號初值
MOV R3,#03H ;置循環數
CLR CKEY3: RLC A ;依次左移入C中
JC KEY4 ;C=1,該列有鍵按下,(列線編號存R1) DEC R1 ;C=0,無鍵按下,修正列編號
DJNZ R3,KEY3 ;判循環結束否?未結束繼續尋找有鍵按下的列線KEY4: MOV A,R2 ;取行線數據(低4位) MOV R2,#00H ;置行線編號初值
MOV R3,#03H ;置循環數
CLR CKEY5: RRC A ;依次右移入C中
JC KEY6 ;C=1,該行有鍵按下,(行線編號存R2) INC R2 ;C=0,無鍵按下,修正行線編號
DJNZ R3,KEY5 ;判循環結束否?未結束繼續尋找有鍵按下的行線KEY6: MOV A,R2 ;取行線編號
CLR C RLC A ;行編號×2 RLC A ;行編號×4 ADD A,R1 ;行編號×4+列編號=按鍵編號KEY7: CLR C RLC A ;按鍵編號×2 RLC A ;按鍵編號×4(LC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (高清版)DB31∕T 1494-2024 蔬菜價格信息采集與應用技術要求
- Win-45164-生命科學試劑-MCE
- 數字校園建設方案
- 會務服務技能試題及答案
- 企業誠信承諾書模板
- 企業安全員考證題庫及答案
- 企業保衛工作試題及答案
- 2025年項目竣工環境保護驗收報告
- 2025年農村電商農產品上行模式創新實踐與品牌塑造實操手冊報告
- 哲學學碩考試題庫及答案
- 全國班主任比賽一等獎《高三班主任經驗交流》課件
- 集訓01 中國古代史選擇題100題(原卷版)
- 兒康家長培訓內容
- 2024年商城縣人民醫院高層次衛技人才招聘筆試歷年參考題庫頻考點附帶答案
- (已壓縮)礦產資源儲量技術標準解讀300問-1-90
- 【MOOC】國際貿易實務-上海對外經貿大學 中國大學慕課MOOC答案
- 青馬工程培訓班課件
- 專題29 提高創新思維能力-五年(2020-2024)高考政治真題分類匯編(解析版)
- 幼兒園中班彩虹泡泡龍課件
- 藝術教學課件模板
- 《香包的制作》教學設計(課比賽教案)()
評論
0/150
提交評論