單片機原理及應用PPT教學課件第9章MCS51與鍵盤、顯示器、撥盤、打印機的接口設計_第1頁
單片機原理及應用PPT教學課件第9章MCS51與鍵盤、顯示器、撥盤、打印機的接口設計_第2頁
單片機原理及應用PPT教學課件第9章MCS51與鍵盤、顯示器、撥盤、打印機的接口設計_第3頁
單片機原理及應用PPT教學課件第9章MCS51與鍵盤、顯示器、撥盤、打印機的接口設計_第4頁
單片機原理及應用PPT教學課件第9章MCS51與鍵盤、顯示器、撥盤、打印機的接口設計_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應用單片機原理及應用 光華學院光華學院 信息工程系信息工程系 pc機除了主 機以外還需要 哪些部分呢? 單片機電路有時候也需要鍵盤、顯示等外設。 9.1 鍵盤接口鍵盤接口 q按鍵的特點及輸入原理 q獨立式按鍵 q矩陣式按鍵 按鍵的特點及輸入原理 n按鍵的分類: 觸點式:機械;無觸點式:電氣 n鍵輸入原理: 通過按鍵的接通與斷開,產(chǎn)生兩種相反的邏輯狀態(tài) 低電平“0”與高電平“1”。 n鍵功能的實現(xiàn): 對于一組鍵或一個鍵盤,需通過接口電路與單 片機相連。可采用查詢或中斷方式測試有無鍵按下, 再確定是哪一個鍵按下,將該鍵號送入累加器a,然 后判斷是數(shù)字鍵還是功能鍵,若是數(shù)字鍵,則將鍵 號

2、對應的數(shù)字送入相關輸入緩沖區(qū);若是功能鍵, 則通過跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完 后再返回主程序。 鍵盤接口需要解決的問題 是否有鍵按下是否有鍵按下 按鍵識別:按鍵識別: 鍵抖動及消除:鍵抖動及消除: 機械按鍵抖動時間在機械按鍵抖動時間在 5 5msms10ms10ms之之間間 硬件方案硬件方案雙穩(wěn)態(tài)去抖電路雙穩(wěn)態(tài)去抖電路 軟件方案軟件方案延時延時10ms10ms20ms20ms后再次判斷后再次判斷 消除方法消除方法: 求鍵號求鍵號 獨立式按鍵獨立式按鍵 8 0 3 1 p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7 v c c 接口電路: 例例1 1:

3、用:用p1p1口檢測三個按鍵的狀態(tài)并完成相應的功能口檢測三個按鍵的狀態(tài)并完成相應的功能 解:資源分配: 用p1口的低3位檢測3個按鍵的輸入,為1則表示 按鍵沒有按下,為0則表示相應按鍵被按下。 流程圖: org 0000h kb: mov p1,#0ffh ;想從想從p1口取數(shù)時要先口取數(shù)時要先 ;將初始值;將初始值ff裝入裝入p1,再準備去取數(shù)!,再準備去取數(shù)! mov a,p1 ;讀出讀出p1口內(nèi)容到口內(nèi)容到a中中 cpl a ;將將a取反取反 anl a,#07h ;將將a的內(nèi)容與的內(nèi)容與07相與相與 jz kb ;判斷判斷a是否是是否是0,是,是0無鍵按下無鍵按下 ;跳轉(zhuǎn)到;跳轉(zhuǎn)到kb

4、 lcall d10ms ;由按鍵按下延時由按鍵按下延時10ms mov a,p1 ;讀出讀出p1口內(nèi)容到口內(nèi)容到a中中 cpl a ;將將a取反取反 anl a,#07h ;將將a的內(nèi)容與的內(nèi)容與07相與相與 jz kb ;判斷判斷a是否是是否是0,是,是0無鍵按下無鍵按下 ;跳轉(zhuǎn)到;跳轉(zhuǎn)到kb cjne a,#01h,kb01;是是1按鍵按下嗎?按鍵按下嗎? ;不是跳轉(zhuǎn)到不是跳轉(zhuǎn)到kb01 lcall pgm1 ;是,則調(diào)用是,則調(diào)用pgm1 sjmp kb ;返回返回kb kb01:cjne a,#02h,kb02;是是2按鍵按下嗎?按鍵按下嗎? ;不是跳轉(zhuǎn)到不是跳轉(zhuǎn)到kb02 lcal

5、l pgm2 ;是,則調(diào)用是,則調(diào)用pgm2 sjmp kb ;返回返回kb kb02:cjne a,#04h,kb ;是是1按鍵按下嗎?按鍵按下嗎? ;不是跳轉(zhuǎn)到;不是跳轉(zhuǎn)到kb01 lcall pgm3 ;是,則調(diào)用是,則調(diào)用pgm3 sjmp kb ;返回返回kb end 編程:按三個按鍵中 的任一鍵都對應一個 特定功能。 若判斷鍵釋 放應如何修 改? 矩矩 陣陣 式式 按按 鍵鍵 關鍵:如何關鍵:如何 判斷鍵號?判斷鍵號? 3210 4 765 111098 15141312 +5v p1.4 p1.3 p1.0 mcs-51 p1.7 p1.6 p1.5 p1.2 p1.1 接口電路

6、: 鍵盤掃描子程序一般包括以下內(nèi)容: 1.判別有無鍵按下; 2.掃描獲取閉合鍵的行、列值; 3.用計算法或查表法得到鍵值; 4.判斷閉合鍵釋放否,如沒釋放則繼續(xù)等待; 5.保存閉合鍵號。 鍵按下鍵按下/ /釋放判斷釋放判斷 ks: mov a,#00h ; 將00放入a中 mov p1,a ;全掃描字#00h送p1口 mov p1,#0fh ; 為保證取p1口低4位,先應將其置高電平 mov a,p1 ;讀入p1口狀態(tài) cpl a ;變正邏輯,高電平表示有鍵按下 anl a,#0fh ;取低4位 ret ;返回,a0表示有鍵按下 main: lcall ks jnz xxx 如果按下“2”號鍵

7、,那么p1.0-p1.7的值從原來的 0000,1111(0f)變化為0000,0111(0e),因此,a 的值變?yōu)?000,0111(0e)。取反,1111 1000(f8) 再與0000,1111(0f)相與,則為0000,1000(08) 不為0,有按鍵按下。 有按下情況的進一步處理程序 按鍵識別掃描法 流程: 當?shù)?列處于低電平時,逐行查找是否有行線變低, 若有,則第0列與該行的交叉點按鍵按下;若無,則表示 第0列無鍵按下,再讓下一列處在低電平,依此循環(huán),這 種方式稱為鍵盤掃描。 鍵號=行首鍵號(0、4、8、12)+列號(0、1、2、3) 原理: 在某一時刻只讓一條列線處于低電平,其余

8、列 線均處于高電平,則當這一列有鍵按下時,該鍵所在 的行電平將會由高電平變?yōu)榈碗娖?,可判定該列相?的行有鍵按下。 例2:鍵盤掃描程序 serch: mov r2,#0efh ;掃描初值1110 1111 mov r3,#00h ;列號為0 line0: mov a,r2 ;將r2,1110 1111送入a mov p1,a ;將a,1110 1111送入p1 mov a,p1 ;讀p1口內(nèi)容到a jb acc.3,line1;判斷0行選中? mov a,#00h ;行首號送累加器a=00 ajmp tryk ;跳轉(zhuǎn)到tryk line1: jb acc.2,line2;判斷1行選中? mov

9、 a,#04h ;行首號送累加器a=04 ajmp tryk ;跳轉(zhuǎn)到tryk line2: jb acc.1,line3 ;判斷2行選中? mov a,#08h ;行首號送累加器a=08 ajmp tryk ;跳轉(zhuǎn)到tryk line3: jb acc.0,line4 ;判斷3行選中? mov a,#0ch ;行首號送累加器a=12 ajmp tryk ;跳轉(zhuǎn)到tryk line4: inc r3 ;r3列號加1 mov a,r2 ;將r2,1110 1111送入a rl a ;循環(huán)左移1位1101 1111 jnb acc.0,back ;4列都沒查到,應該重新開始 mov r2,a ;賦

10、掃描初值 ajmp line0 ;跳轉(zhuǎn)到line0 tryk: add a,r3 ;列號+行號=鍵號 back: ret 例2:鍵盤掃描程序 定時掃描方式 定時掃描方式就是每隔一段時間對鍵 盤掃描一次,它利用單片機內(nèi)部的定時器 產(chǎn)生一定時間(例如10 ms)的定時,當定 時時間到就產(chǎn)生定時器溢出中斷。cpu響應 中斷后對鍵盤進行掃描,并在有鍵按下時 識別出該鍵,再執(zhí)行該鍵的功能程序。 ;將100放入r1 ;定時器1方式2, ;裝入初值,定時100us ;啟動定時器 ;判斷tf1位是否為1, ;直到1跳轉(zhuǎn)到tm1 ;r1減1不等0,則跳轉(zhuǎn)到lk ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)

11、到tm ;延時10ms ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)到tm ;調(diào)用按鍵搜索程序 ;開全局中斷,開定時器1中斷 ;設置定時中斷循環(huán)次數(shù)為100 ;設置定時器1工作方式2 ;計算并裝入初值 ;啟動定時器 ;等待 ;r1減1不等于0,則跳轉(zhuǎn)到tm1 ;關全局中斷,關定時器1中斷 ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)到tm1 ;延時10ms ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)到tm1 ;調(diào)用按鍵搜索程序 mcs-51的的中斷系統(tǒng)結(jié)構(gòu)圖中斷系統(tǒng)結(jié)構(gòu)圖 中斷標 志位 中斷源 允許 總允許 中斷優(yōu) 先級 中斷掃描方式 為提高cpu工作效率,可采用中斷掃描工

12、作 方式。其工作過程如下:當無鍵按下時,cpu處 理自己的工作,當有鍵按下時,產(chǎn)生中斷請求, cpu轉(zhuǎn)去執(zhí)行鍵盤掃描子程序,并識別鍵號。 p1.0 p1.1 p1.3 p1.2 p1.4 p1.5 p1.6 p1.7 int0 8031 向p1口寫入f0 ;開全局中斷,開外部中斷0中斷 ;等待 ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)到tm1 ;延時10ms ;調(diào)用key測試,出口為a ;判斷a是否為0?跳轉(zhuǎn)到tm1 ;調(diào)用按鍵搜索程序 p1.0 p1.1 p1.3 p1.2 p1.4 p1.5 p1.6 p1.7 int0 8031 v r/w(p3.1) =1; rsequp3.

13、0 rwequp3.1 eequp3.2 ve(p3.2): vr/w(p3.1)=1; vrs(p3.0)=0; setb rw ;rw=1 nop ;3條 clr rs ;rs=0 nop ;3條 setb e ;e=1 nop ;3條 mov a,p1 ;讀入狀態(tài)字讀入狀態(tài)字 nop ;3條 clr e ;e=0 nop ;3條 clr rw ;rw=0 stat: ret rsr/w操作操作 00寫命令寫命令操作(初始化、操作(初始化、 光標定位等)光標定位等) 01讀狀態(tài)讀狀態(tài)操作(讀忙標操作(讀忙標 志)志) 10寫數(shù)據(jù)寫數(shù)據(jù)操作(要顯示操作(要顯示 內(nèi)容)內(nèi)容) 11讀數(shù)據(jù)讀數(shù)據(jù)

14、操作(可以把操作(可以把 顯示存儲區(qū)中的數(shù)據(jù)顯示存儲區(qū)中的數(shù)據(jù) 反讀出來)反讀出來) 2. 寫命令字 rsr/w操作操作 00寫命令操作(初始化、光標寫命令操作(初始化、光標 定位等)定位等) 01讀狀態(tài)操作(讀忙標志)讀狀態(tài)操作(讀忙標志) 10寫數(shù)據(jù)操作(要顯示的內(nèi)容) 11讀數(shù)據(jù)操作(可以把顯示存 儲區(qū)中的數(shù)據(jù)反讀出來) v e: v rs=0; r/w=0; v 采用查詢方式:讀入狀態(tài)字讀入狀態(tài)字,再判斷忙標志acc.7。 rw=0 rs=1 e=1 命令字a,a p1 e=0 rs=0 返回 寫數(shù)據(jù) 讀入狀態(tài)字a acc.7=0? 不忙嗎? 延時 y n 動手做動手做 假定顯示數(shù)據(jù)已

15、 存放到內(nèi)部ram 的 21h單元 3. 命令字 指令名稱指令名稱 控制信號控制信號控制代碼控制代碼 rs rw d7 d6 d5 d4 d3 d2 d1 d0 清屏清屏 0 00 0 0 0 0 0 0 1 歸歸home位位 0 00 0 0 0 0 0 1 * 輸入方式設置輸入方式設置0 00 0 0 0 0 1 i/d s 顯示狀態(tài)設置顯示狀態(tài)設置0 00 0 0 0 1 d c b 光標畫面滾動光標畫面滾動0 00 0 0 1 s/c r/l * * 功能設置功能設置0 00 0 1 dl n f * * cgram地址設置地址設置 0 00 1 a5 a4 a3 a2 a1 a0 d

16、dram地址設置地址設置 0 01 a6 a5 a4 a3 a2 a1 a0 讀讀bf和和ac0 1 bf ac6 ac5 ac4 ac3 ac2 ac1 ac0 寫數(shù)據(jù)寫數(shù)據(jù) 1 0 數(shù)數(shù) 據(jù)據(jù) 讀數(shù)據(jù)讀數(shù)據(jù) 1 1 數(shù)數(shù) 據(jù)據(jù) 清除屏幕,置ac 為零01h 指令名稱指令名稱 控制信號控制信號控制代碼控制代碼 rs rw d7 d6 d5 d4 d3 d2 d1 d0 清屏清屏 0 00 0 0 0 0 0 0 1 歸歸home位位 0 00 0 0 0 0 0 1 * 輸入方式設置輸入方式設置0 00 0 0 0 0 1 i/d s 顯示狀態(tài)設置顯示狀態(tài)設置0 00 0 0 0 1 d c

17、 b 光標畫面滾動光標畫面滾動0 00 0 0 1 s/c r/l * * 功能設置功能設置0 00 0 1 dl n f * * cgram地址設置地址設置 0 00 1 a5 a4 a3 a2 a1 a0 ddram地址設置地址設置 0 01 a6 a5 a4 a3 a2 a1 a0 讀讀bf和和ac0 1 bf ac6 ac5 ac4 ac3 ac2 ac1 ac0 寫數(shù)據(jù)寫數(shù)據(jù) 1 0 數(shù)數(shù) 據(jù)據(jù) 讀數(shù)據(jù)讀數(shù)據(jù) 1 1 數(shù)數(shù) 據(jù)據(jù) 設光標移動方向并 指定整體顯示是否 移動。 i/d=1:增量方式 i/d=0:減量方式 s=1:移位 s=0:不移位 0000011006h 設整體顯示開關

18、 (d),光標顯示 開關(c),光標 位的字符閃耀(b) d=1;c=0;b=0 000011000ch 指令名稱指令名稱 控制信號控制信號控制代碼控制代碼 rs rw d7 d6 d5 d4 d3 d2 d1 d0 清屏清屏 0 00 0 0 0 0 0 0 1 歸歸home位位 0 00 0 0 0 0 0 1 * 輸入方式設置輸入方式設置0 00 0 0 0 0 1 i/d s 顯示開關控制顯示開關控制0 00 0 0 0 1 d c b 光標畫面滾動光標畫面滾動0 00 0 0 1 s/c r/l * * 功能設置功能設置0 00 0 1 dl n f * * cgram地址設置地址設

19、置 0 00 1 a5 a4 a3 a2 a1 a0 ddram地址設置地址設置 0 01 a6 a5 a4 a3 a2 a1 a0 讀讀bf和和ac0 1 bf ac6 ac5 ac4 ac3 ac2 ac1 ac0 寫數(shù)據(jù)寫數(shù)據(jù) 1 0 數(shù)數(shù) 據(jù)據(jù) 讀數(shù)據(jù)讀數(shù)據(jù) 1 1 數(shù)數(shù) 據(jù)據(jù) 設接口數(shù)據(jù)位數(shù) (dl),顯示行數(shù) (l),及字型(f) dl=1,8位 =0: 4位 n=1:2行 =0:1行 f=1:510 =0: 57 0011100038h 指令名稱指令名稱 控制信號控制信號控制代碼控制代碼 rs rw d7 d6 d5 d4 d3 d2 d1 d0 清屏清屏 0 00 0 0 0

20、0 0 0 1 歸歸home位位 0 00 0 0 0 0 0 1 * 輸入方式設置輸入方式設置0 00 0 0 0 0 1 i/d s 顯示開關控制顯示開關控制0 00 0 0 0 1 d c b 光標畫面滾動光標畫面滾動0 00 0 0 1 s/c r/l * * 功能設置功能設置0 00 0 1 dl n f * * cgram地址設置地址設置 0 00 1 a5 a4 a3 a2 a1 a0 ddram地址設置地址設置 0 01 a6 a5 a4 a3 a2 a1 a0 讀讀bf和和ac0 1 bf ac6 ac5 ac4 ac3 ac2 ac1 ac0 寫數(shù)據(jù)寫數(shù)據(jù) 1 0 數(shù)數(shù) 據(jù)

21、據(jù) 讀數(shù)據(jù)讀數(shù)據(jù) 1 1 數(shù)數(shù) 據(jù)據(jù) 設置ddram地 址,為顯示定位 4. 初始化lcd 上電 延時20ms 功能設置 延時37us 顯示狀態(tài)設置 延時37us 清屏 延時1.52ms 輸入方式設置 初始化結(jié)束 動手做動手做 5. 定位光標位置 把顯示數(shù)據(jù)顯示在某個位置,就是把顯示數(shù)據(jù)寫在相應的 ddram地址中,ddram地址占7位。set ddram address命令如下: row12345141516 line100h01h02h03h04h0dh0eh0fh line240h41h42h43h44h4dh4eh4fh noticenotice v光標定位,寫入一個顯示字符后,ddr

22、am地址會自動加自動加 1或減或減1,加或減由輸入方式字設置; v 第1行ddram地址與第2行ddram地址并不連續(xù)并不連續(xù)。 80h81h82h83h84h8dh8eh8fh 0c0h0c1h0c2h0c3h0c4h0cdh0ceh0cfh 6. lcd顯示程序設計 main lcd初始化 光標定位 顯示字符 動手做動手做 sjmp $ 7. 顯示數(shù)據(jù) 對于常用數(shù)字、字 母等顯示數(shù)據(jù)為其 ascii碼 end majpjmvcyzj21hlfrvy96dv02lppfygxus7iymzkyemz0kgeyzs3bplckyh1lt4ek7cxmux3ijoysoer7zuavwygz4epzruirvpmzzvntf1xzw5oswsxotfaejnocmfe1lzgnn1rsxg8wlcg8cvq3xpjmvodpfwcpiyjgzaznsepniaklysu7qsd1upaxmzdlpn9zw7kljfslcli26yv109ffbndh8lbun1g6acurq39eg12khl9txsz1j

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論