版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 可編程并行可編程并行I/O接口接口8255A 2 可編程可編程RAM/IO/CTC接口接口81553 鍵盤顯示器接口鍵盤顯示器接口82794 LED數碼顯示器接口數碼顯示器接口 5 鍵盤接口鍵盤接口 第第7章單片機章單片機I/O擴展及應用擴展及應用 接口芯片與接口技術接口芯片與接口技術 1 可編程并行可編程并行I/O接口接口8255A 8255A可編程并行輸入/輸出接口芯片是Intel公司生產的標準外圍接口電路。它采用NMOS工藝制造,用單一5V電源供電,具有40條引腳,采用雙列直插式封裝。它有A、B、C3個端口共24條I/O線,可以通過編程的方法來設定端口的各種I/O功能。由于它功能強,
2、又能方便地與各種微機系統(tǒng)相接,而且在連接外部設備時,通常不需要再附加外部電路,所以得到了廣泛的應用。 7.1.1 8255A的內部結構與引腳 1. 8255A的內部結構 8255A的內部結構如圖61所示,由以下幾部分組成。 1)數據端口A、B、C8255A有3個8位數據端口,即端口A、端口B和端口C。編程人員可以通過軟件將它們分別作為輸入端口或輸出端口,不過這3個端口在不同的工作方式下有不同的功能及特點,如表71所示。圖71 8255A的內部結構圖 A組控制B組端口B(8)B組端口C下半部(4)B組控制數據總線讀/寫控制邏輯A組端口A(8)A組端口C上半部(4)I/OPC7PC4I/OPC3P
3、C0I/OPA7PA0I/OPB7PB0外設接口內部邏輯8位內部數據總線CPU接口DBRDWRA0A1RESETCS 2) A組和B組控制電路 這是兩組根據CPU的命令字控制8255A工作方式的電路。它們的控制寄存器先接受CPU送出的命令字,然后根據命令字分別決定兩組的工作方式,也可根據CPU的命令字對端口C的每1位實現按位“復位”或“置位”。A組控制電路控制端口A和端口C的上半部(PC7PC4)。B組控制電路控制端口B和端口C的下半部(PC3PC0)。表71 8255A端口功能表 工作方式A口B口C口0基本輸入輸出輸出鎖存輸入三態(tài)基本輸入輸出輸出鎖存輸入三態(tài)基本輸入輸出輸出鎖存輸入三態(tài)1應答
4、式輸入/輸出輸入輸出均鎖存應答式輸入/輸出輸入輸出均鎖存作為A口和B口的控制位及狀態(tài)位2應答式輸入/輸出輸入輸出均鎖存作為A口的控制及狀態(tài)位 2. 8255A的芯片引腳 8255A是一種有40個引腳的雙列直插式標準芯片,其引腳排列如圖62所示。除電源(5V)和地址以外,其它信號可以分為兩組: (1)與外設相連接的有: PA7PA0:A口數據線 PB7PB0:B口數據線 PC7PC0:C口數據線圖72 8255A的芯片引腳圖 (2)與CPU相連接的有: D7D0:8255A的數據線,和系統(tǒng)數據總線相連。 RESET:復位信號,高電平有效。當RESET有效時,所有內部寄存器都被清除,同時,3個數據
5、端口被自動設為輸入方式。 :片選信號,低電平有效。只有當 有效時,芯片才被選中,允許8255A與CPU交換信息。 :讀信號,低電平有效。當 有效時,CPU可以從8255A中讀取輸入數據。CSCSRDRD :寫信號,低電平有效。當 有效時,CPU可以往8255A中寫入控制字或數據。 A1、A0:端口選擇信號。8255A內部有3個數據端口和1個控制端口,當A1A0=00時選中端口A;A1A0=01時選中端口B;A1A0=10時選中端口C;A1A0=11時選中控制口。 A1、A0和 、 及 組合所實現的各種功能如表7-2所示。WRWRWRRDCS表72 8255A端口選擇表 A1A0RDWRCS操
6、作00010A口數據總線01010B口數據總線10010C口數據總線00100數據總線A口01100數據總線B口10100數據總線C口11100數據總線控制寄存器1數據總線為三態(tài)11010非法狀態(tài)110數據總線為三態(tài) 7.1.2 8255A的工作方式 8255A有3種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來指定。3種工作方式的傳送示意圖如圖73所示。 圖73 8255A的3種工作方式(a)方式0; (b)方式1; (c)方式2 地址總線控制總線數據總線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位都可以設定為輸入或輸出。作為輸出口時,輸出的數據均被鎖存;作為輸入口時,A口的數據能鎖存,B口與C口的數據不能鎖存。 2.方式1(選通輸入/輸出方式) 在這種工作方式下,A口可由編程設定為輸入口或輸出口,C口的3位用來作為輸入/輸出操作的控制和同步信號;B口同樣可由編程設定為輸入口或輸出口,C口的另3位用來作為輸入/輸出操作的控制和同步信號。在方式1下A口和B口的輸入數據或輸出
8、數據都能被鎖存。 1)方式1下A口、B口均為輸入 在方式1下,A口和B口均工作在輸入狀態(tài)時,需利用C口的6條線作為控制和狀態(tài)信號線,其定義如圖64(a)所示。 圖74 方式1下的信號定義(a)A口、B口均為輸入時;(b)A口、B口均為輸出時 C口所提供的用于輸入的聯絡信號有: (Strobe):選通脈沖信號(輸入),低電平有效。當外設送來 信號時,輸入的數據被裝入8255A的輸入鎖存器中。 IBF(InputBufferFull):輸入緩沖器滿信號(輸出),高電平有效。此信號有效時,表示已有一個有效的外設數據鎖存于8255A的口鎖存器中,尚未被CPU取走,暫不能向接口輸入數據,它是一個狀態(tài)信號
9、。STBSTB INTR(InterruptRequest):中斷請求信號(輸出),高電平有效。當IBF為高、 信號由低變高(后沿)時,該信號有效,向CPU發(fā)出中斷請求。 方式1 數據輸入過程如下: 當外設的數據準備好后,發(fā)出 信號,輸入的數據被裝入鎖存器中,然后IBF信號有效(變?yōu)楦唠娖?。 數據輸入操作的時序關系如圖75所示。STBSTB 圖75 方式1下的輸入時序 2) 方式1下A口、B口均為輸出 與輸入時一樣,要利用C口的6根信號線,其定義如圖64(b)所示。用于輸出的聯絡信號有: (1) (Acknowledge):外設響應信號(輸入),低電平有效。 (2) (OutputBuffe
10、Full):輸出緩沖器滿信號(輸出),低電平有效。 (3)INTR:中斷請求信號(輸出),高電平有效。 ACKOBF 方式1下數據輸出過程如下: 當外設接收并處理完1組數據后,發(fā)回 響應信號。 數據輸出操作的時序關系如圖66所示。 應當指出,當8255A的A口與B口同時為方式1的輸入或輸出時,需使用C口的6條線,C口剩下的2條線還可以用程序來指定數據的傳送方向是輸入還是輸出,而且也可以對它們實現置位或復位操作。當一個口工作在方式1時,則C口剩下的5條線也可按照上述情況工作。 ACK圖76 方式1下的輸出時序 3. 方式2 8255A只有A口具有這種雙向輸入輸出工作方式,實際上是在方式1下A口輸
11、入輸出的結合。在這種方式下,A口為8位雙向傳輸口,C口的PC7PC3用來作為輸入/輸出的同步控制信號。在這種情況下,B口和PC2PC0只能編程為方式0或方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口方式1之下的控制線。 圖77 方式2下的信號定義A口PC7PC6PC5PC4PC38255APA0PA7OBFAACKASTBAIBFAINTRA 在方式2時,其輸入輸出的操作時序如圖68所示。 1) 輸入操作 當外設向8255A送數據時,選通信號STBATX-也同時送到,選通信號將數據鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號IBFA成為高電平(有效),告訴外設,A口已
12、收到數據。選通信號結束時,使中斷請求信號為高,向CPU請求中斷。 2)輸出操作 CPU響應中斷,當用輸出指令向8255A的A端口中寫入一個數據時,會發(fā)出寫脈沖信號 。 WR圖78 方式2下的時序圖 7.1.3 8255A的控制字及初始化 1.8255A的控制字 8255A為可編程接口芯片,以控制字形式對其工作方式和C口各位的狀態(tài)進行設置。它有兩種控制字:工作方式控制字和C口置位/復位控制字。 1) 工作方式控制字 工作方式控制字用于確定各口的工作方式及數據傳送方向,其格式如圖69所示。 對工作方式控制字作如下說明: (1) A口有3種工作方式,而B口只有2種工作方式。 (2)A組包括A口與C口
13、的高4位,B組包括B口與C口的低4位。 (3)在方式1或方式2下,對C口的定義(輸入或輸出)不影響作為聯絡線使用的C口各位的功能。 (4)最高位(D7位)為標志位,D7=1為方式控制字。 2) C口置位/復位控制字 利用C口置位/復位控制字可以很方便地使C口8位中的任一位清0或置1,該控制字的格式如圖69(b)所示。D7位為該控制字的標志位,D7=0為C口置位/復位控制字。 在使用中,該控制字每次只能對C口中的一位進行置位或復位。應注意的是,作為聯絡線使用的C口各位是不能采用置位/復位操作來使其置位或復位的。其數值應視現場的具體情況而定。 2. 8255A的初始化編程 8255A初始化的內容就
14、是向控制寄存器寫入工作方式控制字或C口置位/復位控制字。這兩個控制字可按同一地址寫入且不受先后順序限制。由于兩個控制字因標志位的狀態(tài)不同,因此8255A能加以區(qū)分。 圖79 8255A控制字格式(a)工作方式控制字; (b)C口置位/復位控制字D7=1為工作方式控制字標志位置位/復位1=置位 0=復位D7=0為C口置位/復位控制字標志位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無關位選擇端口C(下口)1=輸入 0=輸出端口
15、B1=輸入 0=輸出方式選擇0=方式0 1=方式1端口C(下口)1=輸入 0=輸出端口A1=輸入 0=輸出方式 00=方式0選擇 01=方式1 1=方式2 A組 例如對8255A各口作如下設置:A口方式0輸入,B口方式0輸出,C口高位部分為輸出、低位部分為輸入。設控制寄存器的地址為03FFH,則其工作方式控制字可設置為: D0=1:C口低半部輸入; D1=0:B口輸出; D2=0:B口方式0; D3=0:C口高半部輸出; D4=1:A口輸入; D6D5=00:A口方式0; D7=1:工作方式字標志。 因此工作方式控制字為10010001B即91H。 初始化程序段為: MOV DPTR,03FF
16、H MOV A,91H MOVX DPTR,A 若要使端口C的D3位置位的控制字為00000111B(即07H),而使D3位復位的控制字為00000110B(即06H)。 7.1.4 8255A與系統(tǒng)的連接 由于8255A是Intel公司專為其主機配套設計制造的標準化外圍接口芯片,因此它與MCS-51單片機的連接是比較簡單方便的。 一般來說,MCS-51單片機擴展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機系統(tǒng)片外RAM的實際容量一般均不太大,遠遠達不到64KB的范圍,因此I/O接口芯片大多采用部分譯碼的方法,而用得比較多的則是直接利用地址線的線選法。這種方法雖然要浪費大量的地址號,但譯碼電
17、路比較簡單。圖610就是一種較常用的連接實例。圖710 8255A與8031的連接P2.7ALEP08031EAWRRDRESETG74LS373OECSA1A0WRRDRESETD7D0A口B口C口 圖710中,P0口為地址/數據復用口。數據通過P0口直接傳送,地址的低8位是需通過鎖存器74LS373得到的,而地址的高8位則由P2口傳送。 現采用線選法,利用高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應用舉例 8255A在微機和單片機控制系統(tǒng)中得到了廣泛應用,現舉兩例加以說明。 例1:要求通過8255A的PC5端向外輸出1個正脈沖信號,已知8255A的C口和控制口的地址分別為0002H和0003H
19、。 解:若要從PC5端輸出1個正脈沖信號,可通過對PC5位的置位和復位控制來實現。由于每送1個控制字,只能對1位作1次置位或復位操作,故產生1個正脈沖要對PC5位先送置位控制字,經過一定的延時后(延時時間視脈寬而定),再送復位控制字即能實現。程序編制如下:MOV DPTR,0003H ;指向8255A的控制口MOV A,OBH ;對PC5置1MOVX DPTR,ALCALL DELAY ;延時(調用延時子程序)DEC A ;對PC5置0MOVX DPTR,A 例2:8255A作為連接打印機的接口。 圖611是通過8255A連接打印機的接口電路,數據傳送采用查詢方式。8255A的地址譯碼采用線選
20、法,將P0.7直接與8255A的 端相連(通過地址鎖存器),其口地址A口為7CH,B口為7DH,C口為7EH,命令口為7FH。CS圖711 8255A連接打印機的接口電路圖710 8255A與8031的連接RDWRRESETP0.7 P0.0ALEEA74LS373Q7Q1D7D0Q0GOERDWRRESETCSA1A0D7D09366BPA7PA0PC7PC0PB7PB0DB7DB0BUSYSTB微型打印機 現要求編制打印50個字符的程序,該數據存于片內RAM從20H開始的50個連續(xù)單元中。 程序如下: MOV R0,7FH ;指向8255A的命令口 MOV A,88H ;取方式字:A口輸出
21、,C口低出高入 MOVX R0,A ;送入方式字 MOV R1,20H ;R1指向數據區(qū)首址 MOV R2,32H ;送數據塊長度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數據 MOVX R0,A ;數據輸出到A口 INC R1 ;數據指針加1 MOV R0,7FH ;指向命令口 MOV A,00H ;C口置位/復位命令字(PC0=0) MOVX R0,A ;產生STBTX-的下降沿 MOV A,01H ;改變C口置位/復位命令字(PC
22、0=1) MOVX R0,A ;產生STBTX-的上升沿 DJNZ R2,LP ;未完,則反復 2 可編程可編程RAM/IO/CTC接口接口8155 7.2.1 8155的結構與引腳 1. 8155的內部結構 8155的內部結構如圖612(b)所示。它含有1個256字節(jié)的RAM、1個14位定時/計數器以及3個并行I/O口,其中A口、B口均為8位,C口為6位。A口、B口既可作為基本I/O口,也可作為選通I/O口;C口除可作為基本I/O口外,還可用作A口、B口的應答控制聯絡信號線。此外,8155內部還有一個控制寄存器組,用來存放控制命令字。圖712 8155引腳排列及結構框圖 (a)引腳排列; (
23、b)內部結構框圖圖712 8155引腳排列及結構框圖 (a)引腳排列; (b)內部結構框圖IO/M8位數據線AD0-AD7CEALERDWRRESET2568RAM控制寄存器定時器ABCA口8B口8C口6PA0-7PB0-7PC0-5定時器CLK定時器輸出VccVss 2. 8 155的引腳 8155為40引腳雙列直插式封裝芯片,其引腳排列如圖712(a)所示?,F將其各引腳的功能簡介如下: AD0AD7:地址/數據復用線。 它與8031單片機的P0口直接相連。8155和CPU之間的地址、數據、命令及狀態(tài)信號都通過這組信號線傳送。 :片選信號,輸入,低電平有效。 :RAM和I/O口選擇線。當 =
24、1時,選中I/O口;當 =0時,選中RAM。 CE/IO M/IO M/IO M ALE:地址鎖存信號。 :讀選通信號,輸入,低電平有效。 :寫選通信號,輸入,低電平有效。 TIMERIN:定時器輸入。它是8155片內定時器的脈沖信號輸入端。 TIMEROUT:定時器輸出。通過它可以輸出矩形波或脈沖波。 PA0PA7:A口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PB0PB7:B口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PC0PC5:C口的輸入/輸出或控制信號線。 RDER 7.2.2 8155的RAM和I/O口的編址 與其它接口芯片一樣,8155芯片中的RAM和I/O口均占
25、用單片機系統(tǒng)片外RAM的地址,其中高8位地址由 和IO/AKM-信號決定。當 =0,且IO/ =0時,低8位的00HFFH為RAM的有效地址;當 =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位和操作方式寄存器 對于多數單片機應用系統(tǒng)來說,由于片外RA
26、M區(qū)的容量較大(最大為64KB),因此通常采用線選法對接口芯片進行編址。對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)聯絡控制信號線。 1.基本I/O 基本I/O為無條件傳送,這是最簡單的I/O操作,不需要任何聯絡信號,隨時可以進行。 2.選通I/O 選通I/O為條件傳送,傳送的方式可用查詢方式,也可用中斷方式。 (1)BF:I/O緩沖器滿空標志,輸出,高電平有效。 (2) :選通信號,輸入,低電平有效。 (3)
28、INTR:中斷請求信號,輸出,高電平有效。 以上這些信號線對A口與B口均適用,分別稱之為ABF、 、AINTR與BBF、 、BINTR。它們都是由C口提供的,如表65所示。 STBSTBBSTB表75 8155的PC口線聯絡信號定義 方式口位作PA口聯絡信號作PA和PB口聯絡信號PC0AINTRAINTRPC1ABFABFPC2ASTBASTBPC3輸出BINTRPC4輸出BBFPC5輸出BSTB 7.2.4 8155的命令/狀態(tài)字 8155有1個命令/狀態(tài)寄存器,實際上這是兩個不同的寄存器,分別存放命令字和狀態(tài)字。由于對命令寄存器只能進行寫操作,而對狀態(tài)寄存器只能進行讀操作,因此把它們編為同
29、一個地址,合在一起稱之為命令/狀態(tài)寄存器。 1.命令字 命令字共8位,用于定義I/O端口及定時器的工作方式。對命令寄存器只能寫入不能讀出(讀出的將是狀態(tài)寄存器的內容)。 命令字的格式如圖713所示。 圖713 8155的命令字格式TM2TM1IEBIEAPC2PC1PBPAA口方式0=輸出I=輸出B口方式C口方式00=ALT1 01=ALT210=ALT3 11=ALT4A口中斷0=中斷禁止1=中斷允許B口中斷定時器方式00=無操作01=停止計數10=計滿后停止11=開始計數 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位為聯絡信號,高3位輸出(參閱表75)。 D3D2=11(ALT4):A口、B口均為選通I/O,C口低3位作為A口聯絡信號,高3位作為B口聯絡信號(參閱表65)。 關于定時器運行控制位(TM2、TM1)補充說明如下: 當TM2、TM1=11時,其操作為:當計數器未計數時,裝入計數長度和方式后立即開始計數;當計數器正在計數時,待計數器溢出后以新裝入的計數長度和方式進行計數。 2.狀態(tài)字 8155的狀態(tài)寄存器與命令寄存器共用1個地址,當使用讀操作時,讀入的便是
31、狀態(tài)寄存器中的內容。其格式如圖714所示。 圖714 8155的狀態(tài)字格式INTRAA口中斷請求ABFA口緩沖器滿/空INTEAA口中斷允許INTRBB口中斷請求BBFB口緩沖器滿/空INTEBB口中斷允許TIMER定時器中斷(計滿時為高電平,讀出狀態(tài)字或硬件復位為低電平)D6D5D4D3D2D1D0 7.2.5 8155的定時/計數器 8155的定時/計數器是1個14位的減法計數器,由兩個8位寄存器構成,其格式如下:T7T6T5T4T3T2T1T0M2M1T13T12T11T10T9T8D7D0 其中低14位組成計數器,剩下的兩個高位(M2M1)用于定義計數器輸出的信號形式,如圖715所示。
32、 8155的定時/計數器與MCS-51單片機芯片內部的定時/計數器在功能上是相同的,都有定時和計數兩種功能。但是在使用上卻有很多不同之處。具體表現在: (1)8155的定時/計數器為減法計數,而MCS-51單片機內部的定時/計數器卻是加法計數。 (2)MCS-51單片機內部的定時/計數器有多種工作方式,而8155的定時/計數器卻只有一種固定的工作方式,即14位計數,通過軟件方法進行計數值的加載。 (3)MCS-51單片機內部的定時/計數器有兩種計數脈沖:當定時工作時,由芯片內部按機器周期提供固定頻率的計數脈沖;當計數工作時,從芯片外部引入計數脈沖。 (4)MCS-51單片機內部的定時/計數器,
33、在計數溢出時自動置位TCON寄存器中的計數溢出標志位TF,供用戶以查詢或中斷方式使用;而8155的定時/計數器,在計數溢出時卻是通過TIMEROUT引腳向外部發(fā)出1個脈沖信號。 圖715 定時/計數器輸出方式 計數開始計數結束M2M1=00 單個方波M2M1=10 單個脈沖M2M1=11 連續(xù)脈沖M2M1=01 連續(xù)方波 另外,8155的定時器在計數過程中,計數器的值并不直接表示外部輸入的脈沖。若作為外部事件計數,那么由計數器的現行計數值求輸入脈沖數的方法為: (1) 停止計數器計數。 (2) 分別讀出計數器的兩個字節(jié)內容。 (3) 取其低14位數作為現行計數值。 (4) 算出現行計數值與初始
34、計數值之差即可。 7.2.6 8155和MCS-51單片機的接口電路 8155可以和MCS-51單片機直接相連,而不需外加邏輯電路。圖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的初始化編程及應用舉例 8155初始化編程的主要內容為寫入8155的命令字和定時/計數器的初值以及輸出方式?,F舉例說明如下。 例1:采用如圖716所示的接口電路,設A口與C口為輸入口,B口為輸出口,均為基本I/O。定時器為連續(xù)方波工作方式,對輸入脈沖進行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:立即啟動計數器所以命令字為11000010B=C2H。 計數初值的選取方法為:
36、由于計數值為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口輸入數據并進行判斷:若不為0,則將該數據存入8155的RAM中(從起始單元開始存放,數據的總數不超過256個),同時從B口輸出,并將PC0置“1”;若為0,則停止輸入輸出,同時將PC0清“0”。試編寫能完成上述任務的初始化及應用程序。 解:初始化及應用程序如下: MOV DPTR,0200H ;指向命令口 MOV A,00000110B ;取命令字 MOVX DPTR,A ;寫入命令字 MOV R0,00H ;指向8155的RAM區(qū)首址 MOV R1,00H ;數據總數為256個LOOP1:MOV DPTR,0201H ;指向A口 MOVX A,DPTR
38、 ;從A口輸入數據 JZ LOOP3 ;為0則轉 MOV X R0,A ;不為0,則存入RAM中 INC R0 ;指向下一單元 INC DPTR ;指向B口 MOVX DPTR,A ;從B口輸出 INC DPTR ;指向C口 MOVX A,DPTR ;取C口數據 SETB ACC,0 ;使PC0置1 MOVX DPTR,A ;回送 DJNZ R1,LOOP1 ;未完則反復LOOP2:SJMP $ ;暫停LOOP3:MOV DPTR,0203H ;指向C口 MOVX DPTR,A ;回送 SJMP LOOP23 鍵盤顯示器接口鍵盤顯示器接口8279 7.3.1 8279的組成及引腳 8279芯片
39、有40條引腳,由單一+5V電源供電。它主要由以下幾部分組成: (1) I/O控制和數據緩沖器; (2) 控制和定時寄存器及定時控制部分; (3) 掃描計數器; (4)回送緩沖器與鍵盤去抖動控制電路; (5)FIFO(先進先出)寄存器和狀態(tài)電路; (6)顯示器地址寄存器及顯示RAM。 8279的引腳如圖717所示,下面對引腳名稱作簡要說明。 DB0DB7:雙向數據總線。 A0:命令狀態(tài)或數據選擇線。A0=1,表示從DB0DB7線上傳送的是命令或狀態(tài)字;A0=0表示為數據。 、 :讀、寫信號線。 IRQ:中斷請求線。 SL0SL3:掃描線。可進行譯碼掃描(4選1),也可進行編碼掃描(16選1),但
40、要使用4-16譯碼器。若用3-8譯碼器的話,則掃描線為8選1。RDWR圖717 8279引腳圖 RL0RL7:回送線。內部有上拉電阻,從此線上得到鍵盤的回掃信號。 OUTA0OUTA3、OUTB0OUTB3:顯示器刷新寄存器輸出,與掃描線同步。 7.3.2 8279的接口電路與應用舉例 圖718給出了用8279芯片管理24個鍵的鍵盤和6個LED數碼顯示器的實際應用接口電路,以及它與8031單片機的接口方法。 作為一個外設接口芯片,8279的片選信號 由8031的P25、P26、P27這3條地址線經地址譯碼器譯碼后得到的(P27、P26、P25=011)。其片內尋址線A0與8031系統(tǒng)的地址線A
41、0相連,此時8279數據口的地址號為6000H,命令/狀態(tài)口的地址號為6001H。 CS圖718 8279應用實例 反相驅動器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反相驅動器SN75452a b c d e f g upLE
42、D顯示器2#-6#LED顯示器 該接口電路的工作過程簡述如下: 每當按下一個鍵,8279會自動識別鍵號,產生相應的鍵編碼自動送入先進先出寄存器FIFO中,同時產生中斷請求信號IRQ,向CPU請求中斷。當CPU響應中斷,執(zhí)行中斷服務程序,并從FIFO中讀取編碼數據之后,則IRQ信號將自動撤消。 4 LED數碼顯示器接口數碼顯示器接口 7.4.1 LED數碼顯示器的結構與顯示段碼 1. LED數碼顯示器的結構 LED數碼顯示器是1種由LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個LED發(fā)光二極管,其中7個用于顯示字符,1個用于顯示小數點,故通常稱之為7段(也有稱作8段)發(fā)光二極管數碼顯示器。
43、其內部結構如圖619所示。圖719 7段LED數碼顯示器 LED數碼顯示器有兩種連接方法: (1)共陽極接法。 把發(fā)光二極管的陽極連在一起構成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。 (2)共陰極接法。 把發(fā)光二極管的陰極連在一起構成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。 2. LED數碼顯示器的顯示段碼 為了顯示字符,要為LED顯示器提供顯示段碼(或稱字形代碼),組成一個“8”字形字符的7段,再加上1個小數點位,共計8段,因此提供給LED顯示器的顯示段碼為1個字節(jié)。各段碼位的對應關系如下: 段碼位D7D6D5D4D3D2D
44、1D0 顯示段dpgfedcba表76 十六進制數及空白字符與P的顯示段碼 字型共陽極段碼共陰極段碼字型共陽極段碼共陰極段碼0C0H3FH990H6FH1F9H06HA88H77H2A4H5BMb83H7CH3B0H4FHCC6H39H499H66HdA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H 7.4.2 LED數碼顯示器的接口方法與接口電路 1.LED數碼顯示器的接口方法 單片機與LED數碼顯示器有以硬件為主和以軟件為主的兩種接口方法。 1)以硬件為主的接口方法 這種接口方法的電路如圖720所示。圖720 以
45、硬件為主的LED顯示器接口電路 2)以軟件為主的接口方法 這種接口方法的電路如圖721所示,它是以軟件 查表代替硬件譯碼,不但省去了譯碼器,而且還能顯示更多的字符。但是驅動器是必不可少的,因為僅靠接口提供不了較大的電流供LED顯示器使用。 圖721 以軟件為主的LED顯示器接口電路 2. LED數碼顯示器的接口電路 實際使用的LED數碼顯示器位數較多,為了簡化線路、降低成本,大多采用以軟件為主的接口方法。對于多位LED數碼顯示器,通常采用動態(tài)掃描顯示方法,即逐個地循環(huán)地點亮各位顯示器。這樣雖然在任一時刻只有1位顯示器被點亮,但是由于人眼具有視覺殘留效應,看起來與全部顯示器持續(xù)點亮的效果基本一樣
46、(在亮度上要有差別)。 圖722 8155作6位LED顯示器接口的電路 7.4.3 LED數碼顯示器的顯示方法 對于多位數碼顯示器來說,為了簡化線路、降低成本,往往采用以軟件為主的接口方法,即不使用專門的硬件譯碼器,而采用軟件程序進行譯碼。如前所述,由于各位數碼管的顯示段碼是互相并聯的,因此在同一時刻只能顯示同一種字符。對于這種接口電路來說,其顯示方法有靜態(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)顯示 如果要在同一時刻顯示不同的字符,從電路上看,這是辦不到的。因此只能利用人眼對視覺的殘留效應,采用動態(tài)掃描顯示的方法,逐個地循環(huán)點亮各位數碼管,每位顯示1ms左右,使人看起來就好象在同時顯示不同的字符一樣。 在進行動態(tài)掃描顯示時,往往事先并不知道應顯示什么內容,這樣也就無從選擇被顯示字符的顯示段碼。為此,一般采用查表的方法,由待顯示的字符通過查表得到其對應的顯示段碼。下面介紹一種動態(tài)掃描顯示子
48、程序:DIR: MOV R0,7AH ;指向顯示緩沖區(qū)首址 MOV R3,01H ;從右邊第1位開始顯示 MOV A,00H ;取全不亮位控字 MOV R1,BITPORT ;指向位控口 MOVX R1,A ;瞬時關顯示LD1: MOV A,R0 ;取出顯示數據 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 ;已到最高位則轉返回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)本例接口電路是以軟件為主的接口電路,顯示數據有6位,每位數碼管對應1位有效顯示數據。 (2)由程序可知,由于數碼顯示器的低位(最右邊的位)顯示的是顯示緩沖區(qū)中的低地址單元中的數,因此數在顯示緩沖區(qū)中存放的次序為低地址單元存低位,高地址單元存高位。 (3)在
50、動態(tài)掃描顯示過程中,每位數碼管的顯示時間約1ms,這由調用延時1ms子程序DELY來實現。 (4)本程序是利用查表方法來得到顯示段碼的,這是一種既簡便又快速的方法。由于MCS-51單片機具有查表指令(MOVC指令),因此用來編制查表程序是非常方便的。 (5)由于在顯示段碼表中,將“空白”字符排在字母“F”的后邊,因此在使用查表指令時,若要查“空白”字符的顯示段碼,那么在累加器A中應放入數據“10H”。 (6)在實際的單片機應用系統(tǒng)中,一般將顯示程序作為1個子程序供監(jiān)控程序調用。 7.4.4 LED數碼顯示器應用舉例 1.靜態(tài)顯示舉例 例1:在數碼顯示器的最左邊1位上顯示1個“P”字。數碼顯示器
51、的接口電路如圖722所示,設8155的端口地址為7F00H7F05H,數碼管為共陽極。試編寫相應的顯示程序。 解:本例要顯示的字符已知,且在同一時刻只顯示1種字符,故可采用靜態(tài)顯示的方法。由圖722可知,當采用共陽極數碼管時,應按共陽極規(guī)律控制。在程序的開始,應對8155進行初始化編程,設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:開始時在數碼顯示器的最右邊一位上顯示1個“0”字,以后每隔0.5秒將“0”字左移1位,直到最左邊一位后則停止顯示。接口電路與端口地址同上,設有20ms延時子程序D20MS可供調用。試編寫相應的程序。 解:本例仍可采用靜態(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 ;若已到最左邊一位,則轉 RL A ;未到,則將位控字左移1位 SJMP LOOP1 ;繼續(xù)LOOP3:MOV A,00H ;停止顯示 MOVX DPTR,A SJMP $ ;暫停 2.動態(tài)顯示舉例 例3:編一動態(tài)顯示程序,使數碼顯示器同時顯示“ABCDEF”6個字符。設顯示緩沖區(qū)的首地址為7AH,可調
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個數未送完,則重復MM: LCALL DIR ;掃描顯示一遍 SJMP MM ;重復掃描 例4:在一串單字節(jié)無符號數中找出最大值,并在數碼顯示器的最右邊兩位上顯示。設數據串的長度為20,存放在片內RAM從30H單元開始的一段區(qū)域中。 解:根據題意,LED數碼顯示器必須采用動態(tài)
55、掃描顯示的方法。 本例要顯示的是兩位數,而數碼顯示器有6位。在不顯示數字的位上數碼管應該不亮,而動態(tài)掃描顯示子程序每次對6位數碼管全掃描一遍。 程序按如下思路編寫: (1)先求出最大值。 (2)將最大值拆字節(jié)后存入顯示緩沖區(qū),應注意數的存放次序。根據題意,低位數應存入顯示緩沖區(qū)的低地址單元。 (3)將“空白”字符的查表值10H送入不顯示位所對應的顯示緩沖區(qū)中。 (4)反復調用動態(tài)掃描顯示子程序。 程序如下: MOV R0,30H ;R0指向數據區(qū)首地址 MOV R1,13H ;比較次數送R1 MOV A,R0 ;取第1個數M1: INC R0 ;指向下一個數 MOV 70H,R0 ;下一個數送
56、入70H單元中 CJNE A,70H,M3 ;若前后兩個數不相等則轉M2: DJNZ R1,M1 ;若相等,則判比較完否? SJMP M4 ;若已完,則轉至顯示處理M3: JNC M2 ;前一個數大,轉至判結束否? MOV A,70H ;前一個數小,將大數換入A中 SJMP M2 ;轉至判結束處M4: MOV R2,A ;暫存最大值 ANL A,0FH ;保留低位數 MOV 7AH,A ;將低位數存入顯示緩沖區(qū)中 MOV A,R2 ;恢復最大值 ANL A,F0H ;保留高位數 SWAP ;將高位換入低位中 MOV 7BH,A ;存入高位數 MOV A,10H ;取“空白”字符查表值 MOV
57、7CH,A ;放入顯示緩沖區(qū)不顯示位的單元中 MOV 7DH,A ;高4位不顯示 MOV 7EH,A MOV 7FH,A MM:LCALL DIR ;掃描顯示一遍 SJMP MM ;重復掃描,顯示最大值5 鍵盤接口鍵盤接口 鍵盤實際上是由排列成矩陣形式的一系列按鍵開關組成的,它是單片機系統(tǒng)中最常用的人機聯系的一種輸入設備。用戶通過鍵盤可以向CPU輸入數據、地址和命令。 鍵盤按其結構形式可分為編碼式鍵盤和非編碼式鍵盤兩大類。 編碼式鍵盤是由其內部硬件邏輯電路自動產生被按鍵的編碼。這種鍵盤使用方便,但價格較貴。 單片機系統(tǒng)中普遍使用非編碼式鍵盤。這類鍵盤應主要解決以下幾個問題: (1)鍵的識別;
58、(2)如何消除鍵的抖動; (3)鍵的保護。 在以上幾個問題中,最主要的是鍵的識別。 7.5.1 非編碼式鍵盤的結構與工作原理 1.非編碼式鍵盤的結構 非編碼式鍵盤一般采用行列式結構并按矩陣形式排列,如圖723所示。 圖723示出44行列式鍵盤的基本結構示意圖。44表示有4根行線和4根列線,在每根行線和列線的交叉點上均分布1個單觸點按鍵,共有16個按鍵。 2.非編碼式鍵盤的工作原理 非編碼式鍵盤識別閉合鍵通常有兩種方法:一種稱為行掃描法,另一種稱為線反轉法。 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.如何消除鍵的抖動 由于按鍵為機械開關結構,因此機械觸點的彈性及電壓突跳等原因,往往在觸點閉合或斷開的瞬間會出現電壓抖動,如圖724所示。 圖724 鍵閉合和斷開時的電壓抖動 4.鍵的保護 鍵的保護問題指的是當有雙鍵或多鍵同時按下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《園林樹木》課程標準
- 2BizBoxERP用戶基礎手冊
- 三角形的翻折課件
- 第1單元 古代亞非文明(高頻選擇題50題)(原卷版)
- 2024年農業(yè)和農村檔案工作總結
- 七年級下《保護野生動物》蘇教版-課件
- 農業(yè)科創(chuàng):研發(fā)力量展示
- 機場服務行業(yè)銷售工作總結
- 資金借貸合同個人醫(yī)療保健費用貸款支出租賃保險三篇
- 初一生物教學工作總結實踐探索培養(yǎng)動手能力
- 2024年血透管路行業(yè)技術趨勢分析
- 美術年終總結匯報
- 數字孿生技術與MES系統(tǒng)的融合
- 人才梯隊(人才庫、人才盤點)建設方案
- 廣西柳州市2023-2024學年四年級上學期期末考試語文試卷
- 《芯片制造工藝》課件
- 中山大學研究生中特考試大題
- 手術室護理實踐指南術中低體溫預防
- 鋼管混凝土柱計算
- 四川省成都市2022-2023學年六年級上學期語文期末考試試卷(含答案)5
- 違規(guī)建筑綜合整頓行動方案(二篇)
評論
0/150
提交評論