版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第10章MCS-51與鍵盤和顯示器的
接口設(shè)計(jì)10.1LED數(shù)碼管的顯示原理LED(LightEmittingDiode)發(fā)光二極管縮寫。LED數(shù)碼管是由發(fā)光二極管構(gòu)成的。10.1.1LED數(shù)碼管的結(jié)構(gòu)常見的LED數(shù)碼管為“8”字型的,共計(jì)8段。每一段對(duì)應(yīng)一個(gè)發(fā)光二極管。有共陽極和共陰極兩種,如圖10-1所示。共陰極發(fā)光二極管的陰極連在一起,通常公共陰極接地。當(dāng)陽極為高電平時(shí),發(fā)光二極管點(diǎn)亮。同樣,共陽極LED數(shù)碼管的發(fā)光二極管的陽極連接在一起,公共陽極接正電壓,當(dāng)某個(gè)發(fā)光二極管的陰極接低電平時(shí),發(fā)光二極管被點(diǎn)亮,相應(yīng)的段被顯示。圖10-18段LED數(shù)碼管結(jié)構(gòu)及外形
表10-1只列出了部分段碼,可以根據(jù)實(shí)際情況選用,或重新定義。除“8”字型的LED數(shù)碼管外,市面上還有“±1”型、“米”字型和“點(diǎn)陣”型LED顯示器,如圖10-2所示。本章均以“8”字型的LED數(shù)碼管為例。
圖10-2
其他各種字型的LED顯示器10.1.2LED數(shù)碼管工作原理圖10-3所示為顯示4位字符的LED數(shù)碼管的結(jié)構(gòu)原理圖。N位位選線和8
N條段碼線。段碼線控制顯示字型,而位選線控制著該顯示位的LED數(shù)碼管的亮或暗。
圖10-34位LED數(shù)碼管的結(jié)構(gòu)原理圖
圖10-4為4位LED數(shù)碼管靜態(tài)顯示器電路,各位可獨(dú)立顯示,靜態(tài)顯示方式接口編程容易,但是占用口線較多。對(duì)圖10-4電路,若用I/O口線接口,要占用4個(gè)8位I/O口。因此在顯示位數(shù)較多的情況下,所需的電流比較大,對(duì)電源的要求也就隨之增高,這時(shí)一般都采用動(dòng)態(tài)顯示方式。2.LED動(dòng)態(tài)顯示方式無論在任何時(shí)刻只有一個(gè)LED數(shù)碼管處于顯示狀態(tài),即單片機(jī)采用“掃描”方式控制各個(gè)數(shù)碼管輪流顯示。圖10-44位LED靜態(tài)顯示電路在多位LED顯示時(shí),為簡(jiǎn)化硬件電路,通常將所有顯示位的段碼線的相應(yīng)段并聯(lián)在一起,由一個(gè)8位I/O口控制,而各位的共陽極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時(shí)選通。
圖10-5所示為一個(gè)4位8段LED動(dòng)態(tài)顯示電路。其中段碼線占用一個(gè)8位I/O口,而位選線占用一個(gè)4位I/O口。必須采用動(dòng)態(tài)的“掃描”顯示方式。即在某一時(shí)刻,只讓某一位的位選線處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時(shí),段碼線上輸出相應(yīng)位要有顯示的字符的段碼。雖然這些字符是在不同時(shí)刻出現(xiàn),而在同一時(shí)刻,只有一位顯示,其他各位熄滅,由于余輝和人眼的“視覺暫留”作用,只要每位顯示間隔足夠短,則可以造成“多位同時(shí)亮”的假象,達(dá)到同時(shí)顯示的效果。LED不同位顯示的時(shí)間間隔(掃描間隔)應(yīng)根據(jù)實(shí)際情況而定。顯示位數(shù)多,將占大量的單片機(jī)時(shí)間,因此動(dòng)態(tài)顯示的實(shí)質(zhì)是以犧牲單片機(jī)時(shí)間來換取I/O端口的減少。
圖10-6所示為8位LED動(dòng)態(tài)顯示2009.10.10的過程。圖10-6(a)所示為顯示過程,某一時(shí)刻,只有一位LED被選通顯示,其余位則是熄滅的;圖10-6(b)所示為實(shí)際的顯示結(jié)果,人眼看到的是8位穩(wěn)定的同時(shí)顯示的字符。
圖10-68位LED動(dòng)態(tài)顯示過程和結(jié)果動(dòng)態(tài)顯示的優(yōu)點(diǎn)是硬件電路簡(jiǎn)單,顯示器越多,優(yōu)勢(shì)越明顯。缺點(diǎn)是顯示亮度不如靜態(tài)顯示的亮度高。如果“掃描”速率較低,會(huì)出現(xiàn)閃爍現(xiàn)象。靜態(tài)顯示示例:動(dòng)態(tài)顯示示例: ORG 0000HSTART: MOV DPTR,#TABLE ;DPTR指向段碼表首地址 MOV R7,#07FH ;設(shè)置動(dòng)態(tài)顯示掃描初值S1: MOV A,#00H MOVC A,@A+DPTR ;查表取得段碼 CJNE A,#01H,S2 ;判斷段碼是否為結(jié)束符 SJMP STARTS2: MOV B,A ;段碼送B保存 MOV A,R7 RL A ;顯示位掃描值左移1位 MOV P3,A ;顯示位掃描值送P3口 MOV R7,A MOV P0,B ;顯示段碼送P0顯示 LCALL DELAY ;延時(shí) INC DPTR SJMP S1DELAY: MOV R5,#20 ;延時(shí)子程序D2: MOV R6,#20D1: NOP DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;段碼表 DB 01H ;結(jié)束符 END10.2鍵盤接口原理鍵盤具有向單片機(jī)輸入數(shù)據(jù)、命令等功能,是人與單片機(jī)對(duì)話的主要手段。10.2.1鍵盤輸入應(yīng)解決的問題1.鍵盤的任務(wù)任務(wù)有三項(xiàng):(1)判別是否有鍵按下?若有,進(jìn)入下一步工作。(2)識(shí)別哪一個(gè)鍵被按下,并求出相應(yīng)的鍵值。(3)根據(jù)鍵值,找到相應(yīng)鍵值的處理程序入口。
圖10-7(b)所示的t1和t3分別為鍵的閉合和斷開過程中的抖動(dòng)期(呈現(xiàn)一串負(fù)脈沖),抖動(dòng)時(shí)間長(zhǎng)短與開關(guān)的機(jī)械特性有關(guān),一般為5~10ms,t2為穩(wěn)定的閉合期,其時(shí)間由按鍵動(dòng)作確定,一般為十分之幾秒到幾秒,t0、t4為斷開期。3.按鍵的識(shí)別鍵的閉合與否,行線輸出電壓上就是呈現(xiàn)高電平或低電平。高電平,表示鍵斷開,低電平則表示鍵閉合,通過對(duì)行線電平的高低狀態(tài)的檢測(cè),可確認(rèn)按鍵按下以及按鍵釋放與否。為了確保對(duì)一次按鍵動(dòng)作只確認(rèn)一次按鍵有效,必須消除抖動(dòng)期t1和t3的影響。4.如何消除按鍵的抖動(dòng)按鍵去抖動(dòng)的方法有兩種:一種軟件延時(shí),本思想是:在檢測(cè)到有鍵按下時(shí),該鍵所對(duì)應(yīng)的行線為低電平,執(zhí)行一段延時(shí)10ms的子程序后,確認(rèn)該行線電平是否仍為低電平,如果仍為低電平,則確認(rèn)該行確實(shí)有鍵按下。當(dāng)按鍵松開時(shí),行線的低電平變?yōu)楦唠娖剑瑘?zhí)行一段延時(shí)10ms的子程序后,檢測(cè)該行線為高電平,說明按鍵確實(shí)已經(jīng)松開。采取本措施,可消除兩個(gè)抖動(dòng)期t1和t3的影響。另一種是采用專用的鍵盤/顯示器接口芯片,這類芯片中都有自動(dòng)去抖動(dòng)的硬件電路。10.2.2鍵盤的工作原理鍵盤可分為兩類:非編碼鍵盤和編碼鍵盤。非編碼鍵盤是利用按鍵直接與單片機(jī)相連接而成,這種鍵盤通常使用在按鍵數(shù)量較少的場(chǎng)合。使用這種鍵盤,系統(tǒng)功能通常比較簡(jiǎn)單,需要處理的任務(wù)較少,但是可以降低成本、簡(jiǎn)化電路設(shè)計(jì)。按鍵的信息通過軟件來獲取。非編碼鍵盤常見的為兩種結(jié)構(gòu):獨(dú)立式鍵盤和矩陣式鍵盤。(1)獨(dú)立式鍵盤特點(diǎn)是:一鍵一線,各鍵相互獨(dú)立,每個(gè)鍵各接一條I/O口線,通過檢測(cè)I/O輸入線的電平狀態(tài),可容易地判斷哪個(gè)按鍵被按下,如圖10-8所示。對(duì)于圖10-8的鍵盤,圖中的上拉電阻保證按鍵釋放時(shí),輸入檢測(cè)線上有穩(wěn)定的高電平。當(dāng)某一按鍵按下時(shí),對(duì)應(yīng)的檢測(cè)線就變成了低電平,與其他按鍵相連的檢測(cè)線仍為高電平,只需讀入I/O輸入線的狀態(tài),判別哪一條I/O輸入線為低電平,很容易識(shí)別哪個(gè)鍵被按下。優(yōu)點(diǎn):電路簡(jiǎn)單,各條檢測(cè)線獨(dú)立,識(shí)別按下按鍵的軟件編寫簡(jiǎn)單。適用于鍵盤按鍵數(shù)目較少的場(chǎng)合,不適用于鍵盤按鍵數(shù)目較多的場(chǎng)合,因?yàn)閷⒄加幂^多的I/O口線。識(shí)別某一鍵是否按下的子程序:KEYIN: MOV P1,0FFH;P1口寫入1,設(shè)置P1口為輸入狀態(tài) MOV A,P1 ;讀入8個(gè)按鍵的狀態(tài) CJNE A,#0FFH,QUDOU;有鍵按下,跳去抖動(dòng) LJMP RETURN ;無鍵按下,返回
QUDOU: MOVR3,A ;8個(gè)按鍵的狀態(tài)送R3保存 LCALLDELAY10 ;調(diào)用延時(shí)子程序,軟件去鍵抖動(dòng) MOV A,P1 ;再一次讀入8個(gè)按鍵的狀態(tài) CJNE A,R3,RETURN;兩次鍵值比較,不同, ;是抖動(dòng)引起,轉(zhuǎn)RETURNKEY0: MOV C,P1.0;有鍵按下,讀P1.0的按鍵狀態(tài) JC KEY1 ;P1.0為高,該鍵未按下,跳KEY1, ;判下一個(gè)鍵 LJMP PKEY0 ;P1.0的鍵按下,跳PKEY0處理KEY1: MOV C,P1.1;讀P1.1的按鍵狀態(tài) JC KEY2 ;P1.1為高,該鍵未按下,跳KEY2, ;判下一個(gè)鍵 LJMP PKEY1 ;P1.1的鍵按下,跳PKEY1處理對(duì)應(yīng)8個(gè)按鍵的鍵處理程序PKEY0~PKEY7,根據(jù)按鍵功能的要求來編寫。注意,在進(jìn)入鍵處理程序后,需要先等待按鍵釋放,再執(zhí)行鍵處理功能。另外,在鍵處理程序完成后,一定要跳向RETURN標(biāo)號(hào)處返回。(2)矩陣式鍵盤矩陣式(也稱行列式)鍵盤用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。如圖10-9所示,一個(gè)44的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)16個(gè)按鍵鍵盤。在按鍵數(shù)目較多的場(chǎng)合,要節(jié)省較多的I/O口線。圖10-9矩陣式鍵盤接口矩陣中無按鍵按下時(shí),行線為高電平;當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由與此行線相連的列線的電平?jīng)Q定。列線的電平如果為低,則行線電平為低;列線的電平如果為高,則行線的電平也為高,這是識(shí)別按鍵是否按下的關(guān)鍵所在。由于矩陣式鍵盤中行、列線為多鍵共用,各按鍵彼此將相互發(fā)生影響,所以必須將行、列線信號(hào)配合,才能確定閉合鍵位置。下面討論矩陣式鍵盤按鍵的識(shí)別方法。①掃描法。第1步,識(shí)別鍵盤有無鍵按下;第2步,如有鍵被按下,識(shí)別出具體的鍵位。下面以圖10-9所示的鍵3被按下為例,說明識(shí)別過程。第1步,識(shí)別鍵盤有無鍵按下。先把所有列線均置為0,然后檢查各行線電平是否都為高,如果不全為高,說明有鍵按下,否則無鍵被按下。例如,當(dāng)鍵3按下時(shí),第1行線為低,還不能確定是鍵3被按下,因?yàn)槿绻恍械逆I2、1或0之一被按下,行線也為低電平。只能得出第1行有鍵被按下的結(jié)論。第2步,識(shí)別出哪個(gè)按鍵被按下。采用逐列掃描法,在某一時(shí)刻只讓1條列線處于低電平,其余所有列線處于高電平。當(dāng)?shù)?列為低電平,其余各列為高電平時(shí),因?yàn)槭擎I3被按下,第1行的行線仍處于高電平;當(dāng)?shù)?列為低電平,其余各列為高電平時(shí),第1行的行線仍處于高電平;直到讓第4列為低電平,其余各列為高電平時(shí),此時(shí)第1行的行線電平變?yōu)榈碗娖?,?jù)此,可判斷第1行第4列交叉點(diǎn)處的按鍵,即鍵3被按下。綜上所述,掃描法的思想是,先把某一列置為低電平,其余各列置為高電平,檢查各行線電平的變化,如果某行線電平為低電平,則可確定此行此列交叉點(diǎn)處的按鍵被按下。②線反轉(zhuǎn)法。掃描法要逐列掃描查詢,有時(shí)則要多次掃描。而線反轉(zhuǎn)法則很簡(jiǎn)練,無論被按鍵是處于第一列或最后一列,均只需經(jīng)過兩步便能獲得此按鍵所在的行列值,下面以圖10-10所示的矩陣式鍵盤為例,介紹線反轉(zhuǎn)法的具體步驟。讓行線編程為輸入線,列線編程為輸出線,并使輸出線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。再把行線編程為輸出線,列線編程為輸入線,并使輸出線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。兩步即可確定按鍵所在的行和列,從而識(shí)別出所按的鍵。
圖10-10
采用線反轉(zhuǎn)法的矩陣式鍵盤假設(shè)鍵3被按下。第一步,P1.0~P1.3輸出全為“0”,然后,讀入P1.4~P1.7線的狀態(tài),結(jié)果P1.4=0,而P1.5~P1.7均為1,因此,第1行出現(xiàn)電平的變化,說明第1行有鍵按下;第二步,讓P1.4~P1.7輸出全為“0”,然后,讀入P1.0~P1.3位,結(jié)果P1.0=0,而P1.1~P1.3均為1,因此第4列出現(xiàn)電平的變化,說明第4列有鍵按下。綜上所述,即第1行、第4列按鍵被按下,此按鍵即鍵3按下。線反轉(zhuǎn)法簡(jiǎn)單適用,但不要忘記按鍵去抖動(dòng)處理。10.2.3鍵盤的工作方式單片機(jī)在忙于其他各項(xiàng)工作任務(wù)時(shí),如何兼顧鍵盤的輸入,這取決于鍵盤的工作方式。工作方式選取原則是,既要保證及時(shí)響應(yīng)按鍵操作,又不過多占用單片機(jī)工作時(shí)間。鍵盤工作方式有3種,即編程掃描、定時(shí)掃描和中斷掃描。1.編程掃描方式也稱查詢方式,利用單片機(jī)空閑時(shí),調(diào)用鍵盤掃描子程序,反復(fù)掃描鍵盤。如果單片機(jī)的查詢的頻率過高,雖能及時(shí)響應(yīng)鍵盤的輸入,但也會(huì)影響其他任務(wù)的進(jìn)行。查詢的頻率過低,可能會(huì)鍵盤輸入漏判。所以要根據(jù)單片機(jī)系統(tǒng)的繁忙程度和鍵盤的操作頻率,來調(diào)整鍵盤掃描的頻率。編程掃描程序框圖
消除按鍵抖動(dòng)、鍵閉合一次僅進(jìn)行一次按鍵的處理。2.定時(shí)掃描方式每隔一定的時(shí)間對(duì)鍵盤掃描一次。在這種方式中,通常利用單片機(jī)內(nèi)的定時(shí)器產(chǎn)生的定時(shí)中斷,進(jìn)入中斷子程序來對(duì)鍵盤進(jìn)行掃描,在有鍵按下時(shí)識(shí)別出該鍵,并執(zhí)行相應(yīng)鍵的處理程序。為了不漏判有效的按鍵,定時(shí)中斷的周期一般應(yīng)小于100ms。F1:去除抖動(dòng)標(biāo)志位F2:已識(shí)別完按鍵標(biāo)志位每10ms定時(shí)中斷。定時(shí)掃描程序框圖3.中斷掃描方式為提高單片機(jī)掃描鍵盤的工作效率,可采用中斷掃描方式,如圖10-11所示。圖中的鍵盤只有在鍵盤有按鍵按下時(shí),發(fā)出中斷請(qǐng)求信號(hào),單片機(jī)響應(yīng)中斷,執(zhí)行鍵盤掃描程序中斷服務(wù)子程序。如無鍵按下,單片機(jī)將不理睬鍵盤。此種方式的優(yōu)點(diǎn)是,只有按鍵按下時(shí),才進(jìn)行處理,所以其實(shí)時(shí)性強(qiáng),工作效率高。圖10-11采用中斷掃描方式的矩陣式鍵盤矩陣式鍵盤所完成的工作分為3個(gè)層次。(1)單片機(jī)如何來監(jiān)視鍵盤的輸入,體現(xiàn)在鍵盤的工作方式上就是:
①編程掃描;②定時(shí)掃描;③中斷掃描。(2)確定按下鍵的鍵號(hào)。體現(xiàn)在按鍵的識(shí)別方法上就是:
①掃描法;②線反轉(zhuǎn)法。(3)根據(jù)按下鍵的鍵號(hào),實(shí)現(xiàn)按鍵的功能,即跳向?qū)?yīng)的鍵處理程序。ORG0000HSTART:LJMPMAIN ORG0030HMAIN:MOVSP,#60H JNBP1.0,M0 ;查詢是否有鍵按下 JNBP1.1,M1 ;查詢K2鍵是否按下 JNBP1.2,M2 ;查詢K3鍵是否按下 JNBP1.3,M3 ;查詢K4鍵是否按下 JNBP1.4,M4 ;查詢K5鍵是否按下 JNBP1.5,M5 ;查詢K6鍵是否按下 JNBP1.6,M6 ;查詢K7鍵是否按下 JNBP1.7,M7 ;查詢K8鍵是否按下M0: LCALLDELAY ;延時(shí),反彈跳 JNBP1.0,P10 ;K1鍵壓下處理 SJMPMAINM1: LCALLDELAY ;延時(shí),反彈跳 JNBP1.1,P11 ;K2鍵壓下處理 SJMPMAINM2: LCALLDELAY ;延時(shí),反彈跳 JNBP1.2,P12 ;K3鍵壓下處理 SJMPMAINM3: LCALLDELAY ;延時(shí),反彈跳 JNBP1.3,P13 ;K3鍵壓下處理 SJMPMAINM4: LCALLDELAY ;延時(shí),反彈跳 JNBP1.4,P14 ;K5鍵壓下處理 SJMPMAINM5: LCALLDELAY ;延時(shí),反彈跳 JNBP1.5,P15 ;K6鍵壓下處理 SJMPMAINM6: LCALLDELAY ;延時(shí),反彈跳 JNBP1.6,P16 ;K7鍵壓下處理 SJMPMAINM7: LCALLDELAY ;延時(shí),反彈跳 JNBP1.7,P17 ;K8鍵壓下處理 SJMPMAINP10: CPLP0.0 SJMPMAINP11: CPLP0.1 SJMPMAINP12: CPLP0.2 SJMPMAINP13: CPLP0.3 SJMPMAINP14: CPLP0.4 SJMPMAINP15: CPLP0.5 SJMPMAINP16: CPLP0.6 SJMPMAINP17: CPLP0.7 SJMPMAINDELAY: MOV R5,#50H ;延時(shí)子程序D2: MOV R6,#0F0HD1: NOP DJNZ R6,D1 DJNZ R5,D2 RET END10.3鍵盤/顯示器接口設(shè)計(jì)實(shí)例在單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)中,一般都是把鍵盤和顯示器放在一起考慮。也有的系統(tǒng)僅單獨(dú)需要鍵盤或顯示器。10.3.1利用并行I/O芯片8155H或51單片機(jī)的串行口實(shí)現(xiàn)鍵盤/顯示器接口(略)10.3.2各種專用的鍵盤/顯示器接口芯片簡(jiǎn)介用專用芯片,可省去編寫鍵盤/顯示器動(dòng)態(tài)掃描程序以及鍵盤去抖動(dòng)程序編寫的繁瑣工作。目前各種專用接口芯片種類繁多,各有特點(diǎn),總體趨勢(shì)是并行接口芯片逐漸退出,串行接口芯片越來越多的得到應(yīng)用。早期的較為流行的鍵盤/顯示器芯片8279,目前流行的鍵盤/顯示器接口芯片均采用串行通信方式,占用口線少。常見的芯片有:周立功公司的ZLG7289A、ZLG7290B、MAX7219、南京沁恒公司的CH451、HD7279和BC7281等。這些芯片全采用動(dòng)態(tài)掃描方式,且控制的鍵盤均為編碼鍵盤。1.專用鍵盤/顯示器接口芯片8279可編程的并行鍵盤/顯示器接口芯片。內(nèi)部有鍵盤FIFO(先進(jìn)先出堆棧)/傳感器雙重功能的8×8=64位的RAM,鍵盤控制部分可控制8×8的鍵盤矩陣,能自動(dòng)獲得按下鍵的鍵號(hào)。自動(dòng)去鍵盤抖動(dòng)并具有雙鍵鎖定保護(hù)功能。顯示RAM的容量為16×8位,最多可控制16個(gè)LED數(shù)碼管顯示。2.專用鍵盤/顯示器芯片ZLG7290B采用I2C串行口總線結(jié)構(gòu),可實(shí)現(xiàn)8位LED顯示和64鍵的鍵盤管理,需外接晶振,使用按鍵功能時(shí)要接8個(gè)二極管,電路稍顯復(fù)雜,且每次I2C通信間隔稍長(zhǎng)(10ms)。功能:閃爍、段點(diǎn)亮、段熄滅、功能鍵、連擊鍵計(jì)數(shù)等。其中,功能鍵實(shí)現(xiàn)了組合按鍵,這在此類芯片中極具特點(diǎn);連擊鍵計(jì)數(shù)實(shí)現(xiàn)了識(shí)別長(zhǎng)按鍵的功能,也是獨(dú)有的。3.專用顯示器芯片MAX7219MAXIM(美信)公司的產(chǎn)品。該芯片采用串行SPI接口,僅是單純驅(qū)動(dòng)共陰極LED數(shù)碼管,沒有鍵盤管理功能。4.專用顯示器芯片BC7281可驅(qū)動(dòng)16位LED數(shù)碼管顯示和實(shí)現(xiàn)64鍵的鍵盤管理,可實(shí)現(xiàn)閃爍、段點(diǎn)亮、段熄滅等功能。最大特點(diǎn)是通過外接移位寄存器驅(qū)動(dòng)16位LED數(shù)碼管。但所需外圍電路較多,占PCB空間較大,且在驅(qū)動(dòng)16位LED數(shù)碼管時(shí),由于采用動(dòng)態(tài)掃描方式工作,電流噪聲過大。5.專用鍵盤/顯示器芯片HD7279與單片機(jī)間采用串行通信,可控制并驅(qū)動(dòng)8位LED數(shù)碼管和實(shí)現(xiàn)64(8×8)鍵的鍵盤管理。外圍電路簡(jiǎn)單,價(jià)格低廉。由于具有上述優(yōu)點(diǎn),目前得到較為廣泛的應(yīng)用。6.專用鍵盤/顯示器芯片CH451可動(dòng)態(tài)驅(qū)動(dòng)8位LED數(shù)碼管顯示,具有BCD碼譯碼、閃爍、移位等功能。內(nèi)置大電流驅(qū)動(dòng)級(jí),段電流不小于30mA,位電流不小于160mA。內(nèi)置64(8×8)鍵鍵盤控制器,可對(duì)8×8矩陣鍵盤自動(dòng)掃描,且有去抖動(dòng)電路,并提供鍵盤中斷和按鍵釋放標(biāo)志位,可供查詢按鍵按下與釋放狀態(tài)。片內(nèi)內(nèi)置上電復(fù)位和看門狗定時(shí)器。芯片性價(jià)比較高,是目前使用較為廣泛的專用的鍵盤/顯示器接口芯片之一。但抗干擾能力不是很強(qiáng),不支持組合鍵識(shí)別。上述各種芯片,CH451和HD7279使用較多。從性價(jià)比,首推CH451,主要對(duì)LED數(shù)碼管的驅(qū)動(dòng)功能較完善。10.3.3利用鍵盤/顯示接口芯片8279實(shí)現(xiàn)的鍵盤/顯示器接口8279是Intel公司為8位微處理器設(shè)計(jì)的通用鍵盤/顯示器接口芯片,其功能是:接收來自鍵盤的輸入數(shù)據(jù)并作預(yù)處理;完成數(shù)據(jù)顯示的管理和數(shù)據(jù)顯示器的控制。單片機(jī)應(yīng)用系統(tǒng)采用8279管理鍵盤和顯示器,軟件編程極為簡(jiǎn)單,顯示穩(wěn)定,且減少了主機(jī)的負(fù)擔(dān)。
1.8279的引腳定義
DB7~DB0為雙向外部數(shù)據(jù)總線;為片選信號(hào)線,低電平有效;和為讀和寫選通信號(hào)線;IRQ為中斷請(qǐng)求輸出線。RL7~RL0為鍵盤回送線。SL3~SL0為掃描輸出線。OUTB3~OUTB0、OUTA3~OUTA0為顯示寄存器數(shù)據(jù)輸出線。RESET為復(fù)位輸入線。SHIFT為換檔鍵輸入線。CNTL/STB為控制/選通輸入線。CLK為外部時(shí)鐘輸入線。為顯示器消隱控制線。A0為緩沖器選擇端。DB0~DB7:具有三態(tài)的雙向數(shù)據(jù)總線。用于8279與外部CPU之間傳遞命令(控制字)和數(shù)據(jù)。CLK:系統(tǒng)時(shí)鐘輸入。用于8279內(nèi)部產(chǎn)生工作的時(shí)序。RESET:復(fù)位信號(hào)輸入端。當(dāng)RESET=1時(shí),8279被復(fù)位,復(fù)位后8279內(nèi)部狀態(tài)如下1,16個(gè)字符顯示,左入口;2,編碼掃描鍵盤,雙鍵鎖定;3,程序時(shí)鐘編程為31。/CS:片選段。低電平有效;A0:緩沖器選擇端。A0=1時(shí):若CPU對(duì)8279執(zhí)行寫入操作時(shí),寫入是命令字;若CPU從8279讀數(shù)據(jù)時(shí),讀出的是8279的狀態(tài)。A0=0時(shí),寫入和讀出的均為數(shù)據(jù)。/RD、/WR:讀寫控制線。來自CPU的控制信號(hào),控制8279的讀寫操作。IRQ:
中斷請(qǐng)求信號(hào)。輸出線,高電平有效。SL0~SL3:
掃描輸出線。作為鍵盤、顯示器的掃描信號(hào),通過編程可定為“編碼輸出”(外接4-16譯碼器產(chǎn)生16選1的掃描信號(hào));也可設(shè)定為“譯碼輸出”,直接輸出4選1的掃描信號(hào)。RL0~RL7:回復(fù)輸入線。用來接收掃描鍵盤的回復(fù)信號(hào)。SHIFT:移位信號(hào)的輸入線,高電平有效。該信號(hào)是8279鍵盤數(shù)據(jù)的次高位(D6位),通常用來補(bǔ)充鍵盤開關(guān)的功能,如鍵盤的上、下?lián)豕δ?。在傳感器方式和選通方式中,SHIFT無效。CNTL/STB:控制/選通輸入線,高電平有效。鍵盤方式時(shí)該輸入信號(hào)是鍵盤信號(hào)的最高位(D7),通常用來擴(kuò)充鍵盤開關(guān)的控制功能,作為鍵盤控制功能鍵用。在傳感器方式和選通方式中,CNTL無效。在選通方式中,該信號(hào)的上升沿可將來RL0~RL7的數(shù)據(jù)存放到FIFORAM中。OUTA0~OUTA3:
A組顯示輸出線(接LED的e~g,dp劃)。OUTB0~OUTB3:
B組顯示輸出線(接LED的a~d劃)。上面兩組線均為顯示用的信息輸出線,數(shù)據(jù)的輸出與SL0~SL7的數(shù)字掃描信號(hào)同步,實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)掃描顯示。A組與B組輸出線可以單獨(dú)使用(如輸出BCD碼經(jīng)外部的“BCD-七段譯碼器”與顯示器連接);也可以將A、B兩組合并使用,直接輸出七段的“字形碼”供顯示器使用。/BD:消隱顯示輸出線,低電平有效。該輸出信號(hào)在數(shù)字切換顯示或使用顯示消隱命令時(shí),控制顯示器將顯示消隱。2.8279的內(nèi)部結(jié)構(gòu)
數(shù)據(jù)緩沖器將雙向三態(tài)8位內(nèi)部數(shù)據(jù)總線D0~D7與系統(tǒng)總線相連,用于傳送CPU與8279之間的命令和狀態(tài)??刂坪投〞r(shí)寄存器用于寄存鍵盤和顯示器的工作方式,鎖存操作命令,通過譯碼器產(chǎn)生相應(yīng)的控制信號(hào),使8279的各個(gè)部件完成相應(yīng)的控制功能。定時(shí)器包含一些計(jì)數(shù)器,其中有一個(gè)可編程的5位計(jì)數(shù)器(計(jì)數(shù)值在2~31間),對(duì)CLK輸入的時(shí)鐘信號(hào)進(jìn)行分頻,產(chǎn)生100KHz的內(nèi)部定時(shí)信號(hào)(此時(shí)掃描時(shí)間為5.1ms,消抖時(shí)間為10.3ms)。外部輸入時(shí)鐘信號(hào)周期不小于500ns。
掃描計(jì)數(shù)器有兩種輸出方式:一是編碼方式,計(jì)數(shù)器以二進(jìn)制方式計(jì)數(shù),4位計(jì)數(shù)狀態(tài)從掃描線SL3~SL0輸出,經(jīng)外部譯碼器可以產(chǎn)生16位的鍵盤和顯示器掃描信號(hào);另一種是譯碼方式,掃描計(jì)數(shù)器的低兩位經(jīng)內(nèi)部譯碼后從SL3~SL0輸出,直接作為鍵盤和顯示器的掃描信號(hào)?;厮途彌_器、鍵盤消抖及控制完成對(duì)鍵盤的自動(dòng)掃描以搜索閉合鍵,鎖存RL7~RL0的鍵輸入信息,消除鍵的抖動(dòng),將鍵輸入數(shù)據(jù)寫入內(nèi)部先進(jìn)先出存儲(chǔ)器(FIFORAM)。RL7~RL0為回送信號(hào)線作為鍵盤的檢測(cè)輸入線,由回送緩沖器緩沖并鎖存,當(dāng)某一鍵閉合時(shí),附加的移位狀態(tài)SHIFT、控制狀態(tài)CNTL及掃描碼和回送信號(hào)拼裝成一個(gè)字節(jié)的“鍵盤數(shù)據(jù)”送入8279內(nèi)部的FIFO(先進(jìn)先出)RAM。
鍵盤的數(shù)據(jù)格式為:在傳感器矩陣方式和選通方式時(shí),回送線RL7~RL0的內(nèi)容被直接送往相應(yīng)的FIFORAM。輸入數(shù)據(jù)即為RL7~RL0。數(shù)據(jù)格式為:
FIFO/傳感器RAM是具有雙功能的8×8RAM在鍵盤或選通方式時(shí),它作為FIFORAM,依先進(jìn)先出的規(guī)則輸入或讀出,其狀態(tài)存放在FIFO/傳感器RAM狀態(tài)寄存器中。只要FIFORAM不空,狀態(tài)邏輯將置中斷請(qǐng)求IRQ=1;在傳感器矩陣方式,作為傳感器RAM,當(dāng)檢測(cè)出傳感器矩陣的開關(guān)狀態(tài)發(fā)生變化時(shí),中斷請(qǐng)求信號(hào)IRQ=1。在外部譯碼掃描方式時(shí),可對(duì)8×8矩陣開關(guān)的狀態(tài)進(jìn)行掃描,在內(nèi)部譯碼掃描方式時(shí),可對(duì)4×8矩陣開關(guān)的狀態(tài)進(jìn)行掃描。顯示RAM用來存儲(chǔ)顯示數(shù)據(jù),容量是16×8位在顯示過程中,存儲(chǔ)的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器輸出分成兩組,即OUTA0~OUTA3和OUTB0~OUTB3,兩組可以單獨(dú)送數(shù),也可以組成一個(gè)8位的字節(jié)輸出,該輸出與位選掃描線SL0~SL3配合就可以實(shí)現(xiàn)動(dòng)態(tài)掃描顯示。顯示地址寄存器用來寄存CPU讀/寫顯示RAM的地址,可以設(shè)置為每次讀出或?qū)懭牒笞詣?dòng)遞增。3.8279的命令字和狀態(tài)字
8279是可編程接口芯片,其工作方式、工作特點(diǎn)等均是通過CPU向8279發(fā)送命令實(shí)現(xiàn)的,因此對(duì)8279的編程實(shí)際上就是向8279寫入命令字的過程。8279共有8條控制字,命令字是由每個(gè)字節(jié)中的D7~D5三位為特征區(qū)分。具體的命令字格式如下:D7D6D5D4D3D2D1D0命令字特征位(1)鍵盤/顯示方式命令字D7,D6,D5=000:方式命令字的特征位。D3,D4=DD:顯示工作方式設(shè)定。
00:8位字符顯示,左入口(打字機(jī)方式);
01:16位字符顯示,左入口(打字機(jī)方式);
10:8位字符顯示,右入口(計(jì)算器方式);
11:16位字符顯示,右入口(計(jì)算器方式)。000DDKKKD7D6D5
D4D3
D2D1D0命令字特征位
顯示工作方式
鍵盤工作方式
D2,D1,D0=KKK:設(shè)定鍵盤工作方式。
000:編碼掃描鍵盤,雙鍵鎖定;
001:譯碼掃描鍵盤,雙鍵鎖定;
010:編碼掃描鍵盤,N鍵輪回;
011:譯碼掃描鍵盤,N鍵輪回;
100:編碼掃描傳感器;
101:譯碼掃描傳感器;
110:選通輸入,編碼顯示掃描;
111:選通輸入,譯碼顯示掃描;【說明】:1,“雙鍵鎖定”指有2個(gè)鍵按下時(shí),取最后彈起的鍵;2,“N鍵輪回”指有N個(gè)鍵按下時(shí),根據(jù)它們按下的順序依次存入FIFORAM中。3,“編碼輸出”指按二進(jìn)制計(jì)數(shù)器規(guī)律輸出數(shù)據(jù);4,“譯碼輸出”指按譯碼器輸出的規(guī)律輸出(如4選1)。(2)程序時(shí)鐘命令8279內(nèi)部有自己的時(shí)序電路,其時(shí)鐘信號(hào)來源于外部輸入的CLK,為了使輸入的時(shí)鐘滿足內(nèi)部100KHz的要求,就要對(duì)外部輸入的CLK進(jìn)行適當(dāng)?shù)姆诸l。D4,D3,D2,D1,D0=PPPPP:分頻系數(shù)范圍:2~31。001PPPPPD7D6D5
D4D3D2D1D0命令字特征位
對(duì)輸入信號(hào)CLK的分頻系數(shù)(3)讀FIFORAM命令FIFORAM為存放掃描鍵盤時(shí)獲得的“鍵值”數(shù)據(jù),容量為8*8。CPU讀8279的數(shù)據(jù)口的數(shù)據(jù)時(shí),可能有兩類數(shù)據(jù):1,F(xiàn)IFORAM中掃描鍵盤時(shí)獲得的“鍵值”數(shù)據(jù);2,顯示RAM中的現(xiàn)實(shí)數(shù)據(jù)。所以必須事先通過命令字來選擇。D4=AI:地址增量控制。若AI=1,在每次讀FIFORAM后,地址自動(dòng)+1。AI的使用簡(jiǎn)化了編程,不用每讀一次數(shù)據(jù)給出一個(gè)地址。010AIXAAAD7D6D5
D4D3D2D1D0命令字特征位
地址自動(dòng)增量
FIFORAM地址
(4)讀顯示RAM命令顯示RAM用來存放8279動(dòng)態(tài)顯示的數(shù)據(jù),容量16*8。在顯示RAM中,數(shù)據(jù)的存放順序與在數(shù)碼管上顯示的數(shù)據(jù)順序是相對(duì)應(yīng)得。因此,要顯示的數(shù)據(jù)要按順序存放到顯示RAM中。在8279的顯示方式中有8位顯示和16位顯示兩種,對(duì)應(yīng)占用顯示RAM8字節(jié)或16字節(jié)。011AIAAAAD7D6D5
D4
D3D2D1D0命令字特征位
地址自動(dòng)增量
顯示RAM地址
(5)寫顯示RAM命令在向8279的數(shù)據(jù)口寫入要顯示的數(shù)據(jù)前,要先向8279的命令/狀態(tài)口寫入一個(gè)“寫顯示RAM”命令。其作用是通過“寫顯示RAM”命令設(shè)定要寫入的顯示數(shù)據(jù)到顯示RAM中的地址。例如:當(dāng)8279設(shè)定為“8位右入口”工作方式時(shí),要顯示的8位數(shù)據(jù)就要從0000地址依次寫入(AI=1),這樣命令字的格式為10010000B既90H。100AIAAAAD7D6D5
D4
D3D2D1D0命令字特征位
地址自動(dòng)增量
顯示RAM地址
(6)顯示禁止寫入/消隱命令此命令用于OUTA,OUTB分為兩組4位顯示方式時(shí)使用。D3,D2=IWA,IWB:分別屏蔽A或B組的顯示。如:IWA=1時(shí)禁止寫入A組顯示RAM。當(dāng)CPU向8279的B組顯示RAM送數(shù)時(shí),先要把A組屏蔽掉,這樣CPU送給B組的數(shù)據(jù)不會(huì)影響到A組的顯示。D1,D0=BLA,BLB:顯示輸出消隱控制。如:BL/A=1時(shí),A組顯示被消隱,=0時(shí)恢復(fù)。101×IWAIWBBLABLBD7D6D5D4D3D2
D1D0
命令字特征位
屏蔽顯示控制
消隱控制
(7)清除命令
用來清除FIFORAM和顯示RAM,常用在對(duì)8279初始化中。D4,D3,D2=Cd,Cd,Cd:清除顯示RAM的方式。10×:全部清除“顯示RAM”;
110:將“顯示RAM”清為20H(A組0010,B組0000);
111:將“顯示RAM”全部置為“1”;
000:不清除(若Ca=1時(shí),D3,D2仍有效)。D1=Cf:Cf=1時(shí),清空FIFORAM。D0=Ca:總清位,兼有Cd,Cf的功能。Ca=1時(shí),對(duì)顯示RAM的清除取決于D3,D2的編碼。110CdCdCdCfCaD7D6D5
D4D3D2
D1D0命令字特征位
清除“顯示RAM”的方式
清空FIFO
總清
(8)結(jié)束中斷/錯(cuò)誤方式設(shè)置命令此命令有兩種不同的應(yīng)用:(a)作為結(jié)束中斷的命令。8279與CPU之間可以以中斷方式進(jìn)行工作。在傳感器(鍵盤掃描)工作方式中,若傳感器(按鍵)的狀態(tài)發(fā)生變化時(shí),檢測(cè)電路將其狀態(tài)(鍵值)寫入FIFORAM中,并啟動(dòng)中斷邏輯使IRQ變高,向CPU發(fā)中斷申請(qǐng)。如果,在讀FIFORAM數(shù)據(jù)前,寫入8279的“讀FIFORAM”命令中AI=0時(shí),在CPU讀出FIFORAM中的一個(gè)數(shù)據(jù)后,中斷請(qǐng)求IRQ自動(dòng)清除;若中AI=1時(shí),在讀出FIFORAM中的數(shù)據(jù)后,中斷請(qǐng)求時(shí)不能自動(dòng)除,必須使用“結(jié)束中斷/錯(cuò)誤方式”命令來撤掉IRQ。111E××××D7D6D5
D4D3D2D1D0
命令字特征位
屏蔽顯示控制(b)作為特定的“錯(cuò)誤方式”設(shè)定命令
針對(duì)與8279鍵盤處于“N鍵輪回”方式時(shí)使用。如果E=1就使8279處于此種工作方式。在此種方式中,如果有多個(gè)鍵同時(shí)按下時(shí),F(xiàn)IFO的狀態(tài)字中的S/E位=1并產(chǎn)生中斷請(qǐng)求信號(hào)和阻止數(shù)據(jù)寫入FIFORAM中。錯(cuò)誤特征位S/E在讀出FIFO狀態(tài)字時(shí)被讀出,而在執(zhí)行Cf=1的“清除”命令時(shí)被復(fù)位。8279的命令字是以D7,D6和D5為特征位的。在通過8279的狀態(tài)/命令口時(shí)會(huì)根據(jù)其特征位自動(dòng)分配到相應(yīng)的控制寄存器中。(9)8279的狀態(tài)字狀態(tài)字主要是用于表征鍵盤和選通方式下,F(xiàn)IFORAM中的狀態(tài),使用與查詢是否發(fā)生傳感器操作(按鍵)和有無錯(cuò)誤發(fā)生。DU:顯示無效特征位。當(dāng)8279的顯示RAM因清除或全清操作還未完成時(shí),DU=1。S/E:傳感器信號(hào)結(jié)束/錯(cuò)誤特征位。8279在傳感器方式時(shí),S/E=1表示最后一個(gè)信號(hào)已經(jīng)進(jìn)入傳感器RAM中。而8279在特殊的錯(cuò)誤方式時(shí),S/E=1表示發(fā)生了多鍵同時(shí)按下的錯(cuò)誤。O、U:超出和不足錯(cuò)誤特征位。當(dāng)FIFORAM已滿時(shí),若還有鍵盤數(shù)據(jù)輸入時(shí)就發(fā)生錯(cuò)誤,此時(shí)O=1;當(dāng)FIFORAM已經(jīng)置空,CPU還想讀數(shù)據(jù)則會(huì)出現(xiàn)不足錯(cuò)誤,U=1。F:若F=1表示FIFORAM已經(jīng)滿.NNN:表征FIFORAM中的字符數(shù),最多8個(gè)。DUS/EOUFNNND7D6
D5D4
D3
D2D1D0返回
ORG0000HSTART: LJMPMAIN ORG0013HLJMPPKEYI ORG0030HMAIN: MOVSP,#60H ;主程序 MOV70H,#00 ;設(shè)置顯示緩沖區(qū)初值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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é)議合同酒店
- 以創(chuàng)新管理模式推動(dòng)發(fā)展在企業(yè)管理經(jīng)驗(yàn)交流會(huì)上的發(fā)言
- 酒后頭痛病因介紹
- 山東省濟(jì)寧市微山縣第二中學(xué)2024-2025學(xué)年高一12月月考?xì)v史試題
- (范文)發(fā)酵罐項(xiàng)目立項(xiàng)報(bào)告
- 房屋與室內(nèi)環(huán)境檢測(cè)技術(shù)-模塊三房屋實(shí)體查驗(yàn)與檢18課件講解
- 2024秋新滬科版物理八年級(jí)上冊(cè)課件 第六章 熟悉而陌生的力 第4節(jié) 探究:滑動(dòng)摩擦力大小與哪里因素有關(guān)
- 《2024產(chǎn)業(yè)互聯(lián)網(wǎng)發(fā)展報(bào)告》教學(xué)應(yīng)用說明
- 電力及電機(jī)拖動(dòng)試題及參考答案
- 養(yǎng)老院老人生活設(shè)施維修人員晉升制度
- 2022-2023學(xué)年成都市高二上英語期末考試題(含答案)
- 保密警示教育課
- QC成果提高疊合板安裝合格率
- 線路施工質(zhì)量驗(yàn)收及評(píng)定范圍劃分表
- 7漆洪波教授解讀:ACOG妊娠期高血壓和子癇前期指南2023年版
- 北師大版二年級(jí)下冊(cè)口算題大全(全冊(cè)齊全)
- 正庚烷-正辛烷連續(xù)精餾塔設(shè)計(jì)
- 2023年江蘇無錫市屆普通高中學(xué)業(yè)水平測(cè)試模擬考試地理試卷及答案
- 會(huì)計(jì)人員年終個(gè)人工作總結(jié)(4篇)
- 亨利愛幫忙 繪本課件
- 2023版思想道德與法治專題4 繼承優(yōu)良傳統(tǒng) 弘揚(yáng)中國(guó)精神 第2講 做新時(shí)代的忠誠(chéng)愛國(guó)者
評(píng)論
0/150
提交評(píng)論