《顯示鍵盤接口》課件.ppt_第1頁
《顯示鍵盤接口》課件.ppt_第2頁
《顯示鍵盤接口》課件.ppt_第3頁
《顯示鍵盤接口》課件.ppt_第4頁
《顯示鍵盤接口》課件.ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第8章 單片機(jī)與顯示器和鍵盤的接口,8.1 鍵盤接口 鍵盤實(shí)際上是由排列成矩陣形式的一系列按鍵開關(guān)組成, 用戶通過鍵盤可以向CPU輸入數(shù)據(jù)、地址和命令。 鍵盤按其結(jié)構(gòu)形式可分為: 編碼式鍵盤和非編碼式鍵盤兩類。 單片機(jī)系統(tǒng)中普遍使用非編碼式鍵盤, 這類鍵盤主要解決以下幾個問題: 鍵的識別; 如何消除鍵的抖動; 鍵的保護(hù)。,1. 非編碼式鍵盤工作原理 非編碼式鍵盤識別按鍵的方法有兩種: 一是行掃描法, 二是線反轉(zhuǎn)法。 1) 行掃描法 通過行線發(fā)出低電平信號, 如果該行線所連接的鍵沒有按下的話, 則列線所接的端口得到的是全“1”信號, 如果有鍵按下的話, 則得到非全“1”信號。 為了防止雙鍵或多鍵

2、同時按下, 往往從第 0 行一直掃描到最后 1 行, 若只發(fā)現(xiàn) 1 個閉合鍵, 則為有效鍵, 否則全部作廢。 找到閉合鍵后, 讀入相應(yīng)的鍵值, 再轉(zhuǎn)至相應(yīng)的鍵處理程序。,2) 線反轉(zhuǎn)法 線反轉(zhuǎn)法也是識別閉合鍵的一種常用方法, 該法比行掃描速度快, 但在硬件上要求行線與列線外接上拉電阻。 先將行線作為輸出線, 列線作為輸入線, 行線輸出全“0”信號, 讀入列線的值, 然后將行線和列線的輸入輸出關(guān)系互換, 并且將剛才讀到的列線值從列線所接的端口輸出, 再讀取行線的輸入值。那么在閉合鍵所在的行線上值必為 0。這樣, 當(dāng)一個鍵被按下時, 必定可讀到一對唯一的行列值。,2. 鍵盤接口電路,圖 8.1 采

3、用8155的鍵盤接口電路,下面的程序是用行掃描法進(jìn)行鍵掃描的程序, 其中KS1 為判鍵閉合的子程序。 有鍵閉合時(A)=0。 DIR為數(shù)碼顯示器掃描顯示子程序, 執(zhí)行一遍的時間約6 ms。 程序執(zhí)行后, 若鍵閉合, 鍵值存入A中, 鍵值的計算公式是: 鍵值=行號4+列號; 若無鍵閉合, 則A中存入標(biāo)志FFH。,KEY1:LCALL KS1 ; 檢查有無閉合鍵? JNZ LK1 ; (A)=0, 有鍵閉合則轉(zhuǎn) LJMP LK8 ; 無閉合鍵則返回 LK1: LCALL DIR ; 延時 12 ms LCALL DIR ; 清抖 LCALL LS1 ; 再檢查有鍵閉合否? JNZ LK2 ; 有鍵

4、閉合則轉(zhuǎn) LJMP LK8 ; 無鍵閉合則返回,LK2: MOV R3, 00H ; 行號初值送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 ; 行號加 1 SJMP LK3 ; 轉(zhuǎn)至掃描下一行 LK4: MOV A, R3 ; 行號送入A ADD A, R3 ; 行號2 MOV R5, A ADD A, R5 ; 行號4 MOV R5, A ; 存入R5 中 MOV A, R4 ; 列值送A,LK5: RRC A ; 右移一位 JNC LK6 ; 該位為 0 則轉(zhuǎn) INC R5 ; 列號加 1 SJMP LK5 ; 列號未判完則繼續(xù) LK6: MOV 20H, R5; 存鍵值 LK7: LCALL DIR ; 掃描

6、一遍顯示器 LCALL KS1 ; 發(fā)掃描信號 JNZ LK7 ; 鍵未釋放等待 LCALL DIR ; 鍵已釋放 LCALL DIR ; 延時 12 ms, 清抖 MOV A, 20H ; 鍵值存入A中 KND: RET,LK8: MOV A, FFH ; 無鍵標(biāo)志FFH存入A中 RET KS1: MOV DPTR, 0101H ; 判鍵子程序 MOV A, 00H ; 全掃描信號 MOVX DPTR, A ; 發(fā)全掃描信號 INC DPTR INC DPTR ; 指向8155口C MOVX A, DPTR ; 讀入列值 ANL A, 0FH ; 保留低4位 ORL A, F0H ; 高4位

7、取“1” CPL A ; 取反, 無鍵按下則全“0” RET,最簡單的鍵盤、指示燈擴(kuò)展法,8.2 LED顯示器接口,1. LED顯示器結(jié)構(gòu)與原理,圖 8.2 7段LED數(shù)碼顯示器,各段碼位的對應(yīng)關(guān)系如下:,表 8.1十六進(jìn)制數(shù)及空白與P的顯示段碼,2. LED顯示器接口電路,圖 8.3 6 位動態(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; 延時 INC R0; 緩沖區(qū)地址加 1 MOV A, R3; JB ACC.5, LD1; 掃到第 6 個顯示位了嗎? RL A ; 沒有, R3 左環(huán)移一位, 掃描下一個顯示位 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; 延時子程序 DL: MOV R6, 0FFH DL6: DJNZ R6, DL6 DJNZ R7, DL RET,8.3 鍵盤顯示器接口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、控制與定時寄存器:用于控制與寄存鍵盤與顯示器的工作方式,鎖存操作命令產(chǎn)生內(nèi)部控制信號 定時器:內(nèi)部1個5位,對CLK輸入進(jìn)行分頻,產(chǎn)生100kHz內(nèi)部定時信號,外輸入信號周期不得小于500ns(8字符顯示周期為5.1ms). 掃描寄存器:其狀態(tài)以編碼方式和譯碼方式輸出 回送緩沖+消抖控制: 鎖存RL0-7輸入。當(dāng)某鍵按下,鍵盤數(shù)據(jù)以下列格式送FIFO/傳感器 RAM 在傳感器方式 RL7-RL0數(shù)據(jù)被直接送FIFO /傳感器 RAM,內(nèi)部模塊,FIFO/傳感器 RAM:雙功能8x8RAM,在鍵盤或選通方式時,為FIFO RAM,其狀態(tài)在對應(yīng)的狀態(tài)寄存器中。 顯示RAM:存儲顯示數(shù)據(jù),在顯示數(shù)據(jù)

11、時,顯示數(shù)據(jù)依此從這里輸出。分為2組OUTA0-OUTA3,OUTB0-OUTB3, 可獨(dú)立也可以聯(lián)合使用。,圖 8.4 8279的引腳圖,管腳(40個),DB0-DB7:雙向緩沖數(shù)據(jù)總線-CPU RESET,Vcc, Vss A0 :數(shù)據(jù)緩沖地址輸入,=1,選命令或狀態(tài)寄存器,=0,選數(shù)據(jù)寄存器 IRQ: 中斷申請, 在鍵盤工作方式,當(dāng)FIFO/傳感器RAM有數(shù)據(jù)(有鍵閉合), 變?yōu)楦呦駽PU申請,當(dāng)CPU讀出后變低。若不為空,再變高,直到讀完。在傳感器工作方式,每當(dāng)檢測到傳感器狀態(tài)變化,變?yōu)楦?,申請中斷?管腳,SL0-SL3:掃描輸出, 分為譯碼(內(nèi)譯碼, 4個輸出信號)和編碼(外譯碼后

12、16個輸出) RL0-RL7:回送線,內(nèi)有 上拉,有鍵閉合變低。 SHIFT : 擴(kuò)展鍵盤功能 CNTR(/STB):擴(kuò)展鍵盤功能,管腳,OUTA, OUTB: A組(顯示RAM高4位)和B組(顯示RAM低4)顯示輸出 ,消隱,顯示熄滅信號。,2. 8279的接口電路與應(yīng)用,圖 8.5 8031與 8279 接口連接框圖,表8-2 8279命令功能鍵一覽表,8279命令解釋,顯示和鍵盤設(shè)置:其中的傳感器矩陣工作方式是指,傳感器開關(guān)閉合直接使IRQ馬上為1,申請中斷。 時鐘編程命令:PPPPP=231, CLK=2M, output=100kHz, 則20分頻,編程命令字為34H。 讀FIFO/

13、傳感器RAM(A0=0):AI=1,讀完該地址,讀AAA+1內(nèi)容。在鍵盤少描,AI,AAA都無用。按鍵送入順序讀。 讀顯示RAM(A0也=0):但D7D6D5=011,讀AAAA地址內(nèi)的顯示內(nèi)容。AI=1,顯示后顯示下一地址。AI=0,總顯示相同地址的數(shù)。 寫顯示RAM 屏蔽/熄滅顯示器: 清除命令 結(jié)束中斷/錯誤方式設(shè)置。,圖8-23 88鍵盤的鍵值與鍵號,例子。,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; 清鍵盤顯示命令 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; 送顯示,顯示后自動地址加1,首址0000 MOVX DPTR, A; MOV DPTR,#7EFFH;8279數(shù)據(jù)口 LP:MOV A, R0 ADD A, #6 ; 加偏移對準(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面,鍵盤中斷子程序 KEY: PUSH PSW PUSH DPL PUSH DPH PUSH ACC PUSH B SETB

溫馨提示

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

最新文檔

評論

0/150

提交評論