




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第8章 單片機(jī)與顯示器和鍵盤(pán)的接口,8.1 鍵盤(pán)接口 鍵盤(pán)實(shí)際上是由排列成矩陣形式的一系列按鍵開(kāi)關(guān)組成, 用戶通過(guò)鍵盤(pán)可以向CPU輸入數(shù)據(jù)、地址和命令。 鍵盤(pán)按其結(jié)構(gòu)形式可分為: 編碼式鍵盤(pán)和非編碼式鍵盤(pán)兩類。 單片機(jī)系統(tǒng)中普遍使用非編碼式鍵盤(pán), 這類鍵盤(pán)主要解決以下幾個(gè)問(wèn)題: 鍵的識(shí)別; 如何消除鍵的抖動(dòng); 鍵的保護(hù)。,1. 非編碼式鍵盤(pán)工作原理 非編碼式鍵盤(pán)識(shí)別按鍵的方法有兩種: 一是行掃描法, 二是線反轉(zhuǎn)法。 1) 行掃描法 通過(guò)行線發(fā)出低電平信號(hào), 如果該行線所連接的鍵沒(méi)有按下的話, 則列線所接的端口得到的是全“1”信號(hào), 如果有鍵按下的話, 則得到非全“1”信號(hào)。 為了防止雙鍵或多鍵
2、同時(shí)按下, 往往從第 0 行一直掃描到最后 1 行, 若只發(fā)現(xiàn) 1 個(gè)閉合鍵, 則為有效鍵, 否則全部作廢。 找到閉合鍵后, 讀入相應(yīng)的鍵值, 再轉(zhuǎn)至相應(yīng)的鍵處理程序。,2) 線反轉(zhuǎn)法 線反轉(zhuǎn)法也是識(shí)別閉合鍵的一種常用方法, 該法比行掃描速度快, 但在硬件上要求行線與列線外接上拉電阻。 先將行線作為輸出線, 列線作為輸入線, 行線輸出全“0”信號(hào), 讀入列線的值, 然后將行線和列線的輸入輸出關(guān)系互換, 并且將剛才讀到的列線值從列線所接的端口輸出, 再讀取行線的輸入值。那么在閉合鍵所在的行線上值必為 0。這樣, 當(dāng)一個(gè)鍵被按下時(shí), 必定可讀到一對(duì)唯一的行列值。,2. 鍵盤(pán)接口電路,圖 8.1 采
3、用8155的鍵盤(pán)接口電路,下面的程序是用行掃描法進(jìn)行鍵掃描的程序, 其中KS1 為判鍵閉合的子程序。 有鍵閉合時(shí)(A)=0。 DIR為數(shù)碼顯示器掃描顯示子程序, 執(zhí)行一遍的時(shí)間約6 ms。 程序執(zhí)行后, 若鍵閉合, 鍵值存入A中, 鍵值的計(jì)算公式是: 鍵值=行號(hào)4+列號(hào); 若無(wú)鍵閉合, 則A中存入標(biāo)志FFH。,KEY1:LCALL KS1 ; 檢查有無(wú)閉合鍵? JNZ LK1 ; (A)=0, 有鍵閉合則轉(zhuǎn) LJMP LK8 ; 無(wú)閉合鍵則返回 LK1: LCALL DIR ; 延時(shí) 12 ms LCALL DIR ; 清抖 LCALL LS1 ; 再檢查有鍵閉合否? JNZ LK2 ; 有鍵
4、閉合則轉(zhuǎn) LJMP LK8 ; 無(wú)鍵閉合則返回,LK2: MOV R3, 00H ; 行號(hào)初值送R3 MOV R2, FEH ; 行掃描初值送R2 LK3: MOV DPTR, 0101H ; 指向 8155 口A MOV A, R2 ; 行掃描值送A MOVX DPTR, A ; 掃描 1 行 INC DPTR INC DPTR ; 指向 8155 口C MOVX A, DPTR ; 讀入列值 ANL A, 0FH ; 保留低 4 位 MOV R4, A ; 暫存列值 CJNZ A, 0FH, LK4 ; 列值非全“1”則轉(zhuǎn) MOV A, R2 ; 行掃描值送A,JNB ACC.7, LK8
5、 ; 掃至最后一行則轉(zhuǎn) RL A ; 未掃完, 則移至下一行 MOV R2, A ; 行值存入R2 中 INC R3 ; 行號(hào)加 1 SJMP LK3 ; 轉(zhuǎn)至掃描下一行 LK4: MOV A, R3 ; 行號(hào)送入A ADD A, R3 ; 行號(hào)2 MOV R5, A ADD A, R5 ; 行號(hào)4 MOV R5, A ; 存入R5 中 MOV A, R4 ; 列值送A,LK5: RRC A ; 右移一位 JNC LK6 ; 該位為 0 則轉(zhuǎn) INC R5 ; 列號(hào)加 1 SJMP LK5 ; 列號(hào)未判完則繼續(xù) LK6: MOV 20H, R5; 存鍵值 LK7: LCALL DIR ; 掃描
6、一遍顯示器 LCALL KS1 ; 發(fā)掃描信號(hào) JNZ LK7 ; 鍵未釋放等待 LCALL DIR ; 鍵已釋放 LCALL DIR ; 延時(shí) 12 ms, 清抖 MOV A, 20H ; 鍵值存入A中 KND: RET,LK8: MOV A, FFH ; 無(wú)鍵標(biāo)志FFH存入A中 RET KS1: MOV DPTR, 0101H ; 判鍵子程序 MOV A, 00H ; 全掃描信號(hào) MOVX DPTR, A ; 發(fā)全掃描信號(hào) INC DPTR INC DPTR ; 指向8155口C MOVX A, DPTR ; 讀入列值 ANL A, 0FH ; 保留低4位 ORL A, F0H ; 高4位
7、取“1” CPL A ; 取反, 無(wú)鍵按下則全“0” RET,最簡(jiǎn)單的鍵盤(pán)、指示燈擴(kuò)展法,8.2 LED顯示器接口,1. LED顯示器結(jié)構(gòu)與原理,圖 8.2 7段LED數(shù)碼顯示器,各段碼位的對(duì)應(yīng)關(guān)系如下:,表 8.1十六進(jìn)制數(shù)及空白與P的顯示段碼,2. LED顯示器接口電路,圖 8.3 6 位動(dòng)態(tài)顯示器接口,圖 8.4 顯示子程序流程圖,程序清單如下:,DIR: MOV R0, 79H ; 顯示緩沖區(qū)首址送R0 MOV R3, 01H ; 使顯示器最右邊位亮 MOV A, R3 LD0: MOV DPTR, 0101H ; 掃描值送PA口 MOVX DPTR, A INC DPTR ; 指向P
8、B口 MOV A, R0 ; 取顯示數(shù)據(jù) ADD A, 12H ; 加上偏移量 MOVX A, A+PC ; 取出字形 MOVX DPTR, A ; 送出顯示,ACALL DL1; 延時(shí) INC R0; 緩沖區(qū)地址加 1 MOV A, R3; JB ACC.5, LD1; 掃到第 6 個(gè)顯示位了嗎? RL A ; 沒(méi)有, R3 左環(huán)移一位, 掃描下一個(gè)顯示位 MOV R3, A AJMP LD0 LD1: RET DSEG: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH ; 顯示段碼表 DSEG1: DB 7DH, 07H, 7FH, 6FH, 77H, 7CH,DSEG2:
9、 DB 39H, 5EH, 79H, 71H, 73H, 3EH DSEG3: DB 31H, 61H, 1CH, 23H, 40H, 03H DSEG4: DB 18H, 00H, 00H, 00H DL1: MOV R7, 02HDW; 延時(shí)子程序 DL: MOV R6, 0FFH DL6: DJNZ R6, DL6 DJNZ R7, DL RET,8.3 鍵盤(pán)顯示器接口8279,8279 內(nèi)部結(jié)構(gòu),邏輯結(jié)構(gòu) DB0- DB7 RESET CLK IRQ 內(nèi)部數(shù)據(jù)總線 OUTA0-A3 SL0-SL3 RL0-RL3 SHIFT CNTL OUTB0-B3,內(nèi)部模塊,數(shù)據(jù)緩沖:與DB相連
10、控制與定時(shí)寄存器:用于控制與寄存鍵盤(pán)與顯示器的工作方式,鎖存操作命令產(chǎn)生內(nèi)部控制信號(hào) 定時(shí)器:內(nèi)部1個(gè)5位,對(duì)CLK輸入進(jìn)行分頻,產(chǎn)生100kHz內(nèi)部定時(shí)信號(hào),外輸入信號(hào)周期不得小于500ns(8字符顯示周期為5.1ms). 掃描寄存器:其狀態(tài)以編碼方式和譯碼方式輸出 回送緩沖+消抖控制: 鎖存RL0-7輸入。當(dāng)某鍵按下,鍵盤(pán)數(shù)據(jù)以下列格式送FIFO/傳感器 RAM 在傳感器方式 RL7-RL0數(shù)據(jù)被直接送FIFO /傳感器 RAM,內(nèi)部模塊,FIFO/傳感器 RAM:雙功能8x8RAM,在鍵盤(pán)或選通方式時(shí),為FIFO RAM,其狀態(tài)在對(duì)應(yīng)的狀態(tài)寄存器中。 顯示RAM:存儲(chǔ)顯示數(shù)據(jù),在顯示數(shù)據(jù)
11、時(shí),顯示數(shù)據(jù)依此從這里輸出。分為2組OUTA0-OUTA3,OUTB0-OUTB3, 可獨(dú)立也可以聯(lián)合使用。,圖 8.4 8279的引腳圖,管腳(40個(gè)),DB0-DB7:雙向緩沖數(shù)據(jù)總線-CPU RESET,Vcc, Vss A0 :數(shù)據(jù)緩沖地址輸入,=1,選命令或狀態(tài)寄存器,=0,選數(shù)據(jù)寄存器 IRQ: 中斷申請(qǐng), 在鍵盤(pán)工作方式,當(dāng)FIFO/傳感器RAM有數(shù)據(jù)(有鍵閉合), 變?yōu)楦呦駽PU申請(qǐng),當(dāng)CPU讀出后變低。若不為空,再變高,直到讀完。在傳感器工作方式,每當(dāng)檢測(cè)到傳感器狀態(tài)變化,變?yōu)楦?,申?qǐng)中斷。,管腳,SL0-SL3:掃描輸出, 分為譯碼(內(nèi)譯碼, 4個(gè)輸出信號(hào))和編碼(外譯碼后
12、16個(gè)輸出) RL0-RL7:回送線,內(nèi)有 上拉,有鍵閉合變低。 SHIFT : 擴(kuò)展鍵盤(pán)功能 CNTR(/STB):擴(kuò)展鍵盤(pán)功能,管腳,OUTA, OUTB: A組(顯示RAM高4位)和B組(顯示RAM低4)顯示輸出 ,消隱,顯示熄滅信號(hào)。,2. 8279的接口電路與應(yīng)用,圖 8.5 8031與 8279 接口連接框圖,表8-2 8279命令功能鍵一覽表,8279命令解釋,顯示和鍵盤(pán)設(shè)置:其中的傳感器矩陣工作方式是指,傳感器開(kāi)關(guān)閉合直接使IRQ馬上為1,申請(qǐng)中斷。 時(shí)鐘編程命令:PPPPP=231, CLK=2M, output=100kHz, 則20分頻,編程命令字為34H。 讀FIFO/
13、傳感器RAM(A0=0):AI=1,讀完該地址,讀AAA+1內(nèi)容。在鍵盤(pán)少描,AI,AAA都無(wú)用。按鍵送入順序讀。 讀顯示RAM(A0也=0):但D7D6D5=011,讀AAAA地址內(nèi)的顯示內(nèi)容。AI=1,顯示后顯示下一地址。AI=0,總顯示相同地址的數(shù)。 寫(xiě)顯示RAM 屏蔽/熄滅顯示器: 清除命令 結(jié)束中斷/錯(cuò)誤方式設(shè)置。,圖8-23 88鍵盤(pán)的鍵值與鍵號(hào),例子。,8279,138,OUTB0,dp,b,a,OUTA3,SL2,SL1,SL0,RL3,RL0,7406,7407x2,SHIFT,CNTL,+5V,100 歐x8,初始化子程序 INTI: MOV DPTR, #7FFFH ;8
14、279 命令口 MOV A, #0D1H; 清顯示(11010001) MOV DPTR, A NOP NOP LOOP: MOVX A, DPTR; 讀狀態(tài)字 JB ACC. 7, LOOP; 清除未完,等待 MOV A, #34H;分頻系數(shù),12M晶振,20分 MOVX DPTR, A MOV A, #00H; 清鍵盤(pán)顯示命令 MOV DPTR, A MOV IE, #84H; 允許8279在外中斷1中斷 RET,顯示子程序 DIS: MOV DPTR,#7FFFH;8279命令狀態(tài)口 MOV R0, #30H; 字段碼首地址 MOV R7, #08H; 8位顯示 MOV A, #90H; 送顯示,顯示后自動(dòng)地址加1,首址0000 MOVX DPTR, A; MOV DPTR,#7EFFH;8279數(shù)據(jù)口 LP:MOV A, R0 ADD A, #6 ; 加偏移對(duì)準(zhǔn)當(dāng)前顯示字在SEG表中位置 MOVC A, A+PC; 獲得顯示段碼 MOVX DPTR, A ; 送段碼顯示 INC R0 DJNZ R7, LP RET SEG: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH;see 教育188面,鍵盤(pán)中斷子程序 KEY: PUSH PSW PUSH DPL PUSH DPH PUSH ACC PUSH B SETB
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 征地合同協(xié)議書(shū)
- 汽車檢測(cè)與維修作業(yè)指導(dǎo)書(shū)
- 小區(qū)物業(yè)場(chǎng)地租賃合同
- 臨時(shí)活動(dòng)場(chǎng)地租賃合同
- 中國(guó)民用航空運(yùn)輸合同書(shū)5篇
- 廣西國(guó)匯投資擔(dān)保有限公司借款擔(dān)保合同8篇
- 公路貨物運(yùn)輸合同協(xié)議
- 農(nóng)業(yè)機(jī)械化裝備應(yīng)用作業(yè)指導(dǎo)書(shū)
- 公民之間借款合同書(shū)8篇
- 2025年??诮?jīng)營(yíng)性道路客貨運(yùn)輸駕駛員從業(yè)資格考試
- 2024年學(xué)校綜治安全工作計(jì)劃(3篇)
- 車站信號(hào)自動(dòng)控制(第二版) 課件 1-基礎(chǔ).理論
- 中建給排水及供暖施工方案
- 《前沿材料科學(xué)》課件
- 醫(yī)務(wù)人員生涯規(guī)劃
- FOCUS-PDCA改善案例-提高術(shù)前手術(shù)部位皮膚準(zhǔn)備合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 2024解析:第五章透鏡及其應(yīng)用-基礎(chǔ)練(解析版)
- 河南省第二屆職業(yè)技能大賽健康和社會(huì)照護(hù)項(xiàng)(世賽)項(xiàng)目技術(shù)工作文件
- 《護(hù)士禮儀與溝通》課件
- 專題05標(biāo)點(diǎn)符號(hào)考點(diǎn)專訓(xùn)(01)(含答案)2025年新高考語(yǔ)文一輪復(fù)習(xí)考點(diǎn)滿分寶典
- 保密法實(shí)施條例培訓(xùn)
評(píng)論
0/150
提交評(píng)論