單片機接口芯片與接口技術_第1頁
單片機接口芯片與接口技術_第2頁
單片機接口芯片與接口技術_第3頁
單片機接口芯片與接口技術_第4頁
單片機接口芯片與接口技術_第5頁
已閱讀5頁,還剩216頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 *第6章 接口芯片與接口技術第5章 接口芯片與接口技術 詳細5.1 I/O 概 述 5.1.1 I/O接口電路的作用 計算機系統(tǒng)的除了CPU、 存儲器外, 還必須有外部設備。 計算機通過輸入/輸出設備和外界進行通信。 計算機所用的數據以及現(xiàn)場采集的各種信息都要通過輸入設備送到計算機; 計算的結果和計算機產生的各種控制信號又需通過輸出設備輸出到外部設備。51單片機4個I/O,P3口,P2口會被其他應用,只能P1口能被完全利用,不夠用 詳細 計算機的I/O操作, 即CPU和外部設備之間的數據傳送卻十分復雜。 主要表現(xiàn)在以下幾個方面: (1) 外部設備的工作速度與計算機相比要低得多。開關,繼電器

2、(2) 外部設備的種類繁多, 有機械式、 機電式及電子式等等。 轉換成芯片能夠識別的信號 (3) 外部設備的數據信號是多種多樣的, 既有電壓信號, 也有電流信號; 既有數字量, 還有模擬量。 (4) 外部設備的數據傳送有近距離的, 也有遠距離的; 有的使用并行數據傳送, 而有的那么使用串行傳送數據。 詳細接口電路:對CPU 和外部設備之間的數據傳送進行協(xié)調具體說來, 接口電路主要有以下幾項功能: (1) 速度協(xié)調。 (2) 數據鎖存。 (3) 三態(tài)緩沖。 (4) 數據轉換。詳細(1) 速度協(xié)調。CPU接口I/O設備詢問READY在CS 有效下,CPU先給鎖存器發(fā)送11,燈泡亮,再斷開CS,鎖存

3、器的信號保持;在CS 有效下,CPU先給鎖存器發(fā)送00,燈泡滅。(2) 數據鎖存數據在數據總線上停留的時間十分短暫CPU接口CS詳細燈泡8051的4個并行I/O 口,都是通過鎖存器和外界聯(lián)系總線隔離技術:任一時刻,只允許一個數據源使用總線。其余數據源和數據總線隔離。三態(tài)緩沖是門電路,不像鎖存器是觸發(fā)器,鎖存器能夠保持信息,門電路不能保持,有輸入和輸出,一旦使能端有效,輸入和輸出信號相同,使能端無 效,輸出是高阻。詳細控制信號(3) 三態(tài)緩沖詳細(4) 數據轉換A/D、D/A轉換,轉換電路緩沖器、鎖存器應用概念鎖存器:是由觸發(fā)器作為根本單元,有輸入也有輸出,輸入連接內部總線,輸出連接外部設備,有

4、控制信號;看圖8-2控制信號有效,輸入和輸出相等,把相應數據總線數據保存上去,控制信號無效,輸出信號不受輸入信號的影響。鎖存器用作輸出緩沖器:門電路,不具有保存功能,有輸入也有輸出,輸入連接外部設備,輸出連接數據總線。看圖8-3緩沖器用作輸入,一旦控制信號有效,把外部信號傳到數據總線,控制信號無效,處于高阻態(tài)詳細詳細 5.1.2 接口與端口 “接口一詞是從英文interface翻譯過來的, 具有界面、 相互聯(lián)系等含義。 接口這個術語在計算機領域中應用十分廣泛, 本章所講述的接口那么特指計算機與外設之間在數據傳送方面的聯(lián)系, 其功能主要是通過電路實現(xiàn)的, 因此稱之為接口電路, 簡稱接口。 詳細

5、5.1.3 I/O的編址方式計算機中, 凡需進行讀寫操作的設備都存在著編址問題。 計算機中兩種編址的器件:一 存儲器;二 接口電路。 存儲器是對存儲單元進行編址, 接口電路是對其中的端口進行編址。對端口編址是為I/O操作而進行的, 稱為I/O編址。 常用的I/O編址有兩種方式: 獨立編址方式 統(tǒng)一編址方式詳細存儲器擴展中,RAM和ROM是獨立編制,獨立空間,反映了他們的特點-指令不同,信號不同將I/O 和存儲器分開進行編址計算機形成兩各獨立的地址空間,也就有各自的獨立的讀寫指令。獨立編制統(tǒng)一編制將I/O 和存儲器統(tǒng)一進行編址,只需一套的存儲器指令,直接對存儲器和I/O操作。詳細如果51 單片機

6、把I/O和RAM統(tǒng)一編址,就用MOVX一個命令就行5.2 輸入/輸出I/O傳送方式 5.2.1 無條件傳送方式也稱為同步程序傳送, 類似于CPU和存儲器之間的數據傳送。 只有那些一直為數據I/O傳送作好準備的外部設備, 才能使用無條件傳送方式。 這種傳送方式不需要測試外部設備的狀態(tài), 可以根據需要隨時進行數據傳送操作。外部設備總是處于準備好的狀態(tài),無需測試,隨時可以傳送數據。例如指示燈、發(fā)光二極管 詳細 (1) 外設的工作速度非??? 足以和CPU同步工作。 (2) 具有常駐的或變化緩慢的數據信號的外設。 無條件傳送方式適用于以下兩類外部設備的輸入輸出: 5.2.2 查詢傳送方式 查詢傳送又稱

7、為條件傳送, 即數據的傳送是有條件的。 在輸入/輸出之前, 先要檢測外設的狀態(tài), 以了解外設是否已為數據輸入輸出作好了準備, 只有在確認外設已“準備好的情況下, CPU才能執(zhí)行數據輸入/輸出操作。 通常把通過程序對外設狀態(tài)的檢測稱之為“查詢, 所以這種有條件的傳送方式又叫做程序查詢方式。查詢的流程圖如圖51所示。 詳細圖51 查詢方式流程圖 詳細 5.2.3 中斷傳送方式 由于查詢傳送方式為CPU主動要求傳送數據,而它又不能控制外設的工作速度,因此只能用等待的方式來解決配合的問題。消耗CPU資源中斷方式那么是在外設為數據傳送作好準備之后,就向CPU發(fā)出中斷請求信號(相當于通知CPU),CPU接

8、收到中斷請求信號之后立即作出響應,暫停正在執(zhí)行的原程序(主程序),而轉去為外設的數據輸入輸出效勞,待效勞完之后,程序返回,CPU再繼續(xù)執(zhí)行被中斷的原程序。中斷方式大大提高CPU的效率。詳細 由于CPU的工作速度很快,傳送1次數據(包括轉入中斷和退出中斷)所需的時間很短。對外設來講,似乎是對CPU發(fā)出數據傳送請求的瞬間,CPU就實現(xiàn)了;對主程序來講,雖然中斷了1個瞬間,但由于時間很短,也不會有什么影響。 詳細5.2.4 MCS-51單片機I/O口的直接應用 I/O操作指令輸出數據 輸入數據MOV Px, A MOV A , PxMOV Px, Rn MOV Rn, PxMOV Px,Ri MOV

9、 Ri ,PxMOV Px, direct MOV direct ,Pxx=03 Px=P0P3將I/O口作為存放器使用,進行字節(jié)數據傳送詳細MOV 位傳送 ) MOV Px,y, C CLE CLE Px,y SETB SETB Px,y CPL 位取反 ) CPL Px,y J B ( 位為1轉移 J B Px,y, rel J NB ( 位為0轉移 J NB Px,y, rel JBC ( 位為0轉移清0 JBC Px,y, rel x=03 y=07詳細I/O位操作指令I/O的其他操作指令詳細ANL ANL Px,AORL ORL Px,AXRL XRL Px,AINC INC PxD

10、EC DEC PxDJNZ 數值減1條件轉移 DJNZ Px,relCJNE 數值比較轉移 CJNE A ,Px,relI/O口直接應用舉例 P1.0 P1.1 P1.2 P1.38031 P1.4 P1.5 P1.6 P1.7K1K2K3K4K是開關,產生0,1電平燈泡5VP1.0D0D1D2D3510歐510k歐 詳細P1.0P1.3是輸入, P1.4P1.7是輸出;開關按下是0 ,翻開是1;要求:用k0,k3分別控制燈泡D0D3狀態(tài)取反讀開關狀態(tài)狀態(tài)送高4位輸出中斷方式I/O口直接數據傳送&5v1k1kINT0詳細開關按下一次再彈起,產生一個脈沖負跳變,給外部中斷0端口產生中斷請求。置外

11、中斷方式0脈沖觸發(fā)方式總中斷允許等待中斷外中斷0允許開始詳細MAIN: SETB IT0 / 脈沖邊沿觸發(fā) SETB EX0 /開放外部中斷0 SETB EA /開放中斷HERE: AJMP HERE /等待中斷EXTR: MOV A,#0FH /中斷效勞程序MOV P1,A /熄滅發(fā)光二極管MOV A,P1 /輸入開關狀態(tài)CPL A /狀態(tài)取反ANL A,#0FH /屏蔽高字節(jié)SWAP A /上下半字節(jié)交換MOV P1,A /輸出開關狀態(tài)RETI 詳細5.3單片機簡單I/O口擴展應用有2類:輸入口擴展;輸出口擴展5.3.1 簡單輸入口擴展簡單輸入解決數據緩沖問題簡單輸入擴展就是擴展緩沖器74

12、LS244 CE 1A1 2Y4 1A2 2Y3 1A3 2Y2 1A4 2Y1 GNDAccCE2 1Y1 2A4 1Y2 2A3 1Y3 2A2 1Y4 2A11A2A1Y2Y三態(tài)數據緩沖器詳細74LS244:2個四位數據緩沖器8位A是和外設連,Y連總線利用74LS244進行簡單輸入擴展 P08031 ALE RD74LS373271674LS244CE1 CE2外設詳細說明:2716 是擴展ROM本系統(tǒng)沒有RAM74LS244緩沖器沒有地址,可以和 RAM統(tǒng)一編址,要讀設備時,地址隨便一個數據就可以,使用指令 MOVX A, DPTR ; MOVX指令就會使RD有效;DPTR可以為任意值

13、。此題很特殊,只有一個外部設備 P08031 ALE RD74LS373276474LS3274LS3274LS3274LS3274LS32Y CE244AY CE244AY CE244AY CE244AY CE244AP2.3P2.4P2.5P2.6P2.7P2.0P2.474LS32: 或門58=405個緩沖器244 ,就需要通過線選法P2.7位為0 選中最后一個244,地址:0111,1xxx,xxxx,xxxx可以xxx取0,地址7800H詳細詳細5-3-2簡單輸出的擴展主要功能:數據保持鎖存典型芯片具有使能控制的8D鎖存器8D1D: 8位數據輸入8Q1Q: 8位數據輸出CK:時鐘信號

14、,上升沿數據鎖存G:使能信號G Vcc1Q 8Q1D 8D2D 7D2Q 7Q3Q 6Q3D 6D4D 5D4Q 5QGND CK74LS377鎖存器74LS377真值表D QCK GG詳細小結:鎖存器和緩沖器的特點及使用 1組成鎖存器單元電路:觸發(fā)器帶時鐘控制端觸發(fā)器有記憶 2組成緩沖器單元電路:門電路三態(tài)傳輸電路沒有記憶Q0 Q7CP 鎖存器 GD0 D7D0 D7 CE 緩沖器 A0 A7DBUSDBUS詳細5-3用串行口擴展并行口 RxD TxD P1.0DATA CD4094CLK STBDATA CD4014CLK P/S RxD TxD P1.0輸出輸入詳細說明:用單片機自身帶的

15、串行口來擴展并行口4094是一個移位存放器,串行輸入并行輸出。通過TxD發(fā)送脈沖,把RxD的數據由CPU的SBUF一位一位移到4094;當p1.0有效,8位同時輸出。4014是一個移位存放器,并行輸入串行輸出。通過TxD發(fā)送脈沖,把4094 的8位數據一位一位移到RxD的 SBUF ;當p1.0有效,8位同時輸入。詳細6.1 可編程并行I/O接口8255A 詳細可編程I/O擴展:還具有狀態(tài)存放和命令存放功能,通過軟件編程方式,確定擴展芯片的工作方式。典型芯片:8255 ,8155簡單I/O擴展:實現(xiàn)數據緩沖和數據鎖存 8255A可編程并行輸入/輸出接口芯片是Intel公司生產的標準外圍接口電路

16、。它采用NMOS工藝制造,用單一5V電源供電,具有40條引腳,采用雙列直插式封裝。它有A、B、C3個端口共24條I/O線,可以通過編程的方法來設定端口的各種I/O功能。由于它功能強,又能方便地與各種微機系統(tǒng)相接,而且在連接外部設備時,通常不需要再附加外部電路,所以得到了廣泛的應用。 6.1.1 8255A的內部結構與引腳 1. 8255A的接口電路圖6-2 數據端口A、B、C,8255A有3個8位數據端口,即端口A、端口B和端口C。編程人員可以通過軟件將它們分別作為輸入端口或輸出端口,不過這3個端口在不同的工作方式下有不同的功能及特點。PA,PB口是單純數據輸入輸出PC口既可做數據口,也可做控

17、制口,用于控制PA,PBI/O有無條件輸入輸出,也有有條件輸入輸出詳細圖62 8255A的芯片引腳圖 假設有條件 ,由PC口來輸入條件PC7PC4控制PAPC3PC0控制PBA組: 由 控制電路控制端口A和端口C的上半部(PC7PC4)。B組: 由控制電路控制端口B和端口C的下半部(PC3PC0)詳細 2. 8255A的芯片引腳 8255A是一種有40個引腳的雙列直插式標準芯片,其引腳排列如圖62所示。除電源(5V)和地址以外,其它信號可以分為兩組: (1)與外設相連接的有: PA7PA0:A口數據線 PB7PB0:B口數據線 PC7PC0:C口數據線詳細 (2)總線接口電路: D7D0:82

18、55A的數據線,和系統(tǒng)數據總線相連。數據總線緩沖器,8位雙向三態(tài)緩沖器,所有數據包括控制字,狀態(tài)信息通過該緩沖器傳送。 RESET:復位信號,高電平有效。當RESET有效時,所有內部存放器都被去除,同時,3個數據端口被自動設為輸入方式。和 CPU上的RESET相連。 :片選信號,低電平有效。只有當 有效時,芯片才被選中,允許8255A與CPU交換信息。 :讀信號,低電平有效。當 有效時,CPU可以從8255A中讀取輸入數據。 :寫信號,低電平有效。當 有效時,CPU可以往8255A中寫入控制字或數據。 A1、A0:端口選擇信號。8255A內部有3個數據端口和1個控制端口,當A1A0=00時選中

19、端口A;A1A0=01時選中端口B;A1A0=10時選中端口C;A1A0=11時選中控制口。 A1、A0和 、 及 組合所實現(xiàn)的各種功能如表6-2所示。詳細表62 8255A端口選擇表 詳細 6.1.2 8255A的工作方式 8255A有3種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來指定。方式0是無條件,方式1,方式2是有條件 詳細1.方式0(根本輸入/輸出方式;屬于無條件數據傳輸) 這種工作方式不需要任何選通信號,A口、B口及C口的高4位和低4位都可以設定為輸入或輸出。輸入輸出任意組合寫控制字時來決定,適用于無條件數據傳送。 也可以對C口進行位操作,以C口某一位狀態(tài)實現(xiàn)查

20、詢方式數據傳送。 詳細 2.方式1(選通輸入/輸出方式) 方式1下,A口可由編程設定為輸入口或輸出口,C口的3位用來作為輸入/輸出操作的控制和同步信號; B口同樣可由編程設定為輸入口或輸出口,C口的另3位用來作為輸入/輸出操作的控制和同步信號。在方式1下,A口和B口的輸入數據或輸出數據都能被鎖存。 1)方式1下A口、B口均為輸入 在方式1下,A口和B口均工作在輸入狀態(tài)時,需利用C口的6條線作為控制和狀態(tài)信號線,其定義如圖64(a)所示。 圖64 方式1下的信號定義(a)A口、B口均為輸入時;(b)A口、B口均為輸出時詳細 C口所提供的用于輸入的聯(lián)絡信號有: (Strobe):選通脈沖信號(輸入

21、),低電平有效。當外設送來 信號時,輸入的數據被裝入8255A的輸入鎖存器中。 IBF(InputBufferFull):輸入緩沖器滿信號(輸出),高電平有效。此信號有效時,表示已有一個有效的外設數據鎖存于8255A的口鎖存器中,尚未被CPU取走,暫不能向接口輸入數據,它是一個狀態(tài)信號。詳細 INTR(InterruptRequest):中斷請求信號(輸出),高電平有效。當IBF為高、 信號由低變高(后沿)時,該信號有效,向CPU發(fā)出中斷請求。 方式1 數據輸入過程如下: 當外設的數據準備好后,發(fā)出 信號,輸入的數據被裝入鎖存器中,然后IBF信號有效(變?yōu)楦唠娖?。 INTR(Interrup

22、tRequest)有效,向CPU發(fā)出中斷請求,要求CPU取走數據。 詳細 2) 方式1下A口、B口均為輸出 與輸入時一樣,要利用C口的6根信號線,其定義如圖64(b)所示。用于輸出的聯(lián)絡信號有: (1) (Acknowledge):外設響應信號(輸入),低電平有效。當外設取走數據后,并處理完后,向單片機發(fā)回信號。 (2) (OutputBuffeFull):輸出緩沖器滿信號(輸出),低電平有效。 (3)INTR:中斷請求信號(輸出),高電平有效。 詳細 方式1下數據輸出過程如下: 當外設接收并處理完1組數據后,發(fā)回 響應信號。 應當指出,當8255A的A口與B口同時為方式1的輸入或輸出時,需使

23、用C口的6條線,C口剩下的2條線還可以用程序來指定數據的傳送方向是輸入還是輸出,而且也可以對它們實現(xiàn)置位或復位操作。當一個口工作在方式1時,那么C口剩下的5條線也可按照上述情況工作。 詳細 3. 方式2 8255A只有A口具有這種雙向輸入輸出工作方式, 在這種方式下,A口為8位雙向傳輸口,C口的PC7PC3的5位用來作為輸入/輸出的同步控制信號。 在這種情況下,B口和PC2PC0只能編程為方式0或方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口方式1之下的控制線。 詳細圖67 方式2下的信號定義詳細方式2下 1) 輸入操作 當外設向8255A送數據時,選通信號STBA也同時送到,

24、選通信號將數據鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號IBFA成為高電平(有效),告訴外設,A口已收到數據。選通信號結束時,使中斷請求信號為高,向CPU請求中斷。 2)輸出操作 ACK:外設響應信號輸入,當外設取走數據并處理完,向單片機發(fā)回響應信號。OBF:輸出緩沖器滿信號(輸出),低電平有效。狀態(tài)信息。輸出數據寫入8255鎖存器,信號有效INTR:中斷請求信號 6.1.3 8255A的控制字及初始化 1.8255A的控制字A1A2=1 1 8255A為可編程接口芯片,以控制字形式對其工作方式和C口各位的狀態(tài)進行設置。兩種控制字:工作方式控制字和C口置位/復位控制字。 1) 工作

25、方式控制字 工作方式控制字用于確定各口的工作方式及數據傳送方向,其格式如圖69所示。詳細 圖69 8255A控制字格式(a)工作方式控制字; (b)C口置位/復位控制字 對工作方式控制字作如下說明: (1) A口有3種工作方式,而B口只有2種工作方式。 (2)A組包括A口與C口的高4位,B組包括B口與C口的低4位。 (3)在方式1或方式2下,對C口的定義(輸入或輸出)不影響作為聯(lián)絡線使用的C口各位的功能。 (4)最高位(D7位)為標志位,D7=1為方式控制字。 詳細 2) C口置位/復位控制字 利用C口置位/復位控制字可以很方便地使C口8位中的任一位清0或置1,該控制字的格式如圖69(b)所示

26、。D7位為該控制字的標志位,D7=0為C口置位/復位控制字。 在使用中,該控制字每次只能對C口中的一位進行置位或復位。應注意的是,作為聯(lián)絡線使用的C口各位是不能采用置位/復位操作來使其置位或復位的。其數值應視現(xiàn)場的具體情況而定。詳細 2. 8255A的初始化編程 8255A初始化的內容就是向控制存放器寫入工作方式控制字或C口置位/復位控制字。 這兩個控制字可按同一地址A1A2=11寫入,且不受先后順序限制。 由于兩個控制字因標志位的狀態(tài)不同,因此8255A能加以區(qū)分。 例如對8255A各口作如下設置:A口方式0輸入,B口方式0輸出,C口高位局部為輸出、低位局部為輸入。設控制存放器的地址為03F

27、FH,那么其工作方式控制字可設置為: 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,03FFH MOV A,91H MOVX DPTR,A 假設要使端口C的D3位置位的控制字為00000111B(即07H),而使D3位復位的控制字為00000110B(即06H)。詳細例如對8255A各口作如下設置:A口方式0輸入,B口方式1輸出,PC2 PC0用于 PB方式1的控制;PC

28、4PC7為輸出;余下PC3為輸入。設8255A地址為5FFCH5FFFH其工作方式控制字可設置為: A 組 B 組 控 方 式 0 輸 輸 方 輸 輸制 入 出 式 出 入字 A口 C口 1 B口 C口位 因此工作方式控制字為10010101B即95H。 初始化程序段為: MOV DPTR,05FFH ;8255控制字地址 MOV A,95H MOVX DPTR,A ;方式字寫入初始化程序段為: MOV DPTR,05FFH ;8255控制字地址 MOV A,0BH MOVX DPTR,A ;方式字寫入例如:PC口用于置位/復位方式 ,PC5置位 6.1.4 8255A與系統(tǒng)的連接 由于825

29、5A是Intel公司專為其主機配套設計制造的標準化外圍接口芯片,因此它與MCS-51單片機的連接是比較簡單方便的。 一般來說,MCS-51單片機擴展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機系統(tǒng)片外RAM的實際容量一般均不太大,遠遠達不到64KB的范圍,因此I/O接口芯片大多采用局部譯碼的方法,而用得比較多的那么是直接利用地址線的線選法。這種方法雖然要浪費大量的地址號,但譯碼電路比較簡單。圖610就是一種較常用的連接實例。詳細圖610 8255A與8031的連接詳細 圖610中,P0口為地址/數據復用口。數據通過P0口直接傳送,地址的低8位是需通過鎖存器74LS373得到的,而地址的高8位

30、那么由P2口傳送。 現(xiàn)采用線選法,利用高8位地址線的P2.7作為線選信號,直接與8255A的片選端 相連,而A1、A0那么與地址的最末2位相連。由圖610所示接法,可得到8255A各個端口的地址,如表63所示。 詳細 表63 8255A各端口的地址 6.1.5 8255A應用舉例 8255A在微機和單片機控制系統(tǒng)中得到了廣泛應用,現(xiàn)舉兩例加以說明。 例1:要求通過8255A的PC5端向外輸出1個正脈沖信號,8255A的C口和控制口的地址分別為0002H和0003H。 解:假設要從PC5端輸出1個正脈沖信號,可通過對PC5位的置位和復位控制來實現(xiàn)。由于每送1個控制字,只能對1位作1次置位或復位操

31、作,故產生1個正脈沖要對PC5位先送置位控制字,經過一定的延時后(延時時間視脈寬而定),再送復位控制字即能實現(xiàn)。程序編制如下:詳細MOV DPTR,0003H ;指向8255A的控制口MOV A,OBH ;對PC5置1MOVX DPTR,ALCALL DELAY ;延時(調用延時子程序)DEC A ;對PC5置0MOVX DPTR,A詳細不講 例2:8255A作為連接打印機的接口。 圖611是通過8255A連接打印機的接口電路,數據傳送采用查詢方式。8255A的地址譯碼采用線選法,將P0.7直接與8255A的 端相連(通過地址鎖存器),其口地址A口為7CH,B口為7DH,C口為7EH,命令口為

32、7FH。詳細圖611 8255A連接打印機的接口電路詳細 現(xiàn)要求編制打印50個字符的程序,該數據存于片內RAM從20H開始的50個連續(xù)單元中。 程序如下: MOV R0,7FH ;指向8255A的命令口 MOV A,88H ;取方式字:A口輸出,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

33、R0,A ;數據輸出到A口 INC R1 ;數據指針加1 MOV R0,7FH ;指向命令口 MOV A,00H ;C口置位/復位命令字(PC0=0) MOVX R0,A ;產生STBTX-的下降沿 MOV A,01H ;改變C口置位/復位命令字(PC0=1) MOVX R0,A ;產生STBTX-的上升沿 DJNZ R2,LP ;未完,那么反復 詳細6.2 可編程RAM/IO/CTC接口8155 6.2.1 8155的結構與引腳 1. 8155的內部結構 8155的內部結構如圖612(b)所示。它含有1個256字節(jié)的RAM、1個14位定時/計數器以及3個并行I/O口,其中A口、B口均為8位,

34、C口為6位。A口、B口既可作為根本I/O口,也可作為選通I/O口;C口除可作為根本I/O口外,還可用作A口、B口的應答控制聯(lián)絡信號線。此外,8155內部還有一個控制存放器組,用來存放控制命令字。詳細圖612 8155引腳排列及結構框圖 (a)引腳排列; (b)內部結構框圖詳細圖612 8155引腳排列及結構框圖 (a)引腳排列; (b)內部結構框圖詳細 2. 8155的引腳 8155為40引腳雙列直插式封裝芯片,其引腳排列如圖612(a)所示?,F(xiàn)將其各引腳的功能簡介如下: AD0AD7:地址/數據復用線。 它與8031單片機的P0口直接相連。8155和CPU之間的地址、數據、命令及狀態(tài)信號都通

35、過這組信號線傳送。 :片選信號,輸入,低電平有效。 :RAM和I/O口選擇線。當 =1時,選中I/O口;當 =0時,選中RAM。 詳細 ALE:地址鎖存信號。 :讀選通信號,輸入,低電平有效。 :寫選通信號,輸入,低電平有效。 TIMERIN:定時器輸入。它是8155片內定時器的脈沖信號輸入端。 TIMEROUT:定時器輸出。通過它可以輸出矩形波或脈沖波。 PA0PA7:A口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PB0PB7:B口通用的輸入/輸出線。由編程來決定是輸入還是輸出。 PC0PC5:C口的輸入/輸出或控制信號線。 詳細 6.2.2 8155的RAM和I/O口的編址 與其它

36、接口芯片一樣,8155芯片中的RAM和I/O口均占用單片機系統(tǒng)片外RAM的地址,其中高8位地址由 和IO/ 信號決定。當 =0,且IO/ =0時,低8位的00HFFH為RAM的有效地址;當 =0,且 IO/ =1時,由低8位地址中的末3位(A2A1A0)來決定各個口的地址,如表64所示。詳細表64 8155端口地址表 詳細 對于多數單片機應用系統(tǒng)來說,由于片外RAM區(qū)的容量較大(最大為64KB),因此通常采用線選法對接口芯片進行編址。對8155來說,常用高8位地址中的兩位來選擇 和IO/ 。例如將P2.7接至 ,將P2.0接至IO/ ,那么8155的RAM和I/O口的編址為:詳細 RAM:P2

37、.7=0,P2.0=0,其地址范圍為: 01111110 00000000B01111110 11111111B, 即:7E00H7EFFH。 I/O口:P2.7=0,P2.0=1,口地址范圍為: 01111111 00000000B01111111 00000101B,即7F00H7F05H。詳細具體分配如下:命令口:7F00HA口:7F01HB口:7F02HC口:7F03H定時器低8位:7F04H定時器高8位:7F05H詳細 6.2.3 8155I/O口的工作方式 8155有3個I/O口,即A口、B口和C口,其中C口只有6位。A口和B口均可工作于根本I/O方式或選通I/O方式。C口既可作為

38、I/O口線,工作于根本I/O方式,也可作為A口、B口選通工作時的狀態(tài)聯(lián)絡控制信號線。 1.根本I/O 根本I/O為無條件傳送,這是最簡單的I/O操作,不需要任何聯(lián)絡信號,隨時可以進行。 2.選通I/O 選通I/O為條件傳送,傳送的方式可用查詢方式,也可用中斷方式。 詳細 (1)BF:I/O緩沖器滿空標志,輸出,高電平有效。 (2) :選通信號,輸入,低電平有效。 (3)INTR:中斷請求信號,輸出,高電平有效。 以上這些信號線對A口與B口均適用,分別稱之為ABF、A 、AINTR與BBF、 、BINTR。它們都是由C口提供的,如表65所示。 詳細 6.2.4 8155的命令/狀態(tài)字 8155有

39、1個命令/狀態(tài)存放器,實際上這是兩個不同的存放器,分別存放命令字和狀態(tài)字。由于對命令存放器只能進行寫操作,而對狀態(tài)存放器只能進行讀操作,因此把它們編為同一個地址,合在一起稱之為命令/狀態(tài)存放器。 1.命令字 命令字共8位,用于定義I/O端口及定時器的工作方式。對命令存放器只能寫入不能讀出(讀出的將是狀態(tài)存放器的內容)。 命令字的格式如圖613所示。 詳細圖613 8155的命令字格式詳細 對C口工作方式的說明: D3D2=00(ALT1):A口、B口為根本I/O,C口為輸入。 D3D2=01(ALT2):A口、B口為根本I/O,C口為輸出。 D3D2=10(ALT3):A口選通I/O,B口根本

40、I/O,C口低3位為聯(lián)絡信號,高3位輸出(參閱表65)。 D3D2=11(ALT4):A口、B口均為選通I/O,C口低3位作為A口聯(lián)絡信號,高3位作為B口聯(lián)絡信號(參閱表65)。詳細C口有4種方式:方式1:A,B根本輸入輸出方式,C 是輸入方式方式2: A,B根本輸入輸出方式,C是輸出方式方式3:作為A口控制輸入輸出方式方式4:作為A口和B 口控制輸入輸出方式表65 8155的PC口線聯(lián)絡信號定義 詳細2.狀態(tài)字 8155的狀態(tài)存放器與命令存放器共用1個地址,當使用讀操作時,讀入的便是狀態(tài)存放器中的內容。其格式如圖614所示。 詳細圖614 8155的狀態(tài)字格式詳細 6.2.5 8155的定時

41、/計數器 8155的定時/計數器是1個14位的減法計數器,由兩個8位存放器構成,其格式如下:D7D0詳細AD2AD1AD0=101 高8位M2 M1 輸出方式AD2AD1AD0=100 低8位定時器的工作狀態(tài)由命令字D7D6TM2,TM1確定當TM2、TM1=00時,不影響計數器工作原來怎末工作還怎末工作當TM2、TM1=01時,停止計數,如計數器未啟動,那么無操作;如正在運行,那么停止計數。當TM2、TM1=10時,到達計數值計數器減為0停止當TM2、TM1=11時,啟動計數,如計數器未運行,那么在裝入計數值后計數;如計數器已運行,那么在當前計數值計滿后,再以新的計數值進行計數??梢钥闯?,只

42、有TM2、TM1=11,才能真正定時。詳細 8155的定時/計數器與MCS-51單片機芯片內部的定時/計數器在功能上是相同的,都有定時和計數兩種功能。但是在使用上卻有很多不同之處。具體表現(xiàn)在: (1)8155的定時/計數器為減法計數,而MCS-51單片機內部的定時/計數器卻是加法計數。有關初值問題 (2)MCS-51單片機內部的定時/計數器有多種工作方式,而8155的定時/計數器卻只有一種固定的工作方式,即14位計數,通過軟件方法進行計數值的加載。就是計數到產生中斷,在中斷效勞程序中處理相關的問題。 詳細 (3)MCS-51單片機內部的定時/計數器有兩種計數脈沖:當定時工作時,由芯片內部按機器

43、周期提供固定頻率的計數脈沖;當計數工作時,從芯片外部引入計數脈沖。而8155的定時/計數器,不管是定時還是計數,都需要外部提供計數脈沖,如果定時,應該對外部的信號周期應該清楚。 (4)MCS-51單片機內部的定時/計數器,在計數溢出時自動置位TCON存放器中的計數溢出標志位TF,供用戶以查詢或中斷方式使用; 8155的定時/計數器,在計數溢出時卻是通過TIMEROUT引腳向外部發(fā)出1個脈沖信號。 TIMEROUT信號有多種形式,由M2M1定義詳細定時/計數器有 2個存放器,其中低14位組成計數器,剩下的兩個高位(M2M1)用于定義計數器輸出的信號形式,如圖615所示。脈沖和方波的區(qū)別:方波是上

44、下電平時間近相等,脈沖就是上下電平時間短。詳細圖615 定時/計數器輸出方式 詳細 8155的定時器在計數過程中,計數器的值并不直接表示外部輸入的脈沖。假設作為外部事件計數,那么由計數器的現(xiàn)行計數值求輸入脈沖數的方法為: (1) 停止計數器計數。 (2) 分別讀出計數器的兩個字節(jié)內容。 (3) 取其低14位數作為現(xiàn)行計數值。 (4) 算出現(xiàn)行計數值與初始計數值之差即可。 詳細 6.2.6 8155和MCS-51單片機的接口電路 8155可以和MCS-51單片機直接相連,而不需外加邏輯電路。圖616所示為8155和MSC-51相連的一種根本連接方法。 按圖616所示接法,8155的RAM和各端口

45、地址如下: RAM的地址:0000H00FFH 命令口:0200H A口:0201H B口:0202H C口:0203H 定時器低位:0204H 定時器高位:0205H詳細圖616 8155與MCS-51的連接方法 詳細 6.2.7 8155的初始化編程及應用舉例 8155初始化編程的主要內容為寫入8155的命令字和定時/計數器的初值以及輸出方式?,F(xiàn)舉例說明如下。 例1:采用如圖616所示的接口電路,設A口與C口為輸入口,B口為輸出口,均為根本I/O。定時器為連續(xù)方波工作方式,對輸入脈沖進行24分頻。試編寫8155的初始化程序。 詳細解:命令字可選取為PA=0:A口輸入PB=1:B口輸出PC2

46、、PC1=00:A口、B口根本I/O,C口輸入IEA=0,IEB=0:A口、B口均禁止中斷TM2、TM1=11:立即啟動計數器所以命令字為11000010B=C2H。詳細 計數初值的選取方法為:由于計數值為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,40

47、H ;取定時器高8位的值MOVX DPTR,A ;寫入定時器高8位MOV DPTR,0200H ;指向命令口MOV A,C2H ;取8155的命令字MOVX DPTR,A ;寫入命令字詳細 例2:仍采用圖616所示的接口電路,從8155的A口輸入數據并進行判斷:假設不為0,那么將該數據存入8155的RAM中(從起始單元開始存放,數據的總數不超過256個),同時從B口輸出,并將PC0置“1;假設為0,那么停止輸入輸出,同時將PC0清“0。試編寫能完成上述任務的初始化及應用程序。 解:初始化及應用程序如下: MOV DPTR,0200H ;指向命令口 MOV A,00000110B ;取命令字 M

48、OVX DPTR,A ;寫入命令字詳細 MOV R0,00H ;指向8155的RAM區(qū)首址 MOV R1,00H ;數據總數為256個LOOP1:MOV DPTR,0201H ;指向A口 MOVX A,DPTR ;從A口輸入數據 JZ LOOP3 ;為0那么轉 MOVX 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 ;R1里00減1為FF

49、,未完那么 反復 LOOP2:SJMP $ ;暫停LOOP3:MOV DPTR,0203H ;指向C口 MOVX DPTR,A ;回送 SJMP LOOP2詳細6.5 鍵盤接口 鍵盤實際上是由排列成矩陣形式的一系列按鍵開關組成的,它是單片機系統(tǒng)中最常用的人機聯(lián)系的一種輸入設備。用戶通過鍵盤可以向CPU輸入數據、地址和命令。 鍵盤按其結構形式可分為編碼式鍵盤和非編碼式鍵盤兩大類。 編碼式鍵盤是由其內部硬件邏輯電路自動產生被按鍵的編碼。這種鍵盤使用方便,但價格較貴。詳細 單片機系統(tǒng)中普遍使用非編碼式鍵盤。這類鍵盤應主要解決以下幾個問題: (1)鍵的識別; (2)如何消除鍵的抖動; (3)鍵的保護。

50、 在以上幾個問題中,最主要的是鍵的識別。詳細 6.5.1 非編碼式鍵盤的結構與工作原理 1.非編碼式鍵盤的結構 非編碼式鍵盤一般采用行列式結構并按矩陣形式排列,如圖623所示。 圖623示出44行列式鍵盤的根本結構示意圖。44表示有4根行線和4根列線,在每根行線和列線的交叉點上均分布1個單觸點按鍵,共有16個按鍵。 詳細 2.非編碼式鍵盤的工作原理 非編碼式鍵盤識別閉合鍵通常有兩種方法:一種稱為行掃描法,另一種稱為線反轉法不講。 行掃描法 所謂行掃描法,就是通過行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,那么列線所連接的輸出端口得到的是全“1信號;如果有鍵按下的話,那么得到的是非全“

51、1信號。詳細圖623 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行詳細圖623 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行詳細圖623 非編碼式鍵盤行掃描法的工作原理(a)無鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行詳細 按鍵識別具體過程如下:1 測試有無按鍵首先,為了提高效率,一般先快速檢查整個鍵盤中是否有鍵按下;然后,再確定按下的是哪一個鍵。 其次,再用逐行掃描的

52、方法來確定閉合鍵的具體位置。方法是:先掃描第0行,即輸出1110(第0行為“0,其余3行為“1),然后讀入列信號,判斷是否為全“1。 詳細2 如何消除鍵的抖動去抖動 由于按鍵為機械開關結構,因此機械觸點的彈性及電壓突跳等原因,往往在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動。通過軟件方法,采用延遲躲過抖動,待信號穩(wěn)定后再進行鍵掃描,延遲時間10 到20 ms。如圖624所示。詳細圖624 鍵閉合和斷開時的電壓抖動詳細 3確定按鍵物理位置,計算鍵碼 鍵碼=行首鍵號+ 列號4行,8列鍵盤列號 0, 1 7 00H,01H 07H 08H, 09H 0FH 10H,11H 17H 18H,19H 1FH09

53、鍵碼等于行首鍵號08H+列號14 等待鍵釋放通過時間延遲實現(xiàn)詳細 6.5.2 鍵盤接口電路 對于8031型單片機來說,如果P1口不作其它用途的話,那么可與44的鍵盤相連接,如圖625所示,其中P1.0P1.3作為輸出口,P1.4P1.7作為輸入口。 對于8751或8051型單片機來說,如果不再外擴程序存儲器的話,那么可以利用P0P2口中的任意兩個口構成多達88的鍵盤,其中1個作為輸出口,1個作為輸入口,既可以采用行掃描法,也可以采用線反轉法。 詳細圖625 8031與44鍵盤的接口電路(行掃描法)詳細 如果單片機本身的口線已被占用的話,那么可以通過外擴I/O接口芯片來構成鍵盤接口電路,較常用的

54、是8155、8255A等接口芯片。圖626是采用8155接口芯片構成84鍵盤的接口電路,其中A口為輸出,作為行線;C口為輸入,作為列線(只用了PC0PC3四根口線)。詳細圖626 采用8155的鍵盤接口電路詳細上圖, 有32個鍵,A 口輸出檢測信號,由C口 輸入信號判斷有無鍵碼按下。定下A 口, C口 地址,看圖A 口地址:0101HC口地址: 0103H 6.5.3 鍵盤掃描程序 現(xiàn)以圖626所示接口電路為例,說明鍵盤掃描程序的編制方法。 1.采用行掃描法 采用行掃描法識別閉合鍵的程序流程圖見圖627。注意:本圖的鍵碼 與 例題的鍵碼 不同。詳細圖627 鍵分析程序流程圖11111110B

55、R2列號 R400R2循環(huán)左移一位列號R4+1 R4PA口輸出掃描值讀C口 AACC.0=0?ACC.1=0?ACC.2=0?ACC.3=0?R2=0111,1111YNYAYN計算鍵碼確認送回返回LK4有鍵盤掃描程序,去抖動LK2LK4KY1LKP詳細 首先調用全掃描子程序,檢查有無閉合鍵。假設無鍵閉合,那么對數碼顯示器掃描顯示1遍;假設有鍵閉合,那么先消抖。這里采用調用兩次數碼顯示器掃描循環(huán)顯示子程序的方法,每次6ms共12ms。然后再次檢查有無鍵閉合,假設無鍵閉合,那么返回主程序;假設有鍵閉合,那么進行逐行掃描,以判別閉合鍵的具體位置。 本例介紹的是另1種方法,采用的計算公式為 鍵值行號

56、4列號 (61) 對于84的鍵盤來說,其具體鍵值由式(61)可計算出,見表67。詳細表67 84鍵盤鍵值計算法 詳細 計算出閉合鍵的鍵值后,再判斷鍵釋放否?假設鍵未釋放,那么等待;假設鍵已釋放,那么再延時消抖,然后判斷是命令鍵還是數字鍵。假設是命令鍵,那么轉入命令鍵處理程序,完成命令鍵的功能;假設是數字鍵,那么轉入數字鍵處理程序,進行數字的存儲和顯示等。詳細鍵盤掃描程序:KEY1: LCALL KS1 ;檢查有閉合鍵否? JNZ LK1 ;A非0,有鍵閉合那么轉 LJMP LK8 ; 無鍵閉合轉返回(結束本子程序LK1: LCALL DIR ;有鍵閉合,那么延時12ms LCALL DIR ;

57、消抖 LCALL KS1 ;再次檢查有鍵閉合否? JNZ LK2 ;有鍵閉合那么轉 LJMP LK8 ;無鍵閉合轉返回LK2: MOV R3,00H ;行號初值送R3 詳細 MOV R2,FEH ;行掃描初值送R2LK3: MOV DPTR,0101H ;指向8155口A MOV A,R2 ;行掃描值送A MOVX DPTR,A ;掃描1行 INC DPTR INC DPTR ;指向8155口C MOVX A,DPTR ;讀入列值 ANL A,0FH ;保存低4位 MOV R4,A ;暫存列值 CJNE A,0FH,LK4 ;列值非全“1那么轉 MOV A,R2 ;行掃描值送A詳細 JNB A

58、.7,LK8 ;已掃到最后1行那么轉 RL A ;未掃完,那么移至下1行 MOV R2,A ;行掃描值存入R2中 INC R3 ;行號加1 SJMP LK3 ;轉至掃描下1行LK4: MOV A,R3 ;行號送入A ADD A,R3 ;行號2 MOV R5,A ;暫存 ADD A,R5 ;行號4 MOV R5,A ;存入R5中 MOV A,R4 ;列值送入A詳細LK5: RRC A ;右移1位 JNC LK6 ;該位為0那么轉 INC R5 ;鍵碼號加1 SJMP LK5 ;列號未判完繼續(xù)LK6: PUSH R5 ;保護鍵值LK7: LCALL DIR ;掃描1遍顯示器 LCALL KS1 ;

59、發(fā)全掃描信號 JNZ LK7 ;鍵未釋放那么等待 LCALL DIR ;鍵已釋放 LCALL DIR ;延時12ms,消抖 POP A ;鍵值存入A中詳細KND: RET ;返主LK8: MOV A,FFH ;無閉合鍵標志FFH存入A中 RET ;返主KS1: MOV DPTR,0101H ;有無閉合鍵判斷子程序 MOV A,00H ;取全掃描信號 MOVX DPTR,A ;發(fā)全掃描信號 INC DPTR INC DPTR ;指向8155口C MOVX A,DPTR ;讀入列值 ANL A,0FH ;保存低4位詳細 ORL A,F0H ;高4位取“1 CPL A ;取反,無鍵按下那么全0 RE

60、T ;返主 DIR數碼顯示器掃描顯示子程序可參閱LED數碼顯示器接口一節(jié)。 詳細 6.3.1 8279的組成及引腳 8279芯片有40條引腳,由單一+5V電源供電。它主要由以下幾局部組成: (1) I/O控制和數據緩沖器; (2) 控制和定時存放器及定時控制局部; (3) 掃描計數器; (4)回送緩沖器與鍵盤去抖動控制電路; (5)FIFO(先進先出)存放器和狀態(tài)電路; (6)顯示器地址存放器及顯示RAM。 不講 6.3 鍵盤顯示器接口8279 8279的引腳如圖617所示,下面對引腳名稱作簡要說明。 DB0DB7:雙向數據總線。 A0:命令狀態(tài)或數據選擇線。A0=1,表示從DB0DB7線上傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論