MCS-51單片機(jī)的交互通道配置與接口_第1頁(yè)
MCS-51單片機(jī)的交互通道配置與接口_第2頁(yè)
MCS-51單片機(jī)的交互通道配置與接口_第3頁(yè)
MCS-51單片機(jī)的交互通道配置與接口_第4頁(yè)
MCS-51單片機(jī)的交互通道配置與接口_第5頁(yè)
已閱讀5頁(yè),還剩127頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章MCS-51單片機(jī)的交互通道配置與接口主要內(nèi)容:

從工程應(yīng)用角度介紹了MCS-51單片機(jī)的交互通道配置與接口,主要包括人機(jī)界面中的鍵盤、顯示器、微型打印機(jī)等。介紹了多種實(shí)用方案和設(shè)計(jì)技巧。重點(diǎn)在于系統(tǒng)概念的形成、各種接口設(shè)計(jì)方案和設(shè)計(jì)技巧的掌握,熟悉各種交互設(shè)備。難點(diǎn)在于使用動(dòng)態(tài)方法進(jìn)行鍵盤和顯示的硬件及軟件設(shè)計(jì)。第6章MCS-51單片機(jī)的交互通道配置與接口主要內(nèi)容:1

人機(jī)界面:是指人與計(jì)算機(jī)系統(tǒng)進(jìn)行信息交互的接口,包括信息的輸入和輸出。6.1MCS-51單片機(jī)與鍵盤的接口技術(shù)鍵盤:?jiǎn)纹瑱C(jī)系統(tǒng)中完成控制參數(shù)輸入及修改的基本輸入設(shè)備,是人工干預(yù)系統(tǒng)的重要手段。鍵盤的分類:按編碼方式可分為編碼鍵盤與非編碼鍵盤。按鍵組連接方式可分為獨(dú)立連接式鍵盤與矩陣連接式鍵盤。6.1.1概述

鍵盤輸入的主要對(duì)象:各種按鍵或開(kāi)關(guān)。1.獨(dú)立連接式鍵盤

每鍵相互獨(dú)立,各自與一條I/O線相連,CPU可直接讀取該I/O線的高/低電平狀態(tài)。其優(yōu)點(diǎn)是硬件、軟件結(jié)構(gòu)簡(jiǎn)單,判鍵速度快,使用方便;缺點(diǎn)是占I/O口線多。適用場(chǎng)合:多用于設(shè)置控制鍵、功能鍵。適用于鍵數(shù)少的場(chǎng)合。人機(jī)界面:是指人與計(jì)算機(jī)系統(tǒng)進(jìn)行信息交互的接口,包括信2

獨(dú)立連接式鍵盤連接圖如右圖所示。當(dāng)沒(méi)有鍵被按下時(shí),所有的數(shù)據(jù)輸入線都為高電平;當(dāng)有任意一個(gè)鍵被按下時(shí),與之相連的數(shù)據(jù)輸入線將變?yōu)榈碗娖?;通過(guò)相應(yīng)指令,可以判斷是否有鍵按下。2.矩陣連接式鍵盤

鍵按矩陣排列,各鍵處于矩陣行/列的結(jié)點(diǎn)處,CPU通過(guò)對(duì)連在行(列)的I/O線送已知電平的信號(hào),然后讀取列(行)線的狀態(tài)信息。逐線掃描,得出鍵碼。其特點(diǎn)是鍵多時(shí)占用I/O口線少,硬件資源利用合理,但判鍵速度慢。適用場(chǎng)合:多用于設(shè)置數(shù)字鍵,適用于鍵數(shù)多的場(chǎng)合。獨(dú)立連接式鍵盤連接圖如右圖所示。當(dāng)沒(méi)有鍵被按下3

4行4列矩陣式鍵盤連接圖如右圖所示。這種鍵盤適合采取動(dòng)態(tài)掃描的方式進(jìn)行識(shí)別。掃描方式:低電平掃描(回送線必須被上拉為高電平)、高電平掃描(回送線需被下拉為低電平)。右圖中給出了低電平掃描的電路。3.薄膜開(kāi)關(guān)特點(diǎn):不需要進(jìn)行導(dǎo)線與開(kāi)關(guān)間的焊接,結(jié)構(gòu)簡(jiǎn)單、體積小、防塵、防水、防有害氣體侵蝕、壽命長(zhǎng)、可靠性高。應(yīng)用:與按鍵式鍵盤類似,多個(gè)薄膜開(kāi)關(guān)也可按照獨(dú)立式或矩陣式設(shè)計(jì)內(nèi)部電路,其原理與普通鍵盤相同。

4行4列矩陣式鍵盤連接圖如右圖所示。這種鍵盤適合采4按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題

*鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題*鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)5⑴硬件去抖動(dòng)

消除抖動(dòng)不良后果的方法:其中RC濾波電路去抖動(dòng)電路簡(jiǎn)單實(shí)用,效果較好。⑵軟件去抖動(dòng)檢測(cè)到按鍵按下后,執(zhí)行延時(shí)10ms子程序后再確認(rèn)該鍵是否確實(shí)按下,消除抖動(dòng)影響。⑴硬件去抖動(dòng)消除抖動(dòng)不良后果的方法:其中RC濾波電路去抖6

(1)開(kāi)關(guān)狀態(tài)的可靠輸入。必須消除鍵抖動(dòng)。可以采用硬件和軟件兩種方法,硬件方法就是在按鍵輸入通道上添加去抖動(dòng)電路;軟件方法則采用延遲10~20ms

(2)鍵盤狀態(tài)的監(jiān)測(cè)方法——中斷方式還是查詢方式。

(3)鍵盤編碼方法。

(4)鍵盤控制程序的編制。。6.1.3鍵盤接口

功能:對(duì)鍵盤上所按下的鍵進(jìn)行識(shí)別。分類:

(1)編碼鍵盤:采用專用的編碼/譯碼器件,被按下的鍵由該器件譯碼輸出相應(yīng)的鍵碼/鍵值。其特點(diǎn)是增加了硬件開(kāi)銷,編碼固定,但編程簡(jiǎn)單。適用于規(guī)模大的鍵盤。

6.1.2使用鍵盤時(shí)必須解決的問(wèn)題

(1)開(kāi)關(guān)狀態(tài)的可靠輸入。必須消除鍵抖動(dòng)??梢圆?(2)非編碼鍵盤:采用軟件編/譯碼的方式,通過(guò)掃描,對(duì)每個(gè)被按下的鍵判別輸出相應(yīng)的鍵碼/鍵值。其特點(diǎn)是不增加硬件開(kāi)銷,編碼靈活,但編程較復(fù)雜,占CPU時(shí)間。適用于小規(guī)模的鍵盤,特別是單片機(jī)系統(tǒng)。鍵盤。1.鍵盤接口的工作原理

對(duì)于矩陣式鍵盤,如上頁(yè)圖所示,鍵盤的行線X0~X3通過(guò)電阻接+5V,當(dāng)鍵盤上沒(méi)有鍵閉合時(shí),所有的掃描線和回送線都斷開(kāi),無(wú)論掃描線處于何種狀態(tài),回送線都呈高電平。當(dāng)鍵盤上某一鍵閉合時(shí),則該鍵所對(duì)應(yīng)的掃描線和回送線被短路,可以確定,變?yōu)榈碗娖降幕厮途€與掃描線相交處的鍵閉合。

CPU對(duì)鍵盤掃描的方式:程序控制的隨機(jī)方式(CPU空閑時(shí)掃描鍵盤)、定時(shí)控制方式(定時(shí)掃描鍵盤)、中斷方式。

CPU對(duì)鍵盤上閉合鍵的鍵號(hào)確定方法:根據(jù)掃描線和回送線的狀態(tài)計(jì)算求得,或根據(jù)行線和列線的狀態(tài)查表求得。

(2)非編碼鍵盤:采用軟件編/譯碼的方式,通過(guò)掃描82.鍵輸入程序的設(shè)計(jì)方法

(1)判斷鍵盤上是否有鍵閉合;(2)消除鍵的機(jī)械抖動(dòng);(3)確定閉合鍵的物理位置;(4)得到閉合鍵的編號(hào);(5)確保CPU對(duì)鍵的一次閉合只做一次處理3.鍵盤接口方式(1)獨(dú)立式鍵盤接口(靜態(tài)方式)特點(diǎn):結(jié)構(gòu)簡(jiǎn)單,每個(gè)按鍵接單片機(jī)的一條I/O線,通過(guò)對(duì)輸入線的查詢,可以識(shí)別每個(gè)按鍵的狀態(tài)。[例題]

在MCS-51單片機(jī)系統(tǒng)中,設(shè)計(jì)一個(gè)含8個(gè)按鍵的獨(dú)立式鍵盤。解:在MCS-51中,含8個(gè)按鍵的獨(dú)立式鍵盤的線路連接如下頁(yè)圖所示,8個(gè)按鍵經(jīng)上拉電阻拉高后分別接到MCS-51單片機(jī)P1口的8條I/O線上(P1.0~P1.7)。2.鍵輸入程序的設(shè)計(jì)方法9

在無(wú)鍵按下的情況下,P1.0~P1.7線上輸入均為高電平。當(dāng)有鍵按下時(shí),與被按鍵相連的I/O線將得到低電平輸入,其他位按鍵的輸入線上仍維持高電平輸入。

P1口8條I/O線經(jīng)與非門74LS30實(shí)現(xiàn)邏輯與非后,再經(jīng)過(guò)1個(gè)非門74LS04進(jìn)行信號(hào)變換,然后接至MCS-51的引腳上,可通過(guò)中斷的方式處理鍵盤。在中斷服務(wù)程序中,先延時(shí)20ms消除鍵抖動(dòng),再對(duì)各鍵進(jìn)行查詢,找到所按鍵,并轉(zhuǎn)到相應(yīng)的處理程序中去。在無(wú)鍵按下的情況下,P1.10

CLOSE: JNB ACC.7,KEY7 ;查詢7號(hào)鍵 JNB ACC.6,KEY6 ;查詢6號(hào)鍵 JNB ACC.5,KEY5 ;查詢5號(hào)鍵 JNB ACC.4,KEY4 ;查詢4號(hào)鍵 JNB ACC.3,KEY3 ;查詢3號(hào)鍵 JNB ACC.2,KEY2 ;查詢2號(hào)鍵 JNB ACC.1,KEY1 ;查詢1號(hào)鍵 JNB ACC.0,KEY0 ;查詢0號(hào)鍵INT0: RETIKEY7: …… ;7號(hào)鍵處理程序KEY71: MOV A,P1 ;再讀P1口各引腳 JNBACC.7,FUNC71 ;確認(rèn)鍵是否釋放 RETIKEY6: …… ;其他鍵處理程序 …… D20: …… ;20ms延時(shí)子程序 …… END

CLOSE: JNB AC11

主程序如下:

ORG 0000H LJMP MAIN ORG 0003H ;外部中斷0中斷服務(wù)入口地址 LJMP INT ;轉(zhuǎn)中斷服務(wù) ORG 0100H MAIN: SETB EA ;開(kāi)總中斷允許 SETB EX0 ;開(kāi)INT0中斷 SETB IT0 ;下降沿有效 ……中斷服務(wù)程序清單如下:

INTI CALL D20 ;延時(shí)去抖動(dòng) MOV P1,#0FFH ;P1口送全1值(準(zhǔn)雙向口原因) MOV A,P1 ;讀P1口各引腳 CJNE A,#0FFH,CLOSE ;驗(yàn)證是否確實(shí)有鍵閉合 AJMP INT0 ;無(wú)鍵按下(按鍵時(shí)間過(guò)短)則退 ;出中斷主程序如下:12(2)矩陣式鍵盤接口——行反轉(zhuǎn)法

矩陣式鍵盤按鍵識(shí)別方法有行反轉(zhuǎn)法和掃描法等。行反轉(zhuǎn)法需要兩個(gè)雙向I/O口分別接行、列線。步驟如下:

(1)由行線輸出全“0”,讀入列線,判有無(wú)鍵按下。(2)若有鍵按下,再將讀入的列列線輸出,讀進(jìn)行線的值。(3)第一步讀進(jìn)的列線值與第二步讀進(jìn)的行線值運(yùn)算,從而得到代表此鍵的唯一的特征值。行反轉(zhuǎn)法因輸入與輸出線反過(guò)來(lái)用而得名。優(yōu)點(diǎn)是判鍵速度快,兩次即可。[例題]請(qǐng)為8051微處理器設(shè)計(jì)一個(gè)由4行4列鍵陣構(gòu)成的鍵盤。解:4×4矩陣鍵盤的線路連接如下頁(yè)圖所示。其中P2口的低4位作為輸出線。P1口的低4位作為輸入線,輸入線通過(guò)74LS21進(jìn)行邏輯相與后作為8051的一個(gè)外部中斷源輸入。當(dāng)有鍵按下時(shí)就將引起中斷。中斷服務(wù)程序要對(duì)所按的鍵進(jìn)行判別。

(2)矩陣式鍵盤接口——行反轉(zhuǎn)法矩陣式鍵盤按鍵13(1)查詢閉合鍵的位置子程序KEYR

KEYR子程序用以確定每組線中哪一位為0,是否有多個(gè)0。在調(diào)用前,應(yīng)將讀某組線的數(shù)據(jù)存入累加器A中。KEYR子程序返回時(shí),某組線中0的位置(0~3)保存在R3中。按鍵閉合引起中斷后,執(zhí)行中斷服務(wù)程序。(1)查詢閉合鍵的位置子程序KEYR14表2-5工作寄存器組選擇控制表KEYR子程序如下:

KEYR: CJNE A,#0FEH,TESTP11 ;測(cè)試P1.0 MOV R3,#0 ;P1.0=0,說(shuō)明被按鍵的輸入線為P1.0 LJMP FINISH ;返回TESTP11: CJNE A,#0FDH,TESTP12 ;測(cè)試P1.1 MOV R3,#1 LJMP FINISHTESTP12: CJNE A,#0FBH,TESTP13 ;測(cè)試P1.2 MOV R3,#2 LJMP FINISHTESTP13: CJNE A,#0F7H,FINISH ;測(cè)試P1.3 MOV R3,#3FINISH: RET表2-5工作寄存器組選擇控制表KEYR子程序如下:15

(2)中斷服務(wù)程序

中斷服務(wù)程序開(kāi)始部分應(yīng)利用軟件延時(shí)消除鍵抖動(dòng),然后再對(duì)所按的鍵做出處理。中斷服務(wù)程序如下:

ORG1000H INT11:LCALLDELAY ;延時(shí)去抖動(dòng) MOV A,P1 ;讀輸入線 ANL A,#0FH ;判斷是否有鍵閉合 CJNE A,#0FH,TEST ;有鍵閉合,轉(zhuǎn)判斷按鍵程序 RETI ;無(wú)鍵閉合,返回TEST:MOV B,A ;暫存 LCALL KEYR ;調(diào)用讀取子程序 MOV 40H,R3 ;暫存在40H單元 MOV P2,#0FFH ;輸出線寫1 MOV P1,B ;輸入線寫入數(shù)據(jù) MOV A,P2 ;讀輸出線 LCALL KEYR ;調(diào)用讀取子程序 XCH A,R3 SWAP A ORL 40H,A ;得按鍵特征值 RETI (2)中斷服務(wù)程序16

中斷程序結(jié)束后,鍵的特征值存放在40H單元中。此鍵的輸出線號(hào)位于40H單元的高4位,其輸入線號(hào)位于低4位。此后,根據(jù)40H單元的內(nèi)容去查表,得到相應(yīng)鍵的代碼,可進(jìn)行顯示或其他處理。(3)去抖動(dòng)的延時(shí)子程序DELAY

利用CPU的空閑方式,通過(guò)定時(shí)器T1實(shí)現(xiàn)延時(shí),T1必須預(yù)先置初值,以得到需要的延遲時(shí)間。設(shè)晶振頻率為6MHz,欲延時(shí)20ms,定時(shí)時(shí)間為:(216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。程序如下:

DELAY: MOV TOMD,#11H ;方式1定時(shí) MOV TL1,#0C0H ;定時(shí)器1定時(shí)初值 MOV TH1,#63H SETB EA ;開(kāi)中斷 SETB ET1 ;開(kāi)定時(shí)器1中斷 SETB PT1 ;定時(shí)器1為高級(jí)中斷(因被鍵盤中斷調(diào)用) SETB TR1 ;啟動(dòng)定時(shí)器 ORL PCON,#1 ;啟動(dòng)空閑方式,實(shí)際CPU在此處等待 CLR TR1;以下四條指令只有在延時(shí)后,定時(shí)器被喚醒,才能執(zhí)行 CLR PT1 CLR ET1 RET END 中斷程序結(jié)束后,鍵的特征值存放在40H單元中。此鍵17(4)通過(guò)串行口擴(kuò)展鍵盤接口

MCS-51系列單片機(jī)的串行口與串/并轉(zhuǎn)換芯片配合(如串入并出芯片74LS164)可以擴(kuò)展鍵盤。[例題]

利用MCS-51的串行口與串/并轉(zhuǎn)換芯片配合,擴(kuò)展2行8列的鍵盤接口,鍵號(hào)為0~15。要求給出其硬件連接和鍵盤查詢子程序。解:串口與串/并轉(zhuǎn)換芯片配合擴(kuò)展鍵盤的線路連接如下圖所示。

(4)通過(guò)串行口擴(kuò)展鍵盤接口MCS-51系列單片18

其中,P1.0和P1.1作為行線。鍵盤的編碼為:P1.0線上的8個(gè)鍵分別為00H+(00H~07H),P1.1線上的8個(gè)鍵分別為08H+(00H~07H)。掃描線(00H~07H)的具體值存放在R4中。程序采取查詢方式讀取鍵號(hào),并且考慮了鍵的抖動(dòng)問(wèn)題。DLY1是延時(shí)子程序。

程序如下:

ORG1000H SERKEY:MOVSCON,#00H ;設(shè)置串行口 MOVA,#00H ;鍵盤初始化,送00H到列線上 LCALLVARTO ;發(fā)送數(shù)據(jù)CHK:JNBP1.0,CHK0 ;檢查是否有鍵按下 JNBP1.1,CHK0 ;檢查是否有鍵按下 AJMPCHK ;無(wú)鍵按下,繼續(xù)查找CHK0:LCALLDLY1 ;調(diào)用10ms延時(shí)子程序,去抖 JNBP1.0,CHEN ;確實(shí)有鍵按下,轉(zhuǎn)CHEN JNBP1.1,CHEN AJMPCHK ;無(wú)鍵按下,繼續(xù)查找CHEN:MOVR2,#0FEH ;首列掃描字送R2,查鍵號(hào),最低位為0 MOVR4,#00H ;首列偏移值送R4其中,P1.0和P1.1作為行線。鍵盤的編碼19

CHKN:MOVA,R2 ;發(fā)送列掃描字 LCALLVARTO JB P1.0,CH1 ;檢查P1.0有無(wú)鍵按下;若無(wú),轉(zhuǎn)CH1 MOVA,#0 ;第一行首列值送A,00H+(R4) AJMPCKEY ;轉(zhuǎn)求鍵號(hào)CH1:JB P1.1,NEXT ;檢查P1.1有無(wú)鍵按下;若無(wú),轉(zhuǎn)NEXT MOVA,#8H ;第二行首列值送ACKEY:ADDA,R4 ;求鍵號(hào),并入棧保護(hù) RET NEXT:INCR4 ;指向下一列 MOVA,R2 ;取出原掃描字 JNBACC.7,KEND ;是否已檢查完8列? RLA ;8列未完,指向下一列 MOVR2,A ;列掃描字送R2 AJMPCHKN ;8列未完,檢查下一列KEND:AJMPSERKEY ;8列查完,未查到有鍵按下,等待VARTO:MOVSBUF,A ;發(fā)送A中數(shù)據(jù) JNBTI,$ ;發(fā)送等待 CLRTI ;清除 RET DLY1: …… ;延時(shí)10ms子程序(略) END ;結(jié)束CHKN:MOVA,R2 ;206.2MCS-51單片機(jī)與顯示器的接口技術(shù)

顯示器用于實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)中的數(shù)據(jù)輸出和狀態(tài)的反饋。單片機(jī)系統(tǒng)中常用的顯示器有發(fā)光二極管、七段數(shù)碼顯示器、液晶顯示器等。6.2.1LED顯示器及其接口

發(fā)光二極管簡(jiǎn)稱LED(LightEmittingDiode)。LED顯示器從外觀可分為“8”字形的七段數(shù)碼管、米字形數(shù)碼管、點(diǎn)陣塊、矩形平面顯示器、數(shù)字筆劃顯示器等。1.七段LED數(shù)碼顯示器

七段LED數(shù)碼管顯示器能夠顯示十進(jìn)制或十六進(jìn)制數(shù)字及某些簡(jiǎn)單字符。但控制簡(jiǎn)單,使用方便,在單片機(jī)系統(tǒng)中應(yīng)用較多。其結(jié)構(gòu)如下頁(yè)圖所示。6.2MCS-51單片機(jī)與顯示器的接口技術(shù)21

上圖中的a~g七個(gè)筆劃(段)及小數(shù)點(diǎn)dp均為發(fā)光二極管。數(shù)碼管顯示器根據(jù)公共端的連接方式,可以分為共陰極數(shù)碼管(將所有發(fā)光二極管的陰極連在一起)和共陽(yáng)極數(shù)碼管(將所有發(fā)光二極管的陽(yáng)極連在一起)。

單片機(jī)系統(tǒng)擴(kuò)展LED數(shù)碼管時(shí)多用共陽(yáng)LED。共陽(yáng)數(shù)碼管每個(gè)段筆畫是用低電平(“0”)點(diǎn)亮的,要求驅(qū)動(dòng)功率很??;而共陰數(shù)碼管段筆畫是用高電平(“0”)點(diǎn)亮的,要求驅(qū)動(dòng)功率較大。通常每個(gè)段筆畫要串一個(gè)數(shù)百歐姆的降壓電阻。上圖中的a~g七個(gè)筆劃(段)及小數(shù)點(diǎn)dp均為發(fā)22MCS-51單片機(jī)的交互通道配置與接口232.LED點(diǎn)陣模塊顯示器

LED點(diǎn)陣模塊顯示器是指由發(fā)光二極管排成一個(gè)m×n的點(diǎn)陣,每個(gè)發(fā)光二極管構(gòu)成點(diǎn)陣中的一個(gè)點(diǎn)。這種顯示器顯示的字形逼真,能顯示的字符比較多,但控制比較復(fù)雜。適用于顯示漢字、圖形和表格,廣泛應(yīng)用于公共場(chǎng)合的信息發(fā)布。七段LED字形碼如下表所示。2.LED點(diǎn)陣模塊顯示器七段LED字形碼如下表所示。243.LED的驅(qū)動(dòng)接口

LED工作時(shí)需要一定的工作電流,才能正常發(fā)光。單個(gè)LED實(shí)際上是一個(gè)壓降為1.2~1.5V的發(fā)光二極管,流過(guò)LED的電流大小決定了它的發(fā)光強(qiáng)度,R為限流電阻。適當(dāng)減小限流電阻可以增加LED的工作電流,使LED的顯示效果更好。但工作電流過(guò)大,會(huì)對(duì)驅(qū)動(dòng)器件、LED造成損害。通常每個(gè)段筆畫要串一個(gè)數(shù)百歐姆的降壓電阻。下圖為單個(gè)LED的驅(qū)動(dòng)接口電路。3.LED的驅(qū)動(dòng)接口254.LED數(shù)碼管的顯示與驅(qū)動(dòng)

LED數(shù)碼管顯示器的工作方式:靜態(tài)和動(dòng)態(tài)兩種顯示方式。(1)靜態(tài)顯示方式

靜態(tài)顯示方式的各數(shù)碼管在顯示過(guò)程中持續(xù)得到送顯信號(hào),與各數(shù)碼管接口的I/O口線是專用的。其特點(diǎn)是顯示穩(wěn)定,無(wú)閃爍,用元器件多,占I/O線多,無(wú)須掃描。系統(tǒng)運(yùn)行過(guò)程中,在需要更新顯示內(nèi)容時(shí),CPU才去執(zhí)行顯示更新子程序,節(jié)省CPU時(shí)間,提高CPU的工作效率,編程簡(jiǎn)單。

[例題]

利用在8051串行口擴(kuò)展多片串行輸入并行輸出的移位寄存器74LS164作為靜態(tài)顯示器接口的方法,設(shè)計(jì)3位靜態(tài)顯示器接口,并寫出顯示更新子程序,實(shí)現(xiàn)將7FH~7DH3個(gè)單元的數(shù)值分別顯示在3位LED2~LED0上。4.LED數(shù)碼管的顯示與驅(qū)動(dòng)LED數(shù)碼管顯示器26解:接口電路如圖下圖所示。3個(gè)共陽(yáng)極數(shù)碼管的公共端均接Vcc,段碼通過(guò)串行口,采用串—并轉(zhuǎn)換原理,分別送出3個(gè)數(shù)碼管的段碼(先送出的段碼字節(jié)在LED2數(shù)碼管上顯示),圖中的電阻值取100~500。解:接口電路如圖下圖所示。3個(gè)共陽(yáng)極數(shù)碼管的公共端均接Vcc27程序如下:

ORG 1000H DISPSER: MOV R5,#03H ;顯示3個(gè)字符 MOV R1,#7FH ;7FH~7DH存放要顯示的數(shù)據(jù)DL0: MOV A,@R1 ;取出要顯示的數(shù)據(jù) MOV DPTR,#STAB ;指向段數(shù)據(jù)表 MOVC A,@A+DPTR ;查表取字形數(shù)據(jù) MOV SBUF,A ;送出數(shù)據(jù),進(jìn)行顯示 JNB T1,$ ;輸出完否? CLR T1 ;輸出完,清中斷標(biāo)志 DEC R1 ;再取下一個(gè)數(shù)據(jù) DJNZ R5,DL0 ;循環(huán)3次 RET ;返回STAB: DB 0C0H,0F9H,0A4H,0B0H;段數(shù)據(jù)表(共陽(yáng)極) DB· …… …… END 程序如下:28(2)動(dòng)態(tài)顯示方式

動(dòng)態(tài)顯示方式是指一位一位地輪流點(diǎn)亮每位顯示器,與各數(shù)碼管接口的I/O口線是共用的。其特點(diǎn)是有閃爍,用元器件少,占I/O線少,必須掃描,花費(fèi)CPU時(shí)間,編程復(fù)雜。

[例題]設(shè)計(jì)89S51通過(guò)74LS273擴(kuò)展6位七段共陽(yáng)極LED顯示器。

解:接口電路如下頁(yè)圖所示。在程序中通過(guò)P0口將相應(yīng)的字形碼寫入74LS273,P2.0~P2.5作為段碼輸出口,P0口的端口地址為00FFH。進(jìn)行掃描時(shí),P2的低6位依次置1,依次選中了從左至右的顯示器。使用74LS04作為段碼輸出驅(qū)動(dòng)(反相驅(qū)動(dòng)),所以共陰極數(shù)碼管在段數(shù)據(jù)表中的字形碼應(yīng)與共陽(yáng)極數(shù)碼管的字形碼相同。顯示器就可以顯示出6位字符。(2)動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式是指一位一位地輪流29

說(shuō)明:1、單片機(jī)WR引腳要與273的CLK連接2、273的CLR引腳要與VCC連接3、DPTR值不一定是7FFFh,用FFH可消除閃爍說(shuō)明:1、單片機(jī)WR引腳要與273的CLK連接306.2.2LCD顯示器及其接口

液晶顯示器簡(jiǎn)稱LCD(LiquidCrystalDiodes)是利用液晶經(jīng)過(guò)處理后能夠改變光線傳輸方向的特性,達(dá)到顯示字符或者圖形的目的。其特點(diǎn)是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。1.LCD的分類及特點(diǎn)分類:筆段式和點(diǎn)陣式(可分為字符型和圖像型)。筆段式LCD顯示器:類似于LED數(shù)碼管顯示器。每個(gè)顯示器的段電極包括a,b,c,d,e,f,g七個(gè)筆劃(段)和一個(gè)背電極BP(或COM)??梢燥@示數(shù)字和簡(jiǎn)單的字符。

點(diǎn)陣式LCD顯示器:段電極與背電極呈正交帶狀分布,液晶位于正交的帶狀電極間。點(diǎn)陣式LCD的控制一般采用行掃描方式,如圖右所示為顯示字符“A”的情況。6.2.2LCD顯示器及其接口液晶顯示器簡(jiǎn)312.筆段式LCD液晶顯示器的驅(qū)動(dòng)

在LCD的公共極(一路為背電極)加上恒定的交變方波信號(hào),通過(guò)控制段極的電壓變化,在LCD兩極間產(chǎn)生所需的零電壓或二倍幅值的交變電壓,以達(dá)到LCD亮、滅的控制。在筆段式LCD的段電極與背電極間施加周期地改變極性的電壓(通常為4V或5V),可使該段呈黑色。3.LCD顯示模塊LCM(LiquidCrystalDisplayModule)

在實(shí)際應(yīng)用中,用戶很少直接設(shè)計(jì)LCD顯示器驅(qū)動(dòng)接口,一般是直接使用專用的LCD顯示驅(qū)動(dòng)器和LCD顯示模塊LCM。LCM是把LCD顯示屏、背景光源、線路板和驅(qū)動(dòng)集成電路等部件構(gòu)造成一個(gè)整體,作為一個(gè)獨(dú)立部件使用。其特點(diǎn)是功能較強(qiáng)、易于控制、接口簡(jiǎn)單,在單片機(jī)系統(tǒng)中應(yīng)用較多。其內(nèi)部結(jié)構(gòu)如下頁(yè)圖所示。LCM一般帶有內(nèi)部顯示RAM和字符發(fā)生器,只要輸入ASCII碼就可以進(jìn)行顯示。

2.筆段式LCD液晶顯示器的驅(qū)動(dòng)在LCD的公32LCD顯示器接口原理

1.LCD的基本結(jié)構(gòu)及工作原理圖液晶顯示器基本結(jié)構(gòu)LCD顯示器接口原理 1.LCD的基本結(jié)構(gòu)及工作原理圖液33液晶字符顯示屏液晶圖形點(diǎn)陣顯示屏液晶字符顯示屏34

LCD顯示模塊LCM按顯示功能可分為:LCD段式顯示模塊、LCD字符型顯示模塊、LCD圖形顯示模塊三類。HD44780字符顯示模塊是較常用的LCD顯示模塊,共有14個(gè)引腳,其中,8個(gè)數(shù)據(jù)引腳,3個(gè)控制引腳,3個(gè)電源引腳。每個(gè)HD44780可控制的字符可達(dá)每行80個(gè),具有驅(qū)動(dòng)16×40點(diǎn)陣的能力。具有其自身的11條指令構(gòu)成的指令系統(tǒng),用戶對(duì)模塊寫入適當(dāng)?shù)目刂泼?,即可完成清屏、顯示、地址設(shè)置等操作。LCD顯示模塊LCM按顯示功能可分為:LCD段式35各引腳功能定義如下表所示。各引腳功能定義如下表所示。36[例題]

設(shè)計(jì)8051單片機(jī)驅(qū)動(dòng)HD44780顯示模塊的接口電路。解:8051單片機(jī)與HD44780顯示模塊的線路連接如下圖所示,8051的P1口與HD44780的數(shù)據(jù)線相連,HD44780的端信號(hào)由8051的P3.5提供,HD44780的通信允許信號(hào)E由8051的P3.3提供,HD44780的寄存器選擇信號(hào)RS由8051的P3.4提供。

HD44780初始化的方法主要有以下兩種:(1)利用模塊內(nèi)部的復(fù)位電路進(jìn)行初始化,完成清除顯示、功能設(shè)置、開(kāi)/關(guān)顯示、設(shè)置光標(biāo)狀態(tài)及閃爍功能、方式設(shè)置。(2)利用軟件編程實(shí)現(xiàn)初始化。[例題]設(shè)計(jì)8051單片機(jī)驅(qū)動(dòng)HD44780顯示模塊的接口371602液晶顯示模塊接線圖(16字符×2行)1602液晶顯示模塊接線圖(16字符×2行)386.3利用MCS-51的串行口實(shí)現(xiàn)鍵盤和顯示器接口1.接口電路

應(yīng)用MCS-51單片機(jī)的串行口方式0的輸出方式,在串行口外接移位寄存器74LS164,構(gòu)成鍵盤和顯示器接口,其硬件接口如下頁(yè)圖所示(圖中只畫出三位LED靜態(tài)顯示和16個(gè)按鍵,用戶根據(jù)需要可以擴(kuò)展)。采用靜態(tài)顯示,軟件設(shè)計(jì)比較簡(jiǎn)單,節(jié)約CPU的資源。 6.3利用MCS-51的串行口實(shí)現(xiàn)鍵盤和顯示器接口39MCS-51單片機(jī)的交互通道配置與接口402.軟件設(shè)計(jì)顯示子程序如下:

ORG 1000H DSPSER: SETB P3.3 ;開(kāi)放顯示輸出 MOV R7,#03H ;送出的顯示段碼個(gè)數(shù) MOV R0,#7FH ;7FH~7DH為顯示緩沖區(qū)DSPS1: MOV A,@R0 ;取出要顯示的數(shù)據(jù) ADD A,#0DH ;加上偏移量 MOVC A,@A+PC ;查段碼表TAB1 MOV SBUF,A ;經(jīng)過(guò)串行口將段碼送出DSPS2: JNBTI,DSPS2 ;數(shù)據(jù)發(fā)送完? CLRTI DECR0 ;指向下一個(gè)數(shù)據(jù)單元 DJNZR7,DSPS1 ;三個(gè)顯示器是否全部顯示? CLRP3.3 ;三個(gè)數(shù)據(jù)顯示完,關(guān)閉送顯示數(shù)據(jù)通道 RET TAB1: DB …… ;段碼表2.軟件設(shè)計(jì)41鍵盤掃描子程序如下:

KEYS1: MOV A,#00H MOV SBUF,A ;掃描鍵盤全部輸出0KSY0: JNB TI,KSY0 ;數(shù)據(jù)發(fā)送完? CLR TI KSY1: JNB P3.4,PKS1 ;有鍵閉合嗎?有則轉(zhuǎn)PKS1處理 JB P3.5,KSY1 ;第二行有鍵閉合嗎?PKS1: ACALL DELAY10 ;調(diào)用延時(shí)10ms子程序,鍵盤去抖 JNB P3.4,PKS2 ;有鍵閉合嗎? JB P3.5,KSY1 ;無(wú)鍵閉合,是抖動(dòng)PKS2: MOV R7,#08H ;不是抖動(dòng)引起的 MOV R6,#0FEH ;判斷是哪個(gè)鍵按下? MOV R3,#00H MOV A,R6 KSY2: MOV SBUF,A KSY3: JNB TI,KSY3 ;等待串行口發(fā)送完 CLR TI JNB P3.4,PKONE ;是第一行的某鍵按下? JB P3.5,NEXT ;是第二行的某鍵按下? MOV R4,#08H ;第二行有鍵按下 AJMP PKS3 PKONE: MOV R4,#00H ;第一行有鍵按下鍵盤掃描子程序如下: 42

PKS3: MOV SBUF,#00H ;等待鍵的釋放KSY4: JNB TI,KSY4 ; CLR TI KSY5: JNB P3.4,KSY5 ;是第一行的某鍵按下? JNB P3.5,KSY5 MOV A,R4 ADD A,R3 RETNEXT: MOV A,R6 ;判斷下一列是否有鍵按下 RL A MOV R6,A INC R3 DJNZ R7,KSY2 ;8列是否全部掃描完? AJMP KEYS1 ;掃描完成DELAY10: ;延時(shí)10ms子程序 …… RET END 6.3.3利用專用芯片實(shí)現(xiàn)鍵盤和顯示器接口

鍵盤的處理和顯示的處理可由專用芯片完成,鍵盤和顯示器管理專用芯片種類較多,常用的鍵盤和顯示器管理專用芯片有Intel公司的8279芯片,可實(shí)現(xiàn)64個(gè)按鍵、16位LED顯示器的管理。PKS3: MOV SBU43

在由單片機(jī)組成的控制系統(tǒng)中,大多數(shù)外圍電路是處于各種各樣的復(fù)雜環(huán)境中,如控制對(duì)象可能處于大電流、高電壓的情況??刂频膱?zhí)行機(jī)構(gòu)可能是電動(dòng)機(jī)、繼電器或電磁鐵等大功率機(jī)構(gòu)。因此,單片機(jī)不可能和這些外部機(jī)構(gòu)直接連接。通常必須采取兩個(gè)基本措施:一是采用隔離的方法把單片機(jī)的工作環(huán)境與外電路隔離開(kāi)來(lái);另一種是采用電流接續(xù)的辦法擴(kuò)大輸出電流的能力,以驅(qū)動(dòng)各種外電路。6.4.1擴(kuò)大驅(qū)動(dòng)電流的方法1、采用晶體三極管擴(kuò)大輸出電流2、采用帶驅(qū)動(dòng)電路的邏輯門擴(kuò)大驅(qū)動(dòng)電流3、采用達(dá)林頓管作驅(qū)動(dòng)器擴(kuò)大驅(qū)動(dòng)電流下面分別給出具體電路圖6.4MCS-51單片機(jī)功率驅(qū)動(dòng)接口技術(shù)在由單片機(jī)組成的控制系統(tǒng)中,大多數(shù)外圍電路是處于各種各441、三極管1、三極管45三極管的概述

半導(dǎo)體三極管也稱為晶體三極管,可以說(shuō)它是電子電路中最重要的器件。它最主要的功能是電流放大和開(kāi)關(guān)作用。三極管顧名思義具有三個(gè)電極。二極管是由一個(gè)PN結(jié)構(gòu)成的,而三極管由兩個(gè)PN結(jié)構(gòu)成,共用的一個(gè)電極成為三極管的基極(用字母b表示)。其他的兩個(gè)電極成為集電極(用字母c表示)和發(fā)射極(用字母e表示)。由于不同的組合方式,形成了一種是NPN型的三極管,另一種是PNP型的三極管。

三極管的種類很多,并且不同型號(hào)各有不同的用途。三極管大都是塑料封裝或金屬封裝,常見(jiàn)三極管的外觀如圖,大的很大,小的很小。三極管的電路符號(hào)有兩種:有一個(gè)箭頭的電極是發(fā)射極,箭頭朝外的是NPN型三極管,而箭頭朝內(nèi)的是PNP型。實(shí)際上箭頭所指的方向是電流的方向。電子制作中常用的三極管有90××系列,包括低頻小功率硅管9013(NPN)、9012(PNP),低噪聲管9014(NPN),高頻小功率管9018(NPN)等。它們的型號(hào)一般都標(biāo)在塑殼上,而樣子都一樣,都是TO-92標(biāo)準(zhǔn)封裝。三極管的概述

半導(dǎo)體三極管也稱為晶體三極管,可以說(shuō)它是電子電46半導(dǎo)體三極管的管腳判別在安裝半導(dǎo)體三極管之前,首先搞清楚三極管的管腳排列。一方面可以通過(guò)查手冊(cè)獲得,另一方面也可利用電子儀器進(jìn)行測(cè)量,下面講一下利用萬(wàn)用表判定三極管管腳的方法。首先判定PNP型和NPN型晶體管:用萬(wàn)用表的R×1kW(或R×100W)檔,用黑表筆接三極管的任一管腳,用紅表筆分別接其他兩管腳。若表針指示的兩阻值均很大,那么黑表筆所接的那個(gè)管腳是PNP型管的基極;如果萬(wàn)用表指示的兩個(gè)阻值均很小,那么黑表筆所接的管腳是NPN型的基極;如果表針指示的阻值一個(gè)很大,一個(gè)很小,那么黑表筆所接的管腳不是基極。需要新?lián)Q一個(gè)管腳重試,直到滿足要求為止。進(jìn)一步判定三極管集電極和發(fā)射極:首先假定一個(gè)管腳是集電極,另一個(gè)管腳是發(fā)射極;對(duì)NPN于型三極管,黑表筆接假定是集電極的管腳,紅表筆接假定是發(fā)射極的管腳(對(duì)于PNP型管,萬(wàn)用表的紅、黑表筆對(duì)調(diào));然后用大拇指將基極和假定集電極連接(注意兩管腳不能短接),這時(shí)記錄下萬(wàn)用表的測(cè)量值;最后反過(guò)來(lái),把原先假定的管腳對(duì)調(diào),重新記錄下萬(wàn)用表的讀數(shù),兩次測(cè)量值較小的黑表筆所接的管腳是集電極(對(duì)于PNP型管,則紅表筆所接的是集電極)。半導(dǎo)體三極管的管腳判別47MCS-51單片機(jī)的交互通道配置與接口48MCS-51單片機(jī)的交互通道配置與接口49MCS-51單片機(jī)的交互通道配置與接口50MCS-51單片機(jī)的交互通道配置與接口51MCS-51單片機(jī)的交互通道配置與接口522、邏輯門2、邏輯門53MCS-51單片機(jī)的交互通道配置與接口543、達(dá)林頓管ULN20033、達(dá)林頓管ULN200355內(nèi)部邏輯電路圖內(nèi)部邏輯電路圖56MCS-51單片機(jī)的交互通道配置與接口57MCS-51單片機(jī)的交互通道配置與接口58例題:設(shè)計(jì)使單片機(jī)唱歌的程序;在接在單片機(jī)的P2.0上的小喇叭唱八月桂花香實(shí)驗(yàn);執(zhí)行結(jié)果:程序運(yùn)行后在在單片機(jī)的P2.0上的小喇叭唱八月桂花香;本實(shí)驗(yàn)源程序如下:;*****************************************************;*Date:2004.4.20--------------------------------------------------*;*SupportMb-mail:c51cn@163.com-------*;*Createby:dengdewu更多例程請(qǐng)登陸網(wǎng)站--*;*網(wǎng)站單片機(jī)學(xué)習(xí)資料同步更新,敬請(qǐng)新老朋友隨時(shí)關(guān)注---*;******************************************************ORG0000HLJMPSTARTORG000BH;中斷入口INC20H;中斷服務(wù)程序,中斷計(jì)數(shù)器加1MOVTH0,#0D8HMOVTL0,#0EFH;12M晶振,形成10毫秒中斷RETI例題:設(shè)計(jì)使單片機(jī)唱歌的程序;在接在單片機(jī)的P2.0上的小喇59START:

MOVSP,#50H

MOVTH0,#0D8H

MOVTL0,#0EFH

MOVTMOD,#01H;設(shè)定定時(shí)器工作方式

MOVIE,#82H

MUSIC0:

NOP

MOVDPTR,#DAT;表頭地址送DPTR

MOV20H,#00H;中斷計(jì)數(shù)器清0

MOVB,#00H;表序號(hào)清0

MUSIC1:

NOP

CLRA

MOVCA,@A+DPTR;查表取代碼

JZEND0;是00H,則結(jié)束

CJNEA,#0FFH,MUSIC5

LJMPMUSIC3

MUSIC5:

NOP

START:

MOVSP,#50H

60MOVR6,A

INCDPTR

MOVA,B

MOVCA,@A+DPTR;取節(jié)拍代碼送R7

MOVR7,A

SETBTR0;啟動(dòng)計(jì)數(shù)

MUSIC2:

NOP

CPLP2.0

MOVA,R6

MOVR3,A

CPLA

MOVP1,A;顯示(修改者加入的顯示)

CPLA

LCALLDEL

MOVA,R7

CJNEA,20H,MUSIC2;中斷計(jì)數(shù)器(20H)=R7否?

;不等,則繼續(xù)循環(huán)

MOV20H,#00H;等于,則取下一代碼

INCDPTR

LJMPMUSIC1

MOVR6,A

IN61MUSIC3:

NOP

CLRTR0;休止100毫秒

MOVR2,#0DH

MUSIC4:

NOP

MOVR3,#0FFH

LCALLDEL

DJNZR2,MUSIC4

INCDPTR

LJMPMUSIC1

END0:

MOVR2,#64H;歌曲結(jié)束,延時(shí)1秒后繼續(xù)

MUSIC6:

MOVR3,#00H

LCALLDEL

DJNZR2,MUSIC6

LJMPMUSIC0

DEL:;延時(shí)子程序

NOP

DEL3:

MOVR4,#05H

DEL4:

NOP

DJNZR4,DEL4

NOP

DJNZR3,DEL3

RET

MUSIC3:

NOP

CLR62

DAT:;數(shù)據(jù)表格存放在ROM中。

DB18H,30H,1CH,10H,20H,40H,1CH,10H,18H,10H,20H,10H

DB1CH,10H,18H,40H,1CH,20H,20H,20H,1CH,20H,18H,20H

DB20H,80H,0FFH,20H,30H,1CH,10H,18H,20H,15H,20H,1CH

DB20H,20H,20H,26H,40H,20H,20H,2BH,20H,26H,20H,20H

DB20H,30H,80H,0FFH,20H,20H,1CH,10H,18H,10H,20H,20H

DB26H,20H,2BH,20H,30H,20H,2BH,40H,20H,20H,1CH,10H

DB18H,10H,20H,20H,26H,20H,2BH,20H,30H,20H,2BH,40H

DB20H,30H,1CH,10H,18H,20H,15H,20H,1CH,20H,20H,20H

DB26H,40H,20H,20H,2BH,20H,26H,20H,20H,20H,30H,80H

DB20H,30H,1CH,10H,20H,10H,1CH,10H,20H,20H,26H,20H

DB2BH,20H,30H,20H,2BH,40H,20H,15H,1FH,05H,20H,10H

DB1CH,10H,20H,20H,26H,20H,2BH,20H,30H,20H,2BH,40H

DB20H,30H,1CH,10H,18H,20H,15H,20H,1CH,20H,20H,20H

DB26H,40H,20H,20H,2BH,20H,26H,20H,20H,20H,30H,30H

DB20H,30H,1CH,10H,18H,40H,1CH,20H,20H,20H,26H,40H

DB13H,60H,18H,20H,15H,40H,13H,40H,18H,80H,00H

END

DAT:63例題2:使繼電器按一下按鍵就吸合,放開(kāi)按鍵就不吸合的程序。P2.0接繼電器,P1.2接繼電器合燈,P1.4接繼電器斷開(kāi)燈。程序設(shè)計(jì)如下:org00h ;源程序起始地址 jmpmain ;跳轉(zhuǎn)到MAIN org0050h ;主程序開(kāi)始地址main: clrp2.0 ;關(guān)繼電器和燈 clrp1.2 ;燈1滅 setbp1.4 ;燈2亮例題2:使繼電器按一下按鍵就吸合,放開(kāi)按鍵就不吸合的程序。P64loop:jbp3.6,lop1;鍵沒(méi)按下則去lop1setbp2.0 ;否則繼電器吸合setbp1.2 ;燈1亮clrp1.4 ;燈2滅jmplop2lop1:clrp2.0;繼電器松開(kāi) clrp1.2;燈1滅 setbp1.4;燈2亮lop2:nopajmploop;循環(huán)retendloop:jbp3.6,lop1;鍵沒(méi)按下則去l65作業(yè)與練習(xí):26.136.14作業(yè)與練習(xí):6.16.466第6章MCS-51單片機(jī)的交互通道配置與接口主要內(nèi)容:

從工程應(yīng)用角度介紹了MCS-51單片機(jī)的交互通道配置與接口,主要包括人機(jī)界面中的鍵盤、顯示器、微型打印機(jī)等。介紹了多種實(shí)用方案和設(shè)計(jì)技巧。重點(diǎn)在于系統(tǒng)概念的形成、各種接口設(shè)計(jì)方案和設(shè)計(jì)技巧的掌握,熟悉各種交互設(shè)備。難點(diǎn)在于使用動(dòng)態(tài)方法進(jìn)行鍵盤和顯示的硬件及軟件設(shè)計(jì)。第6章MCS-51單片機(jī)的交互通道配置與接口主要內(nèi)容:67

人機(jī)界面:是指人與計(jì)算機(jī)系統(tǒng)進(jìn)行信息交互的接口,包括信息的輸入和輸出。6.1MCS-51單片機(jī)與鍵盤的接口技術(shù)鍵盤:?jiǎn)纹瑱C(jī)系統(tǒng)中完成控制參數(shù)輸入及修改的基本輸入設(shè)備,是人工干預(yù)系統(tǒng)的重要手段。鍵盤的分類:按編碼方式可分為編碼鍵盤與非編碼鍵盤。按鍵組連接方式可分為獨(dú)立連接式鍵盤與矩陣連接式鍵盤。6.1.1概述

鍵盤輸入的主要對(duì)象:各種按鍵或開(kāi)關(guān)。1.獨(dú)立連接式鍵盤

每鍵相互獨(dú)立,各自與一條I/O線相連,CPU可直接讀取該I/O線的高/低電平狀態(tài)。其優(yōu)點(diǎn)是硬件、軟件結(jié)構(gòu)簡(jiǎn)單,判鍵速度快,使用方便;缺點(diǎn)是占I/O口線多。適用場(chǎng)合:多用于設(shè)置控制鍵、功能鍵。適用于鍵數(shù)少的場(chǎng)合。人機(jī)界面:是指人與計(jì)算機(jī)系統(tǒng)進(jìn)行信息交互的接口,包括信68

獨(dú)立連接式鍵盤連接圖如右圖所示。當(dāng)沒(méi)有鍵被按下時(shí),所有的數(shù)據(jù)輸入線都為高電平;當(dāng)有任意一個(gè)鍵被按下時(shí),與之相連的數(shù)據(jù)輸入線將變?yōu)榈碗娖?;通過(guò)相應(yīng)指令,可以判斷是否有鍵按下。2.矩陣連接式鍵盤

鍵按矩陣排列,各鍵處于矩陣行/列的結(jié)點(diǎn)處,CPU通過(guò)對(duì)連在行(列)的I/O線送已知電平的信號(hào),然后讀取列(行)線的狀態(tài)信息。逐線掃描,得出鍵碼。其特點(diǎn)是鍵多時(shí)占用I/O口線少,硬件資源利用合理,但判鍵速度慢。適用場(chǎng)合:多用于設(shè)置數(shù)字鍵,適用于鍵數(shù)多的場(chǎng)合。獨(dú)立連接式鍵盤連接圖如右圖所示。當(dāng)沒(méi)有鍵被按下69

4行4列矩陣式鍵盤連接圖如右圖所示。這種鍵盤適合采取動(dòng)態(tài)掃描的方式進(jìn)行識(shí)別。掃描方式:低電平掃描(回送線必須被上拉為高電平)、高電平掃描(回送線需被下拉為低電平)。右圖中給出了低電平掃描的電路。3.薄膜開(kāi)關(guān)特點(diǎn):不需要進(jìn)行導(dǎo)線與開(kāi)關(guān)間的焊接,結(jié)構(gòu)簡(jiǎn)單、體積小、防塵、防水、防有害氣體侵蝕、壽命長(zhǎng)、可靠性高。應(yīng)用:與按鍵式鍵盤類似,多個(gè)薄膜開(kāi)關(guān)也可按照獨(dú)立式或矩陣式設(shè)計(jì)內(nèi)部電路,其原理與普通鍵盤相同。

4行4列矩陣式鍵盤連接圖如右圖所示。這種鍵盤適合采70按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題

*鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題*鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)71⑴硬件去抖動(dòng)

消除抖動(dòng)不良后果的方法:其中RC濾波電路去抖動(dòng)電路簡(jiǎn)單實(shí)用,效果較好。⑵軟件去抖動(dòng)檢測(cè)到按鍵按下后,執(zhí)行延時(shí)10ms子程序后再確認(rèn)該鍵是否確實(shí)按下,消除抖動(dòng)影響。⑴硬件去抖動(dòng)消除抖動(dòng)不良后果的方法:其中RC濾波電路去抖72

(1)開(kāi)關(guān)狀態(tài)的可靠輸入。必須消除鍵抖動(dòng)??梢圆捎糜布蛙浖煞N方法,硬件方法就是在按鍵輸入通道上添加去抖動(dòng)電路;軟件方法則采用延遲10~20ms

(2)鍵盤狀態(tài)的監(jiān)測(cè)方法——中斷方式還是查詢方式。

(3)鍵盤編碼方法。

(4)鍵盤控制程序的編制。。6.1.3鍵盤接口

功能:對(duì)鍵盤上所按下的鍵進(jìn)行識(shí)別。分類:

(1)編碼鍵盤:采用專用的編碼/譯碼器件,被按下的鍵由該器件譯碼輸出相應(yīng)的鍵碼/鍵值。其特點(diǎn)是增加了硬件開(kāi)銷,編碼固定,但編程簡(jiǎn)單。適用于規(guī)模大的鍵盤。

6.1.2使用鍵盤時(shí)必須解決的問(wèn)題

(1)開(kāi)關(guān)狀態(tài)的可靠輸入。必須消除鍵抖動(dòng)。可以采73(2)非編碼鍵盤:采用軟件編/譯碼的方式,通過(guò)掃描,對(duì)每個(gè)被按下的鍵判別輸出相應(yīng)的鍵碼/鍵值。其特點(diǎn)是不增加硬件開(kāi)銷,編碼靈活,但編程較復(fù)雜,占CPU時(shí)間。適用于小規(guī)模的鍵盤,特別是單片機(jī)系統(tǒng)。鍵盤。1.鍵盤接口的工作原理

對(duì)于矩陣式鍵盤,如上頁(yè)圖所示,鍵盤的行線X0~X3通過(guò)電阻接+5V,當(dāng)鍵盤上沒(méi)有鍵閉合時(shí),所有的掃描線和回送線都斷開(kāi),無(wú)論掃描線處于何種狀態(tài),回送線都呈高電平。當(dāng)鍵盤上某一鍵閉合時(shí),則該鍵所對(duì)應(yīng)的掃描線和回送線被短路,可以確定,變?yōu)榈碗娖降幕厮途€與掃描線相交處的鍵閉合。

CPU對(duì)鍵盤掃描的方式:程序控制的隨機(jī)方式(CPU空閑時(shí)掃描鍵盤)、定時(shí)控制方式(定時(shí)掃描鍵盤)、中斷方式。

CPU對(duì)鍵盤上閉合鍵的鍵號(hào)確定方法:根據(jù)掃描線和回送線的狀態(tài)計(jì)算求得,或根據(jù)行線和列線的狀態(tài)查表求得。

(2)非編碼鍵盤:采用軟件編/譯碼的方式,通過(guò)掃描742.鍵輸入程序的設(shè)計(jì)方法

(1)判斷鍵盤上是否有鍵閉合;(2)消除鍵的機(jī)械抖動(dòng);(3)確定閉合鍵的物理位置;(4)得到閉合鍵的編號(hào);(5)確保CPU對(duì)鍵的一次閉合只做一次處理3.鍵盤接口方式(1)獨(dú)立式鍵盤接口(靜態(tài)方式)特點(diǎn):結(jié)構(gòu)簡(jiǎn)單,每個(gè)按鍵接單片機(jī)的一條I/O線,通過(guò)對(duì)輸入線的查詢,可以識(shí)別每個(gè)按鍵的狀態(tài)。[例題]

在MCS-51單片機(jī)系統(tǒng)中,設(shè)計(jì)一個(gè)含8個(gè)按鍵的獨(dú)立式鍵盤。解:在MCS-51中,含8個(gè)按鍵的獨(dú)立式鍵盤的線路連接如下頁(yè)圖所示,8個(gè)按鍵經(jīng)上拉電阻拉高后分別接到MCS-51單片機(jī)P1口的8條I/O線上(P1.0~P1.7)。2.鍵輸入程序的設(shè)計(jì)方法75

在無(wú)鍵按下的情況下,P1.0~P1.7線上輸入均為高電平。當(dāng)有鍵按下時(shí),與被按鍵相連的I/O線將得到低電平輸入,其他位按鍵的輸入線上仍維持高電平輸入。

P1口8條I/O線經(jīng)與非門74LS30實(shí)現(xiàn)邏輯與非后,再經(jīng)過(guò)1個(gè)非門74LS04進(jìn)行信號(hào)變換,然后接至MCS-51的引腳上,可通過(guò)中斷的方式處理鍵盤。在中斷服務(wù)程序中,先延時(shí)20ms消除鍵抖動(dòng),再對(duì)各鍵進(jìn)行查詢,找到所按鍵,并轉(zhuǎn)到相應(yīng)的處理程序中去。在無(wú)鍵按下的情況下,P1.76

CLOSE: JNB ACC.7,KEY7 ;查詢7號(hào)鍵 JNB ACC.6,KEY6 ;查詢6號(hào)鍵 JNB ACC.5,KEY5 ;查詢5號(hào)鍵 JNB ACC.4,KEY4 ;查詢4號(hào)鍵 JNB ACC.3,KEY3 ;查詢3號(hào)鍵 JNB ACC.2,KEY2 ;查詢2號(hào)鍵 JNB ACC.1,KEY1 ;查詢1號(hào)鍵 JNB ACC.0,KEY0 ;查詢0號(hào)鍵INT0: RETIKEY7: …… ;7號(hào)鍵處理程序KEY71: MOV A,P1 ;再讀P1口各引腳 JNBACC.7,FUNC71 ;確認(rèn)鍵是否釋放 RETIKEY6: …… ;其他鍵處理程序 …… D20: …… ;20ms延時(shí)子程序 …… END

CLOSE: JNB AC77

主程序如下:

ORG 0000H LJMP MAIN ORG 0003H ;外部中斷0中斷服務(wù)入口地址 LJMP INT ;轉(zhuǎn)中斷服務(wù) ORG 0100H MAIN: SETB EA ;開(kāi)總中斷允許 SETB EX0 ;開(kāi)INT0中斷 SETB IT0 ;下降沿有效 ……中斷服務(wù)程序清單如下:

INTI CALL D20 ;延時(shí)去抖動(dòng) MOV P1,#0FFH ;P1口送全1值(準(zhǔn)雙向口原因) MOV A,P1 ;讀P1口各引腳 CJNE A,#0FFH,CLOSE ;驗(yàn)證是否確實(shí)有鍵閉合 AJMP INT0 ;無(wú)鍵按下(按鍵時(shí)間過(guò)短)則退 ;出中斷主程序如下:78(2)矩陣式鍵盤接口——行反轉(zhuǎn)法

矩陣式鍵盤按鍵識(shí)別方法有行反轉(zhuǎn)法和掃描法等。行反轉(zhuǎn)法需要兩個(gè)雙向I/O口分別接行、列線。步驟如下:

(1)由行線輸出全“0”,讀入列線,判有無(wú)鍵按下。(2)若有鍵按下,再將讀入的列列線輸出,讀進(jìn)行線的值。(3)第一步讀進(jìn)的列線值與第二步讀進(jìn)的行線值運(yùn)算,從而得到代表此鍵的唯一的特征值。行反轉(zhuǎn)法因輸入與輸出線反過(guò)來(lái)用而得名。優(yōu)點(diǎn)是判鍵速度快,兩次即可。[例題]請(qǐng)為8051微處理器設(shè)計(jì)一個(gè)由4行4列鍵陣構(gòu)成的鍵盤。解:4×4矩陣鍵盤的線路連接如下頁(yè)圖所示。其中P2口的低4位作為輸出線。P1口的低4位作為輸入線,輸入線通過(guò)74LS21進(jìn)行邏輯相與后作為8051的一個(gè)外部中斷源輸入。當(dāng)有鍵按下時(shí)就將引起中斷。中斷服務(wù)程序要對(duì)所按的鍵進(jìn)行判別。

(2)矩陣式鍵盤接口——行反轉(zhuǎn)法矩陣式鍵盤按鍵79(1)查詢閉合鍵的位置子程序KEYR

KEYR子程序用以確定每組線中哪一位為0,是否有多個(gè)0。在調(diào)用前,應(yīng)將讀某組線的數(shù)據(jù)存入累加器A中。KEYR子程序返回時(shí),某組線中0的位置(0~3)保存在R3中。按鍵閉合引起中斷后,執(zhí)行中斷服務(wù)程序。(1)查詢閉合鍵的位置子程序KEYR80表2-5工作寄存器組選擇控制表KEYR子程序如下:

KEYR: CJNE A,#0FEH,TESTP11 ;測(cè)試P1.0 MOV R3,#0 ;P1.0=0,說(shuō)明被按鍵的輸入線為P1.0 LJMP FINISH ;返回TESTP11: CJNE A,#0FDH,TESTP12 ;測(cè)試P1.1 MOV R3,#1 LJMP FINISHTESTP12: CJNE A,#0FBH,TESTP13 ;測(cè)試P1.2 MOV R3,#2 LJMP FINISHTESTP13: CJNE A,#0F7H,FINISH ;測(cè)試P1.3 MOV R3,#3FINISH: RET表2-5工作寄存器組選擇控制表KEYR子程序如下:81

(2)中斷服務(wù)程序

中斷服務(wù)程序開(kāi)始部分應(yīng)利用軟件延時(shí)消除鍵抖動(dòng),然后再對(duì)所按的鍵做出處理。中斷服務(wù)程序如下:

ORG1000H INT11:LCALLDELAY ;延時(shí)去抖動(dòng) MOV A,P1 ;讀輸入線 ANL A,#0FH ;判斷是否有鍵閉合 CJNE A,#0FH,TEST ;有鍵閉合,轉(zhuǎn)判斷按鍵程序 RETI ;無(wú)鍵閉合,返回TEST:MOV B,A ;暫存 LCALL KEYR ;調(diào)用讀取子程序 MOV 40H,R3 ;暫存在40H單元 MOV P2,#0FFH ;輸出線寫1 MOV P1,B ;輸入線寫入數(shù)據(jù) MOV A,P2 ;讀輸出線 LCALL KEYR ;調(diào)用讀取子程序 XCH A,R3 SWAP A ORL 40H,A ;得按鍵特征值 RETI (2)中斷服務(wù)程序82

中斷程序結(jié)束后,鍵的特征值存放在40H單元中。此鍵的輸出線號(hào)位于40H單元的高4位,其輸入線號(hào)位于低4位。此后,根據(jù)40H單元的內(nèi)容去查表,得到相應(yīng)鍵的代碼,可進(jìn)行顯示或其他處理。(3)去抖動(dòng)的延時(shí)子程序DELAY

利用CPU的空閑方式,通過(guò)定時(shí)器T1實(shí)現(xiàn)延時(shí),T1必須預(yù)先置初值,以得到需要的延遲時(shí)間。設(shè)晶振頻率為6MHz,欲延時(shí)20ms,定時(shí)時(shí)間為:(216-TC)×6/12=20×103μs,初值:TC=25536=63C0H。程序如下:

DELAY: MOV TOMD,#11H ;方式1定時(shí) MOV TL1,#0C0H ;定時(shí)器1定時(shí)初值 MOV TH1,#63H SETB EA ;開(kāi)中斷 SETB ET1 ;開(kāi)定時(shí)器1中斷 SETB PT1 ;定時(shí)器1為高級(jí)中斷(因被鍵盤中斷調(diào)用) SETB TR1 ;啟動(dòng)定時(shí)器 ORL PCON,#1 ;啟動(dòng)空閑方式,實(shí)際CPU在此處等待 CLR TR1;以下四條指令只有在延時(shí)后,定時(shí)器被喚醒,才能執(zhí)行 CLR PT1 CLR ET1 RET END 中斷程序結(jié)束后,鍵的特征值存放在40H單元中。此鍵83(4)通過(guò)串行口擴(kuò)展鍵盤接口

MCS-51系列單片機(jī)的串行口與串/并轉(zhuǎn)換芯片配合(如串入并出芯片74LS164)可以擴(kuò)展鍵盤。[例題]

利用MCS-51的串行口與串/并轉(zhuǎn)換芯片配合,擴(kuò)展2行8列的鍵盤接口,鍵號(hào)為0~15。要求給出其硬件連接和鍵盤查詢子程序。解:串口與串/并轉(zhuǎn)換芯片配合擴(kuò)展鍵盤的線路連接如下圖所示。

(4)通過(guò)串行口擴(kuò)展鍵盤接口MCS-51系列單片84

其中,P1.0和P1.1作為行線。鍵盤的編碼為:P1.0線上的8個(gè)鍵分別為00H+(00H~07H),P1.1線上的8個(gè)鍵分別為08H+(00H~07H)。掃描線(00H~07H)的具體值存放在R4中。程序采取查詢方式讀取鍵號(hào),并且考慮了鍵的抖動(dòng)問(wèn)題。DLY1是延時(shí)子程序。

程序如下:

ORG1000H SERKEY:MOVSCON,#00H ;設(shè)置串行口 MOVA,#00H ;鍵盤初始化,送00H到列線上 LCALLVARTO ;發(fā)送數(shù)據(jù)CHK:JNBP1.0,CHK0 ;檢查是否有鍵按下 JNBP1.1,CHK0 ;檢查是否有鍵按下 AJMPCHK ;無(wú)鍵按下,繼續(xù)查找CHK0:LCALLDLY1 ;調(diào)用10ms延時(shí)子程序,去抖 JNBP1.0,CHEN ;確實(shí)有鍵按下,轉(zhuǎn)CHEN JNBP1.1,CHEN AJMPCHK ;無(wú)鍵按下,繼續(xù)查找CHEN:MOVR2,#0FEH ;首列掃描字送R2,查鍵號(hào),最低位為0 MOVR4,#00H ;首列偏移值送R4其中,P1.0和P1.1作為行線。鍵盤的編碼85

CHKN:MOVA,R2 ;發(fā)送列掃描字 LCALLVARTO JB P1.0,CH1 ;檢查P1.0有無(wú)鍵按下;若無(wú),轉(zhuǎn)CH1 MOVA,#0 ;第一行首列值送A,00H+(R4) AJMPCKEY ;轉(zhuǎn)求鍵號(hào)CH1:JB P1.1,NEXT ;檢查P1.1有無(wú)鍵按下;若無(wú),轉(zhuǎn)NEXT MOVA,#8H ;第二行首列值送ACKEY:ADDA,R4 ;求鍵號(hào),并入棧保護(hù) RET

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論