第7章單片機(jī)IO擴(kuò)展及應(yīng)用2_第1頁
第7章單片機(jī)IO擴(kuò)展及應(yīng)用2_第2頁
第7章單片機(jī)IO擴(kuò)展及應(yīng)用2_第3頁
第7章單片機(jī)IO擴(kuò)展及應(yīng)用2_第4頁
第7章單片機(jī)IO擴(kuò)展及應(yīng)用2_第5頁
已閱讀5頁,還剩132頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 可編程并行可編程并行I/O接口接口8255A 2 可編程可編程RAM/IO/CTC接口接口81553 鍵盤顯示器接口鍵盤顯示器接口82794 LED數(shù)碼顯示器接口數(shù)碼顯示器接口 5 鍵盤接口鍵盤接口 第第7章單片機(jī)章單片機(jī)I/O擴(kuò)展及應(yīng)用擴(kuò)展及應(yīng)用 接口芯片與接口技術(shù)接口芯片與接口技術(shù) 1 可編程并行可編程并行I/O接口接口8255A 8255A可編程并行輸入/輸出接口芯片是Intel公司生產(chǎn)的標(biāo)準(zhǔn)外圍接口電路。它采用NMOS工藝制造,用單一5V電源供電,具有40條引腳,采用雙列直插式封裝。它有A、B、C3個端口共24條I/O線,可以通過編程的方法來設(shè)定端口的各種I/O功能。由于它功能強(qiáng),

2、又能方便地與各種微機(jī)系統(tǒng)相接,而且在連接外部設(shè)備時,通常不需要再附加外部電路,所以得到了廣泛的應(yīng)用。 7.1.1 8255A的內(nèi)部結(jié)構(gòu)與引腳 1. 8255A的內(nèi)部結(jié)構(gòu) 8255A的內(nèi)部結(jié)構(gòu)如圖61所示,由以下幾部分組成。 1)數(shù)據(jù)端口A、B、C8255A有3個8位數(shù)據(jù)端口,即端口A、端口B和端口C。編程人員可以通過軟件將它們分別作為輸入端口或輸出端口,不過這3個端口在不同的工作方式下有不同的功能及特點(diǎn),如表71所示。圖71 8255A的內(nèi)部結(jié)構(gòu)圖 A組控制B組端口B(8)B組端口C下半部(4)B組控制數(shù)據(jù)總線讀/寫控制邏輯A組端口A(8)A組端口C上半部(4)I/OPC7PC4I/OPC3P

3、C0I/OPA7PA0I/OPB7PB0外設(shè)接口內(nèi)部邏輯8位內(nèi)部數(shù)據(jù)總線CPU接口DBRDWRA0A1RESETCS 2) A組和B組控制電路 這是兩組根據(jù)CPU的命令字控制8255A工作方式的電路。它們的控制寄存器先接受CPU送出的命令字,然后根據(jù)命令字分別決定兩組的工作方式,也可根據(jù)CPU的命令字對端口C的每1位實(shí)現(xiàn)按位“復(fù)位”或“置位”。A組控制電路控制端口A和端口C的上半部(PC7PC4)。B組控制電路控制端口B和端口C的下半部(PC3PC0)。表71 8255A端口功能表 工作方式A口B口C口0基本輸入輸出輸出鎖存輸入三態(tài)基本輸入輸出輸出鎖存輸入三態(tài)基本輸入輸出輸出鎖存輸入三態(tài)1應(yīng)答

4、式輸入/輸出輸入輸出均鎖存應(yīng)答式輸入/輸出輸入輸出均鎖存作為A口和B口的控制位及狀態(tài)位2應(yīng)答式輸入/輸出輸入輸出均鎖存作為A口的控制及狀態(tài)位 2. 8255A的芯片引腳 8255A是一種有40個引腳的雙列直插式標(biāo)準(zhǔn)芯片,其引腳排列如圖62所示。除電源(5V)和地址以外,其它信號可以分為兩組: (1)與外設(shè)相連接的有: PA7PA0:A口數(shù)據(jù)線 PB7PB0:B口數(shù)據(jù)線 PC7PC0:C口數(shù)據(jù)線圖72 8255A的芯片引腳圖 (2)與CPU相連接的有: D7D0:8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。 RESET:復(fù)位信號,高電平有效。當(dāng)RESET有效時,所有內(nèi)部寄存器都被清除,同時,3個數(shù)據(jù)

5、端口被自動設(shè)為輸入方式。 :片選信號,低電平有效。只有當(dāng) 有效時,芯片才被選中,允許8255A與CPU交換信息。 :讀信號,低電平有效。當(dāng) 有效時,CPU可以從8255A中讀取輸入數(shù)據(jù)。CSCSRDRD :寫信號,低電平有效。當(dāng) 有效時,CPU可以往8255A中寫入控制字或數(shù)據(jù)。 A1、A0:端口選擇信號。8255A內(nèi)部有3個數(shù)據(jù)端口和1個控制端口,當(dāng)A1A0=00時選中端口A;A1A0=01時選中端口B;A1A0=10時選中端口C;A1A0=11時選中控制口。 A1、A0和 、 及 組合所實(shí)現(xiàn)的各種功能如表7-2所示。WRWRWRRDCS表72 8255A端口選擇表 A1A0RDWRCS操

6、作00010A口數(shù)據(jù)總線01010B口數(shù)據(jù)總線10010C口數(shù)據(jù)總線00100數(shù)據(jù)總線A口01100數(shù)據(jù)總線B口10100數(shù)據(jù)總線C口11100數(shù)據(jù)總線控制寄存器1數(shù)據(jù)總線為三態(tài)11010非法狀態(tài)110數(shù)據(jù)總線為三態(tài) 7.1.2 8255A的工作方式 8255A有3種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來指定。3種工作方式的傳送示意圖如圖73所示。 圖73 8255A的3種工作方式(a)方式0; (b)方式1; (c)方式2 地址總線控制總線數(shù)據(jù)總線RD WRCSD7D08255CABA0 A18844PB7-PB0PC3-PC0PC7-PC4PA7-PA0B組A組(a

7、)BCA88PB7PB0控制控制PA7PA0B組I/OA組BCAPB7PB0PA7PA088控制控制B組A組(b)(c) 1.方式0(基本輸入/輸出方式) 這種工作方式不需要任何選通信號,A口、B口及C口的高4位和低4位都可以設(shè)定為輸入或輸出。作為輸出口時,輸出的數(shù)據(jù)均被鎖存;作為輸入口時,A口的數(shù)據(jù)能鎖存,B口與C口的數(shù)據(jù)不能鎖存。 2.方式1(選通輸入/輸出方式) 在這種工作方式下,A口可由編程設(shè)定為輸入口或輸出口,C口的3位用來作為輸入/輸出操作的控制和同步信號;B口同樣可由編程設(shè)定為輸入口或輸出口,C口的另3位用來作為輸入/輸出操作的控制和同步信號。在方式1下A口和B口的輸入數(shù)據(jù)或輸出

8、數(shù)據(jù)都能被鎖存。 1)方式1下A口、B口均為輸入 在方式1下,A口和B口均工作在輸入狀態(tài)時,需利用C口的6條線作為控制和狀態(tài)信號線,其定義如圖64(a)所示。 圖74 方式1下的信號定義(a)A口、B口均為輸入時;(b)A口、B口均為輸出時 C口所提供的用于輸入的聯(lián)絡(luò)信號有: (Strobe):選通脈沖信號(輸入),低電平有效。當(dāng)外設(shè)送來 信號時,輸入的數(shù)據(jù)被裝入8255A的輸入鎖存器中。 IBF(InputBufferFull):輸入緩沖器滿信號(輸出),高電平有效。此信號有效時,表示已有一個有效的外設(shè)數(shù)據(jù)鎖存于8255A的口鎖存器中,尚未被CPU取走,暫不能向接口輸入數(shù)據(jù),它是一個狀態(tài)信號

9、。STBSTB INTR(InterruptRequest):中斷請求信號(輸出),高電平有效。當(dāng)IBF為高、 信號由低變高(后沿)時,該信號有效,向CPU發(fā)出中斷請求。 方式1 數(shù)據(jù)輸入過程如下: 當(dāng)外設(shè)的數(shù)據(jù)準(zhǔn)備好后,發(fā)出 信號,輸入的數(shù)據(jù)被裝入鎖存器中,然后IBF信號有效(變?yōu)楦唠娖?。 數(shù)據(jù)輸入操作的時序關(guān)系如圖75所示。STBSTB 圖75 方式1下的輸入時序 2) 方式1下A口、B口均為輸出 與輸入時一樣,要利用C口的6根信號線,其定義如圖64(b)所示。用于輸出的聯(lián)絡(luò)信號有: (1) (Acknowledge):外設(shè)響應(yīng)信號(輸入),低電平有效。 (2) (OutputBuffe

10、Full):輸出緩沖器滿信號(輸出),低電平有效。 (3)INTR:中斷請求信號(輸出),高電平有效。 ACKOBF 方式1下數(shù)據(jù)輸出過程如下: 當(dāng)外設(shè)接收并處理完1組數(shù)據(jù)后,發(fā)回 響應(yīng)信號。 數(shù)據(jù)輸出操作的時序關(guān)系如圖66所示。 應(yīng)當(dāng)指出,當(dāng)8255A的A口與B口同時為方式1的輸入或輸出時,需使用C口的6條線,C口剩下的2條線還可以用程序來指定數(shù)據(jù)的傳送方向是輸入還是輸出,而且也可以對它們實(shí)現(xiàn)置位或復(fù)位操作。當(dāng)一個口工作在方式1時,則C口剩下的5條線也可按照上述情況工作。 ACK圖76 方式1下的輸出時序 3. 方式2 8255A只有A口具有這種雙向輸入輸出工作方式,實(shí)際上是在方式1下A口輸

11、入輸出的結(jié)合。在這種方式下,A口為8位雙向傳輸口,C口的PC7PC3用來作為輸入/輸出的同步控制信號。在這種情況下,B口和PC2PC0只能編程為方式0或方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口方式1之下的控制線。 圖77 方式2下的信號定義A口PC7PC6PC5PC4PC38255APA0PA7OBFAACKASTBAIBFAINTRA 在方式2時,其輸入輸出的操作時序如圖68所示。 1) 輸入操作 當(dāng)外設(shè)向8255A送數(shù)據(jù)時,選通信號STBATX-也同時送到,選通信號將數(shù)據(jù)鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號IBFA成為高電平(有效),告訴外設(shè),A口已

12、收到數(shù)據(jù)。選通信號結(jié)束時,使中斷請求信號為高,向CPU請求中斷。 2)輸出操作 CPU響應(yīng)中斷,當(dāng)用輸出指令向8255A的A端口中寫入一個數(shù)據(jù)時,會發(fā)出寫脈沖信號 。 WR圖78 方式2下的時序圖 7.1.3 8255A的控制字及初始化 1.8255A的控制字 8255A為可編程接口芯片,以控制字形式對其工作方式和C口各位的狀態(tài)進(jìn)行設(shè)置。它有兩種控制字:工作方式控制字和C口置位/復(fù)位控制字。 1) 工作方式控制字 工作方式控制字用于確定各口的工作方式及數(shù)據(jù)傳送方向,其格式如圖69所示。 對工作方式控制字作如下說明: (1) A口有3種工作方式,而B口只有2種工作方式。 (2)A組包括A口與C口

13、的高4位,B組包括B口與C口的低4位。 (3)在方式1或方式2下,對C口的定義(輸入或輸出)不影響作為聯(lián)絡(luò)線使用的C口各位的功能。 (4)最高位(D7位)為標(biāo)志位,D7=1為方式控制字。 2) C口置位/復(fù)位控制字 利用C口置位/復(fù)位控制字可以很方便地使C口8位中的任一位清0或置1,該控制字的格式如圖69(b)所示。D7位為該控制字的標(biāo)志位,D7=0為C口置位/復(fù)位控制字。 在使用中,該控制字每次只能對C口中的一位進(jìn)行置位或復(fù)位。應(yīng)注意的是,作為聯(lián)絡(luò)線使用的C口各位是不能采用置位/復(fù)位操作來使其置位或復(fù)位的。其數(shù)值應(yīng)視現(xiàn)場的具體情況而定。 2. 8255A的初始化編程 8255A初始化的內(nèi)容就

14、是向控制寄存器寫入工作方式控制字或C口置位/復(fù)位控制字。這兩個控制字可按同一地址寫入且不受先后順序限制。由于兩個控制字因標(biāo)志位的狀態(tài)不同,因此8255A能加以區(qū)分。 圖79 8255A控制字格式(a)工作方式控制字; (b)C口置位/復(fù)位控制字D7=1為工作方式控制字標(biāo)志位置位/復(fù)位1=置位 0=復(fù)位D7=0為C口置位/復(fù)位控制字標(biāo)志位D7 D6 D5 D4 D3 D2 D1 D0B組D7 D6 D5 D4 D3 D2 D1 D00 1 2 3 4 5 6 70 1 0 1 0 1 0 10 0 1 1 0 0 1 10 0 0 0 1 1 1 1無關(guān)位選擇端口C(下口)1=輸入 0=輸出端口

15、B1=輸入 0=輸出方式選擇0=方式0 1=方式1端口C(下口)1=輸入 0=輸出端口A1=輸入 0=輸出方式 00=方式0選擇 01=方式1 1=方式2 A組 例如對8255A各口作如下設(shè)置:A口方式0輸入,B口方式0輸出,C口高位部分為輸出、低位部分為輸入。設(shè)控制寄存器的地址為03FFH,則其工作方式控制字可設(shè)置為: D0=1:C口低半部輸入; D1=0:B口輸出; D2=0:B口方式0; D3=0:C口高半部輸出; D4=1:A口輸入; D6D5=00:A口方式0; D7=1:工作方式字標(biāo)志。 因此工作方式控制字為10010001B即91H。 初始化程序段為: MOV DPTR,03FF

16、H MOV A,91H MOVX DPTR,A 若要使端口C的D3位置位的控制字為00000111B(即07H),而使D3位復(fù)位的控制字為00000110B(即06H)。 7.1.4 8255A與系統(tǒng)的連接 由于8255A是Intel公司專為其主機(jī)配套設(shè)計制造的標(biāo)準(zhǔn)化外圍接口芯片,因此它與MCS-51單片機(jī)的連接是比較簡單方便的。 一般來說,MCS-51單片機(jī)擴(kuò)展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機(jī)系統(tǒng)片外RAM的實(shí)際容量一般均不太大,遠(yuǎn)遠(yuǎn)達(dá)不到64KB的范圍,因此I/O接口芯片大多采用部分譯碼的方法,而用得比較多的則是直接利用地址線的線選法。這種方法雖然要浪費(fèi)大量的地址號,但譯碼電

17、路比較簡單。圖610就是一種較常用的連接實(shí)例。圖710 8255A與8031的連接P2.7ALEP08031EAWRRDRESETG74LS373OECSA1A0WRRDRESETD7D0A口B口C口 圖710中,P0口為地址/數(shù)據(jù)復(fù)用口。數(shù)據(jù)通過P0口直接傳送,地址的低8位是需通過鎖存器74LS373得到的,而地址的高8位則由P2口傳送。 現(xiàn)采用線選法,利用高8位地址線的P2.7作為線選信號,直接與8255A的片選端 相連,而A1、A0則與地址的最末2位相連。由圖610所示接法,可得到8255A各個端口的地址,如表63所示。 CS 表73 8255A各端口的地址 P2.7P2.6P2.5P2

18、.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0地址端口號A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A000000000000000000000000000000000000000000000000000000000001101010000H0001H0002H0003HA口B口C口控制寄砘器 7.1.5 8255A應(yīng)用舉例 8255A在微機(jī)和單片機(jī)控制系統(tǒng)中得到了廣泛應(yīng)用,現(xiàn)舉兩例加以說明。 例1:要求通過8255A的PC5端向外輸出1個正脈沖信號,已知8255A的C口和控制口的地址分別為0002H和0003H

19、。 解:若要從PC5端輸出1個正脈沖信號,可通過對PC5位的置位和復(fù)位控制來實(shí)現(xiàn)。由于每送1個控制字,只能對1位作1次置位或復(fù)位操作,故產(chǎn)生1個正脈沖要對PC5位先送置位控制字,經(jīng)過一定的延時后(延時時間視脈寬而定),再送復(fù)位控制字即能實(shí)現(xiàn)。程序編制如下:MOV DPTR,0003H ;指向8255A的控制口MOV A,OBH ;對PC5置1MOVX DPTR,ALCALL DELAY ;延時(調(diào)用延時子程序)DEC A ;對PC5置0MOVX DPTR,A 例2:8255A作為連接打印機(jī)的接口。 圖611是通過8255A連接打印機(jī)的接口電路,數(shù)據(jù)傳送采用查詢方式。8255A的地址譯碼采用線選

20、法,將P0.7直接與8255A的 端相連(通過地址鎖存器),其口地址A口為7CH,B口為7DH,C口為7EH,命令口為7FH。CS圖711 8255A連接打印機(jī)的接口電路圖710 8255A與8031的連接RDWRRESETP0.7 P0.0ALEEA74LS373Q7Q1D7D0Q0GOERDWRRESETCSA1A0D7D09366BPA7PA0PC7PC0PB7PB0DB7DB0BUSYSTB微型打印機(jī) 現(xiàn)要求編制打印50個字符的程序,該數(shù)據(jù)存于片內(nèi)RAM從20H開始的50個連續(xù)單元中。 程序如下: MOV R0,7FH ;指向8255A的命令口 MOV A,88H ;取方式字:A口輸出

21、,C口低出高入 MOVX R0,A ;送入方式字 MOV R1,20H ;R1指向數(shù)據(jù)區(qū)首址 MOV R2,32H ;送數(shù)據(jù)塊長度LP:MOV R0,7EH ;指向C口LOOP1:MOVX A,R0 ;讀入C口信息 JB A.7,LOOP1 ;若BUSY=1,繼續(xù)查詢 MOV R0,7CH ;指向A口 MOV A,R1 ;取RAM數(shù)據(jù) MOVX R0,A ;數(shù)據(jù)輸出到A口 INC R1 ;數(shù)據(jù)指針加1 MOV R0,7FH ;指向命令口 MOV A,00H ;C口置位/復(fù)位命令字(PC0=0) MOVX R0,A ;產(chǎn)生STBTX-的下降沿 MOV A,01H ;改變C口置位/復(fù)位命令字(PC

22、0=1) MOVX R0,A ;產(chǎn)生STBTX-的上升沿 DJNZ R2,LP ;未完,則反復(fù) 2 可編程可編程RAM/IO/CTC接口接口8155 7.2.1 8155的結(jié)構(gòu)與引腳 1. 8155的內(nèi)部結(jié)構(gòu) 8155的內(nèi)部結(jié)構(gòu)如圖612(b)所示。它含有1個256字節(jié)的RAM、1個14位定時/計數(shù)器以及3個并行I/O口,其中A口、B口均為8位,C口為6位。A口、B口既可作為基本I/O口,也可作為選通I/O口;C口除可作為基本I/O口外,還可用作A口、B口的應(yīng)答控制聯(lián)絡(luò)信號線。此外,8155內(nèi)部還有一個控制寄存器組,用來存放控制命令字。圖712 8155引腳排列及結(jié)構(gòu)框圖 (a)引腳排列; (

23、b)內(nèi)部結(jié)構(gòu)框圖圖712 8155引腳排列及結(jié)構(gòu)框圖 (a)引腳排列; (b)內(nèi)部結(jié)構(gòu)框圖IO/M8位數(shù)據(jù)線AD0-AD7CEALERDWRRESET2568RAM控制寄存器定時器ABCA口8B口8C口6PA0-7PB0-7PC0-5定時器CLK定時器輸出VccVss 2. 8 155的引腳 8155為40引腳雙列直插式封裝芯片,其引腳排列如圖712(a)所示?,F(xiàn)將其各引腳的功能簡介如下: AD0AD7:地址/數(shù)據(jù)復(fù)用線。 它與8031單片機(jī)的P0口直接相連。8155和CPU之間的地址、數(shù)據(jù)、命令及狀態(tài)信號都通過這組信號線傳送。 :片選信號,輸入,低電平有效。 :RAM和I/O口選擇線。當(dāng) =

24、1時,選中I/O口;當(dāng) =0時,選中RAM。 CE/IO M/IO M/IO M ALE:地址鎖存信號。 :讀選通信號,輸入,低電平有效。 :寫選通信號,輸入,低電平有效。 TIMERIN:定時器輸入。它是8155片內(nèi)定時器的脈沖信號輸入端。 TIMEROUT:定時器輸出。通過它可以輸出矩形波或脈沖波。 PA0PA7:A口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PB0PB7:B口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PC0PC5:C口的輸入/輸出或控制信號線。 RDER 7.2.2 8155的RAM和I/O口的編址 與其它接口芯片一樣,8155芯片中的RAM和I/O口均占

25、用單片機(jī)系統(tǒng)片外RAM的地址,其中高8位地址由 和IO/AKM-信號決定。當(dāng) =0,且IO/ =0時,低8位的00HFFH為RAM的有效地址;當(dāng) =0,且 IO/ =1時,由低8位地址中的末3位(A2A1A0)來決定各個口的地址,如表64所示。CECEMCEM表64 8155端口地址表 AD7-AD0選中的口或寄存器A7 A6 A5 A4 A3 A2 A1 A0 0 0 0命令狀態(tài)字寄存器 0 0 1A口(PA0PA7) 0 1 0B口(PB0PB7) 0 1 1C口(PC0PC7) 1 0 0定時器低8位寄存器 1 0 1定時器高6位和操作方式寄存器 對于多數(shù)單片機(jī)應(yīng)用系統(tǒng)來說,由于片外RA

26、M區(qū)的容量較大(最大為64KB),因此通常采用線選法對接口芯片進(jìn)行編址。對8155來說,常用高8位地址中的兩位來選擇 和IO/ 。例如將P2.7接至 ,將P2.0接至IO/ ,那么8155的RMA和I/O口的編址為:CEMCEM RAM:P2.7=0,P2.0=0,其地址范圍為: 01111110 00000000B01111110 11111111B, 即:7E00H7EFFH。 I/O口:P2.7=0,P2.0=1,口地址范圍為: 01111111 00000000B01111111 00000101B,即7F00H7F05H。具體分配如下:命令口:7F00HA口:7F01HB口:7F02

27、HC口:7F03H定時器低8位:7F04H定時器高8位:7F05H 7.2.3 8155I/O口的工作方式 8155有3個I/O口,即A口、B口和C口,其中C口只有6位。A口和B口均可工作于基本I/O方式或選通I/O方式。C口既可作為I/O口線,工作于基本I/O方式,也可作為A口、B口選通工作時的狀態(tài)聯(lián)絡(luò)控制信號線。 1.基本I/O 基本I/O為無條件傳送,這是最簡單的I/O操作,不需要任何聯(lián)絡(luò)信號,隨時可以進(jìn)行。 2.選通I/O 選通I/O為條件傳送,傳送的方式可用查詢方式,也可用中斷方式。 (1)BF:I/O緩沖器滿空標(biāo)志,輸出,高電平有效。 (2) :選通信號,輸入,低電平有效。 (3)

28、INTR:中斷請求信號,輸出,高電平有效。 以上這些信號線對A口與B口均適用,分別稱之為ABF、 、AINTR與BBF、 、BINTR。它們都是由C口提供的,如表65所示。 STBSTBBSTB表75 8155的PC口線聯(lián)絡(luò)信號定義 方式口位作PA口聯(lián)絡(luò)信號作PA和PB口聯(lián)絡(luò)信號PC0AINTRAINTRPC1ABFABFPC2ASTBASTBPC3輸出BINTRPC4輸出BBFPC5輸出BSTB 7.2.4 8155的命令/狀態(tài)字 8155有1個命令/狀態(tài)寄存器,實(shí)際上這是兩個不同的寄存器,分別存放命令字和狀態(tài)字。由于對命令寄存器只能進(jìn)行寫操作,而對狀態(tài)寄存器只能進(jìn)行讀操作,因此把它們編為同

29、一個地址,合在一起稱之為命令/狀態(tài)寄存器。 1.命令字 命令字共8位,用于定義I/O端口及定時器的工作方式。對命令寄存器只能寫入不能讀出(讀出的將是狀態(tài)寄存器的內(nèi)容)。 命令字的格式如圖713所示。 圖713 8155的命令字格式TM2TM1IEBIEAPC2PC1PBPAA口方式0=輸出I=輸出B口方式C口方式00=ALT1 01=ALT210=ALT3 11=ALT4A口中斷0=中斷禁止1=中斷允許B口中斷定時器方式00=無操作01=停止計數(shù)10=計滿后停止11=開始計數(shù) D7D6D5D4D3D2D1D0 對C口工作方式的說明: D3D2=00(ALT1):A口、B口為基本I/O,C口為輸

30、入。 D3D2=01(ALT2):A口、B口為基本I/O,C口為輸出。 D3D2=10(ALT3):A口選通I/O,B口基本I/O,C口低3位為聯(lián)絡(luò)信號,高3位輸出(參閱表75)。 D3D2=11(ALT4):A口、B口均為選通I/O,C口低3位作為A口聯(lián)絡(luò)信號,高3位作為B口聯(lián)絡(luò)信號(參閱表65)。 關(guān)于定時器運(yùn)行控制位(TM2、TM1)補(bǔ)充說明如下: 當(dāng)TM2、TM1=11時,其操作為:當(dāng)計數(shù)器未計數(shù)時,裝入計數(shù)長度和方式后立即開始計數(shù);當(dāng)計數(shù)器正在計數(shù)時,待計數(shù)器溢出后以新裝入的計數(shù)長度和方式進(jìn)行計數(shù)。 2.狀態(tài)字 8155的狀態(tài)寄存器與命令寄存器共用1個地址,當(dāng)使用讀操作時,讀入的便是

31、狀態(tài)寄存器中的內(nèi)容。其格式如圖714所示。 圖714 8155的狀態(tài)字格式INTRAA口中斷請求ABFA口緩沖器滿/空INTEAA口中斷允許INTRBB口中斷請求BBFB口緩沖器滿/空INTEBB口中斷允許TIMER定時器中斷(計滿時為高電平,讀出狀態(tài)字或硬件復(fù)位為低電平)D6D5D4D3D2D1D0 7.2.5 8155的定時/計數(shù)器 8155的定時/計數(shù)器是1個14位的減法計數(shù)器,由兩個8位寄存器構(gòu)成,其格式如下:T7T6T5T4T3T2T1T0M2M1T13T12T11T10T9T8D7D0 其中低14位組成計數(shù)器,剩下的兩個高位(M2M1)用于定義計數(shù)器輸出的信號形式,如圖715所示。

32、 8155的定時/計數(shù)器與MCS-51單片機(jī)芯片內(nèi)部的定時/計數(shù)器在功能上是相同的,都有定時和計數(shù)兩種功能。但是在使用上卻有很多不同之處。具體表現(xiàn)在: (1)8155的定時/計數(shù)器為減法計數(shù),而MCS-51單片機(jī)內(nèi)部的定時/計數(shù)器卻是加法計數(shù)。 (2)MCS-51單片機(jī)內(nèi)部的定時/計數(shù)器有多種工作方式,而8155的定時/計數(shù)器卻只有一種固定的工作方式,即14位計數(shù),通過軟件方法進(jìn)行計數(shù)值的加載。 (3)MCS-51單片機(jī)內(nèi)部的定時/計數(shù)器有兩種計數(shù)脈沖:當(dāng)定時工作時,由芯片內(nèi)部按機(jī)器周期提供固定頻率的計數(shù)脈沖;當(dāng)計數(shù)工作時,從芯片外部引入計數(shù)脈沖。 (4)MCS-51單片機(jī)內(nèi)部的定時/計數(shù)器,

33、在計數(shù)溢出時自動置位TCON寄存器中的計數(shù)溢出標(biāo)志位TF,供用戶以查詢或中斷方式使用;而8155的定時/計數(shù)器,在計數(shù)溢出時卻是通過TIMEROUT引腳向外部發(fā)出1個脈沖信號。 圖715 定時/計數(shù)器輸出方式 計數(shù)開始計數(shù)結(jié)束M2M1=00 單個方波M2M1=10 單個脈沖M2M1=11 連續(xù)脈沖M2M1=01 連續(xù)方波 另外,8155的定時器在計數(shù)過程中,計數(shù)器的值并不直接表示外部輸入的脈沖。若作為外部事件計數(shù),那么由計數(shù)器的現(xiàn)行計數(shù)值求輸入脈沖數(shù)的方法為: (1) 停止計數(shù)器計數(shù)。 (2) 分別讀出計數(shù)器的兩個字節(jié)內(nèi)容。 (3) 取其低14位數(shù)作為現(xiàn)行計數(shù)值。 (4) 算出現(xiàn)行計數(shù)值與初始

34、計數(shù)值之差即可。 7.2.6 8155和MCS-51單片機(jī)的接口電路 8155可以和MCS-51單片機(jī)直接相連,而不需外加邏輯電路。圖716所示為8155和MSC-51相連的一種基本連接方法。 按圖716所示接法,8155的RAM和各端口地址如下: RAM的地址:0000H00FFH 命令口:0200H A口:0201H B口:0202H C口:0203H 定時器低位:0204H 定時器高位:0205H圖716 8155與MCS-51的連接方法 886P2.2P2.1ALEP0.7P0.0RDWRRESETMCS-51+5VVcc VssABCOUT INTIMERAD0RDWRRESET+5

35、VCEIO/MALEAD78155 7.2.7 8155的初始化編程及應(yīng)用舉例 8155初始化編程的主要內(nèi)容為寫入8155的命令字和定時/計數(shù)器的初值以及輸出方式?,F(xiàn)舉例說明如下。 例1:采用如圖716所示的接口電路,設(shè)A口與C口為輸入口,B口為輸出口,均為基本I/O。定時器為連續(xù)方波工作方式,對輸入脈沖進(jìn)行24分頻。試編寫8155的初始化程序。 解:命令字可選取為PA=0:A口輸入PB=1:B口輸出PC2、PC1=00:A口、B口基本I/O,C口輸入IEA=0,IEB=0:A口、B口均禁止中斷TM2、TM1=11:立即啟動計數(shù)器所以命令字為11000010B=C2H。 計數(shù)初值的選取方法為:

36、由于計數(shù)值為24,所以 定時器的低8位為18H,高6位為000000B。 定時器的輸出方式要求為連續(xù)方波,選M2M1=01,那么定時器的高8位為01000000B=40H。 RAM及端口地址與前面的相同。 初始化程序:MOV DPTR,0204H ;指向定時器的低8位MOV A,18H ;取定時器低8位的值MOVX DPTR,A ;寫入定時器低8位INC DPTR ;指向定時器高8位MOV A,40H ;取定時器高8位的值MOVX DPTR,A ;寫入定時器高8位MOV DPTR,0200H ;指向命令口MOV A,C2H ;取8155的命令字MOVX DPTR,A ;寫入命令字 例2:仍采用

37、圖716所示的接口電路,從8155的A口輸入數(shù)據(jù)并進(jìn)行判斷:若不為0,則將該數(shù)據(jù)存入8155的RAM中(從起始單元開始存放,數(shù)據(jù)的總數(shù)不超過256個),同時從B口輸出,并將PC0置“1”;若為0,則停止輸入輸出,同時將PC0清“0”。試編寫能完成上述任務(wù)的初始化及應(yīng)用程序。 解:初始化及應(yīng)用程序如下: MOV DPTR,0200H ;指向命令口 MOV A,00000110B ;取命令字 MOVX DPTR,A ;寫入命令字 MOV R0,00H ;指向8155的RAM區(qū)首址 MOV R1,00H ;數(shù)據(jù)總數(shù)為256個LOOP1:MOV DPTR,0201H ;指向A口 MOVX A,DPTR

38、 ;從A口輸入數(shù)據(jù) JZ LOOP3 ;為0則轉(zhuǎn) MOV X R0,A ;不為0,則存入RAM中 INC R0 ;指向下一單元 INC DPTR ;指向B口 MOVX DPTR,A ;從B口輸出 INC DPTR ;指向C口 MOVX A,DPTR ;取C口數(shù)據(jù) SETB ACC,0 ;使PC0置1 MOVX DPTR,A ;回送 DJNZ R1,LOOP1 ;未完則反復(fù)LOOP2:SJMP $ ;暫停LOOP3:MOV DPTR,0203H ;指向C口 MOVX DPTR,A ;回送 SJMP LOOP23 鍵盤顯示器接口鍵盤顯示器接口8279 7.3.1 8279的組成及引腳 8279芯片

39、有40條引腳,由單一+5V電源供電。它主要由以下幾部分組成: (1) I/O控制和數(shù)據(jù)緩沖器; (2) 控制和定時寄存器及定時控制部分; (3) 掃描計數(shù)器; (4)回送緩沖器與鍵盤去抖動控制電路; (5)FIFO(先進(jìn)先出)寄存器和狀態(tài)電路; (6)顯示器地址寄存器及顯示RAM。 8279的引腳如圖717所示,下面對引腳名稱作簡要說明。 DB0DB7:雙向數(shù)據(jù)總線。 A0:命令狀態(tài)或數(shù)據(jù)選擇線。A0=1,表示從DB0DB7線上傳送的是命令或狀態(tài)字;A0=0表示為數(shù)據(jù)。 、 :讀、寫信號線。 IRQ:中斷請求線。 SL0SL3:掃描線??蛇M(jìn)行譯碼掃描(4選1),也可進(jìn)行編碼掃描(16選1),但

40、要使用4-16譯碼器。若用3-8譯碼器的話,則掃描線為8選1。RDWR圖717 8279引腳圖 RL0RL7:回送線。內(nèi)部有上拉電阻,從此線上得到鍵盤的回掃信號。 OUTA0OUTA3、OUTB0OUTB3:顯示器刷新寄存器輸出,與掃描線同步。 7.3.2 8279的接口電路與應(yīng)用舉例 圖718給出了用8279芯片管理24個鍵的鍵盤和6個LED數(shù)碼顯示器的實(shí)際應(yīng)用接口電路,以及它與8031單片機(jī)的接口方法。 作為一個外設(shè)接口芯片,8279的片選信號 由8031的P25、P26、P27這3條地址線經(jīng)地址譯碼器譯碼后得到的(P27、P26、P25=011)。其片內(nèi)尋址線A0與8031系統(tǒng)的地址線A

41、0相連,此時8279數(shù)據(jù)口的地址號為6000H,命令/狀態(tài)口的地址號為6001H。 CS圖718 8279應(yīng)用實(shí)例 反相驅(qū)動器P2.7-P2.5ALEP0.7-P0.08031INTNWRRDRESET地址譯碼器G74LS373+5VVccCSA0DB7DB0CLKIRQWRRDRESETA3-A0B3-B0CNTLSHIFT VssSL0SL1SL2SL3RL0RL1RL7ABCG1G2AG2BY0Y1Y20 1 2 3 4 5 6 78 9 F1 F2 F3 F4 F5 F6F7 F8 F9 F10 F12 F14F F11 13反相驅(qū)動器SN75452a b c d e f g upLE

42、D顯示器2#-6#LED顯示器 該接口電路的工作過程簡述如下: 每當(dāng)按下一個鍵,8279會自動識別鍵號,產(chǎn)生相應(yīng)的鍵編碼自動送入先進(jìn)先出寄存器FIFO中,同時產(chǎn)生中斷請求信號IRQ,向CPU請求中斷。當(dāng)CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序,并從FIFO中讀取編碼數(shù)據(jù)之后,則IRQ信號將自動撤消。 4 LED數(shù)碼顯示器接口數(shù)碼顯示器接口 7.4.1 LED數(shù)碼顯示器的結(jié)構(gòu)與顯示段碼 1. LED數(shù)碼顯示器的結(jié)構(gòu) LED數(shù)碼顯示器是1種由LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個LED發(fā)光二極管,其中7個用于顯示字符,1個用于顯示小數(shù)點(diǎn),故通常稱之為7段(也有稱作8段)發(fā)光二極管數(shù)碼顯示器。

43、其內(nèi)部結(jié)構(gòu)如圖619所示。圖719 7段LED數(shù)碼顯示器 LED數(shù)碼顯示器有兩種連接方法: (1)共陽極接法。 把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。 (2)共陰極接法。 把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。 2. LED數(shù)碼顯示器的顯示段碼 為了顯示字符,要為LED顯示器提供顯示段碼(或稱字形代碼),組成一個“8”字形字符的7段,再加上1個小數(shù)點(diǎn)位,共計8段,因此提供給LED顯示器的顯示段碼為1個字節(jié)。各段碼位的對應(yīng)關(guān)系如下: 段碼位D7D6D5D4D3D2D

44、1D0 顯示段dpgfedcba表76 十六進(jìn)制數(shù)及空白字符與P的顯示段碼 字型共陽極段碼共陰極段碼字型共陽極段碼共陰極段碼0C0H3FH990H6FH1F9H06HA88H77H2A4H5BMb83H7CH3B0H4FHCC6H39H499H66HdA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H 7.4.2 LED數(shù)碼顯示器的接口方法與接口電路 1.LED數(shù)碼顯示器的接口方法 單片機(jī)與LED數(shù)碼顯示器有以硬件為主和以軟件為主的兩種接口方法。 1)以硬件為主的接口方法 這種接口方法的電路如圖720所示。圖720 以

45、硬件為主的LED顯示器接口電路 2)以軟件為主的接口方法 這種接口方法的電路如圖721所示,它是以軟件 查表代替硬件譯碼,不但省去了譯碼器,而且還能顯示更多的字符。但是驅(qū)動器是必不可少的,因?yàn)閮H靠接口提供不了較大的電流供LED顯示器使用。 圖721 以軟件為主的LED顯示器接口電路 2. LED數(shù)碼顯示器的接口電路 實(shí)際使用的LED數(shù)碼顯示器位數(shù)較多,為了簡化線路、降低成本,大多采用以軟件為主的接口方法。對于多位LED數(shù)碼顯示器,通常采用動態(tài)掃描顯示方法,即逐個地循環(huán)地點(diǎn)亮各位顯示器。這樣雖然在任一時刻只有1位顯示器被點(diǎn)亮,但是由于人眼具有視覺殘留效應(yīng),看起來與全部顯示器持續(xù)點(diǎn)亮的效果基本一樣

46、(在亮度上要有差別)。 圖722 8155作6位LED顯示器接口的電路 7.4.3 LED數(shù)碼顯示器的顯示方法 對于多位數(shù)碼顯示器來說,為了簡化線路、降低成本,往往采用以軟件為主的接口方法,即不使用專門的硬件譯碼器,而采用軟件程序進(jìn)行譯碼。如前所述,由于各位數(shù)碼管的顯示段碼是互相并聯(lián)的,因此在同一時刻只能顯示同一種字符。對于這種接口電路來說,其顯示方法有靜態(tài)顯示和動態(tài)顯示兩種。 1.靜態(tài)顯示 所謂靜態(tài)顯示,就是在同一時刻只顯示1種字符,或者說被顯示的字符在同一時刻是穩(wěn)定不變的。其顯示方法比較簡單,只要將顯示段碼送至段碼口,并把位控字送至位控口即可。所用指令為:MOV DPTR,SEGPORT

47、;指向段碼口MOV A,SEG ;取顯示段碼MOVX DPTR,A ;輸出段碼MOV DPTR,BITPORT ;指向位控口MOV A,BIT ;取位控字MOVX DPTR,A ;輸出位控字 2.動態(tài)顯示 如果要在同一時刻顯示不同的字符,從電路上看,這是辦不到的。因此只能利用人眼對視覺的殘留效應(yīng),采用動態(tài)掃描顯示的方法,逐個地循環(huán)點(diǎn)亮各位數(shù)碼管,每位顯示1ms左右,使人看起來就好象在同時顯示不同的字符一樣。 在進(jìn)行動態(tài)掃描顯示時,往往事先并不知道應(yīng)顯示什么內(nèi)容,這樣也就無從選擇被顯示字符的顯示段碼。為此,一般采用查表的方法,由待顯示的字符通過查表得到其對應(yīng)的顯示段碼。下面介紹一種動態(tài)掃描顯示子

48、程序:DIR: MOV R0,7AH ;指向顯示緩沖區(qū)首址 MOV R3,01H ;從右邊第1位開始顯示 MOV A,00H ;取全不亮位控字 MOV R1,BITPORT ;指向位控口 MOVX R1,A ;瞬時關(guān)顯示LD1: MOV A,R0 ;取出顯示數(shù)據(jù) MOV DPTR,DSEG ;指向顯示段碼表首址 MOVC A,A+DPTR ;查顯示段碼表 MOV R1,SEGPORT ;指向段碼口MOVX R1,A ;輸出顯示段碼MOV R1,BITPORT ;指向位控口MOV A,R3 ;取位控字MOVX R1,A ;輸出位控字LCALL DELY ;延時1msINC R0 ;指向下一個緩沖

49、單元JB A.5,LD2 ;已到最高位則轉(zhuǎn)返回RL A ;不到,向顯示器高位移位MOV R3,A ;保存位控字SJMP LD1 ;循環(huán)LD2: RETDSEG:DBC0H,F9H,A4H,B0H,99H,92H,82H ;顯示段碼表 DB F8H,80H,90H,88H,83H,C6H,A1H DB 86H,84H,FFH 程序說明: (1)本例接口電路是以軟件為主的接口電路,顯示數(shù)據(jù)有6位,每位數(shù)碼管對應(yīng)1位有效顯示數(shù)據(jù)。 (2)由程序可知,由于數(shù)碼顯示器的低位(最右邊的位)顯示的是顯示緩沖區(qū)中的低地址單元中的數(shù),因此數(shù)在顯示緩沖區(qū)中存放的次序?yàn)榈偷刂穯卧娴臀?高地址單元存高位。 (3)在

50、動態(tài)掃描顯示過程中,每位數(shù)碼管的顯示時間約1ms,這由調(diào)用延時1ms子程序DELY來實(shí)現(xiàn)。 (4)本程序是利用查表方法來得到顯示段碼的,這是一種既簡便又快速的方法。由于MCS-51單片機(jī)具有查表指令(MOVC指令),因此用來編制查表程序是非常方便的。 (5)由于在顯示段碼表中,將“空白”字符排在字母“F”的后邊,因此在使用查表指令時,若要查“空白”字符的顯示段碼,那么在累加器A中應(yīng)放入數(shù)據(jù)“10H”。 (6)在實(shí)際的單片機(jī)應(yīng)用系統(tǒng)中,一般將顯示程序作為1個子程序供監(jiān)控程序調(diào)用。 7.4.4 LED數(shù)碼顯示器應(yīng)用舉例 1.靜態(tài)顯示舉例 例1:在數(shù)碼顯示器的最左邊1位上顯示1個“P”字。數(shù)碼顯示器

51、的接口電路如圖722所示,設(shè)8155的端口地址為7F00H7F05H,數(shù)碼管為共陽極。試編寫相應(yīng)的顯示程序。 解:本例要顯示的字符已知,且在同一時刻只顯示1種字符,故可采用靜態(tài)顯示的方法。由圖722可知,當(dāng)采用共陽極數(shù)碼管時,應(yīng)按共陽極規(guī)律控制。在程序的開始,應(yīng)對8155進(jìn)行初始化編程,設(shè)A、C口均為輸出。程序如下:MOV A,03H ;8155命令字(A、C口均為輸出)MOV DPTR,7F00H ;指向命令口MOVX DPTR,A ;輸出命令字MOV A,8CH ;取“P”字符的顯示段碼INC DPTR ;指向A口MOVX DPTR,A ;輸出顯示段碼INC DPTRINC DPTR ;指

52、向C口MOV A,20H ;取位控字(最左邊一位上顯示)MOV X DPTR,A ;輸出位控字SJMP $ ;暫停 例2:開始時在數(shù)碼顯示器的最右邊一位上顯示1個“0”字,以后每隔0.5秒將“0”字左移1位,直到最左邊一位后則停止顯示。接口電路與端口地址同上,設(shè)有20ms延時子程序D20MS可供調(diào)用。試編寫相應(yīng)的程序。 解:本例仍可采用靜態(tài)顯示的方法。 程序如下: MOV A,03H ;8155命令字(A、C口均為輸出) MOV DPTR,7F00H ;指向命令口 MOVX DPTR,A ;輸出命令字 MOV A,C0H ;取“0”字的顯示段碼 INC DPTR ;指向A口 MOVX DPTR

53、,A ;輸出顯示段碼 INC DPTR INC DPTR ;指向C口 MOV A,01H ;取位控字(最右邊一位上顯示)LOOP1:MOVX DPTR,A ;輸出位控字 MOV R0,19H ;延時0.5秒LOOP2:LCALL D20MS DJNZ R0,LOOP2 JB A.5,LOOP3 ;若已到最左邊一位,則轉(zhuǎn) RL A ;未到,則將位控字左移1位 SJMP LOOP1 ;繼續(xù)LOOP3:MOV A,00H ;停止顯示 MOVX DPTR,A SJMP $ ;暫停 2.動態(tài)顯示舉例 例3:編一動態(tài)顯示程序,使數(shù)碼顯示器同時顯示“ABCDEF”6個字符。設(shè)顯示緩沖區(qū)的首地址為7AH,可調(diào)

54、用動態(tài)掃描顯示子程序DIR(參見643小節(jié))。解: MOV A,0FH ;取最右邊1位字符 MOV R0,7AH ;指向顯緩區(qū)首址(最低位) MOV R1,06H ;共送入6個字符LOOP:MOV R0,A ;將字符送入顯緩區(qū) INC R0 ;指向下一顯示單元 DEC A ;取下一個顯示字符 DJNZ R1,LOOP ;6個數(shù)未送完,則重復(fù)MM: LCALL DIR ;掃描顯示一遍 SJMP MM ;重復(fù)掃描 例4:在一串單字節(jié)無符號數(shù)中找出最大值,并在數(shù)碼顯示器的最右邊兩位上顯示。設(shè)數(shù)據(jù)串的長度為20,存放在片內(nèi)RAM從30H單元開始的一段區(qū)域中。 解:根據(jù)題意,LED數(shù)碼顯示器必須采用動態(tài)

55、掃描顯示的方法。 本例要顯示的是兩位數(shù),而數(shù)碼顯示器有6位。在不顯示數(shù)字的位上數(shù)碼管應(yīng)該不亮,而動態(tài)掃描顯示子程序每次對6位數(shù)碼管全掃描一遍。 程序按如下思路編寫: (1)先求出最大值。 (2)將最大值拆字節(jié)后存入顯示緩沖區(qū),應(yīng)注意數(shù)的存放次序。根據(jù)題意,低位數(shù)應(yīng)存入顯示緩沖區(qū)的低地址單元。 (3)將“空白”字符的查表值10H送入不顯示位所對應(yīng)的顯示緩沖區(qū)中。 (4)反復(fù)調(diào)用動態(tài)掃描顯示子程序。 程序如下: MOV R0,30H ;R0指向數(shù)據(jù)區(qū)首地址 MOV R1,13H ;比較次數(shù)送R1 MOV A,R0 ;取第1個數(shù)M1: INC R0 ;指向下一個數(shù) MOV 70H,R0 ;下一個數(shù)送

56、入70H單元中 CJNE A,70H,M3 ;若前后兩個數(shù)不相等則轉(zhuǎn)M2: DJNZ R1,M1 ;若相等,則判比較完否? SJMP M4 ;若已完,則轉(zhuǎn)至顯示處理M3: JNC M2 ;前一個數(shù)大,轉(zhuǎn)至判結(jié)束否? MOV A,70H ;前一個數(shù)小,將大數(shù)換入A中 SJMP M2 ;轉(zhuǎn)至判結(jié)束處M4: MOV R2,A ;暫存最大值 ANL A,0FH ;保留低位數(shù) MOV 7AH,A ;將低位數(shù)存入顯示緩沖區(qū)中 MOV A,R2 ;恢復(fù)最大值 ANL A,F0H ;保留高位數(shù) SWAP ;將高位換入低位中 MOV 7BH,A ;存入高位數(shù) MOV A,10H ;取“空白”字符查表值 MOV

57、7CH,A ;放入顯示緩沖區(qū)不顯示位的單元中 MOV 7DH,A ;高4位不顯示 MOV 7EH,A MOV 7FH,A MM:LCALL DIR ;掃描顯示一遍 SJMP MM ;重復(fù)掃描,顯示最大值5 鍵盤接口鍵盤接口 鍵盤實(shí)際上是由排列成矩陣形式的一系列按鍵開關(guān)組成的,它是單片機(jī)系統(tǒng)中最常用的人機(jī)聯(lián)系的一種輸入設(shè)備。用戶通過鍵盤可以向CPU輸入數(shù)據(jù)、地址和命令。 鍵盤按其結(jié)構(gòu)形式可分為編碼式鍵盤和非編碼式鍵盤兩大類。 編碼式鍵盤是由其內(nèi)部硬件邏輯電路自動產(chǎn)生被按鍵的編碼。這種鍵盤使用方便,但價格較貴。 單片機(jī)系統(tǒng)中普遍使用非編碼式鍵盤。這類鍵盤應(yīng)主要解決以下幾個問題: (1)鍵的識別;

58、(2)如何消除鍵的抖動; (3)鍵的保護(hù)。 在以上幾個問題中,最主要的是鍵的識別。 7.5.1 非編碼式鍵盤的結(jié)構(gòu)與工作原理 1.非編碼式鍵盤的結(jié)構(gòu) 非編碼式鍵盤一般采用行列式結(jié)構(gòu)并按矩陣形式排列,如圖723所示。 圖723示出44行列式鍵盤的基本結(jié)構(gòu)示意圖。44表示有4根行線和4根列線,在每根行線和列線的交叉點(diǎn)上均分布1個單觸點(diǎn)按鍵,共有16個按鍵。 2.非編碼式鍵盤的工作原理 非編碼式鍵盤識別閉合鍵通常有兩種方法:一種稱為行掃描法,另一種稱為線反轉(zhuǎn)法。 1)行掃描法 所謂行掃描法,就是通過行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所連接的輸出端口得到的是全“1”信號;如果

59、有鍵按下的話,則得到的是非全“1”信號。圖723 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行00001 0 1 1+5V+5V00001 1 1 1行 01233 2 1 0 列(a)(b)圖723 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行(c)(d)01111 1 1 11 1 1 11011+5V+5V圖723 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(

60、e)掃描第2行;(f)掃描第3行+5V+5V(e)(f)110111101 1 1 11 0 1 1 具體過程如下: 首先,為了提高效率,一般先快速檢查整個鍵盤中是否有鍵按下;然后,再確定按下的是哪一個鍵。 其次,再用逐行掃描的方法來確定閉合鍵的具體位置。方法是:先掃描第0行,即輸出1110(第0行為“0”,其余3行為“1”),然后讀入列信號,判斷是否為全“1”。 3.如何消除鍵的抖動 由于按鍵為機(jī)械開關(guān)結(jié)構(gòu),因此機(jī)械觸點(diǎn)的彈性及電壓突跳等原因,往往在觸點(diǎn)閉合或斷開的瞬間會出現(xiàn)電壓抖動,如圖724所示。 圖724 鍵閉合和斷開時的電壓抖動 4.鍵的保護(hù) 鍵的保護(hù)問題指的是當(dāng)有雙鍵或多鍵同時按下

溫馨提示

  • 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

提交評論