版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
80C51單片微機(jī)的系統(tǒng)擴(kuò)展原理及介面技術(shù)8.1系統(tǒng)擴(kuò)展原理
系統(tǒng)擴(kuò)展是指單片微機(jī)內(nèi)部各功能部件不能滿足應(yīng)用系統(tǒng)要求時,在片外連接相應(yīng)的週邊晶片以滿足應(yīng)用系統(tǒng)要求。80C51有很強(qiáng)的外部擴(kuò)展能力,擴(kuò)展電路及擴(kuò)展方法較典型、規(guī)範(fàn)。80C51主要有程式記憶體(ROM)的擴(kuò)展、數(shù)據(jù)記憶體(RAM)的擴(kuò)展、I/O口的擴(kuò)展、中斷系統(tǒng)擴(kuò)展以及其他特殊功能介面的擴(kuò)展等。 對於單片微機(jī)系統(tǒng)擴(kuò)展的方法有並行擴(kuò)展法和串行擴(kuò)展法兩種。並行擴(kuò)展法是指利用單片微機(jī)本身具備的三組匯流排(AB、DB、CB)進(jìn)行的系統(tǒng)擴(kuò)展。近幾年,由於積體電路設(shè)計、工藝和結(jié)構(gòu)的發(fā)展,串行擴(kuò)展法得到了很快發(fā)展,它利用SPI三線匯流排和I2C雙線匯流排進(jìn)行串行系統(tǒng)擴(kuò)展。有的單片微機(jī)應(yīng)用系統(tǒng)可能同時採用並行擴(kuò)展法和串行擴(kuò)展法。
單片微機(jī)是通過晶片的引腳進(jìn)行系統(tǒng)擴(kuò)展的。
80C51系列帶匯流排的晶片引腳可以構(gòu)成圖8-1所示的三匯流排結(jié)構(gòu).即地址匯流排(AB)數(shù)據(jù)匯流排(DB)和控制匯流排(CB)。具有匯流排的外部晶片都通過這三組匯流排進(jìn)行擴(kuò)展。 (1)地址匯流排(AB) 由單片微機(jī)P0口提供低8位地址A0~A7,P2口提供高8位地址A8~A15。P0口是地址匯流排低8位和8位數(shù)據(jù)匯流排複用口,只能分時用作地址線。故P0口輸出的低8位地址A0~A7必須用鎖存器鎖存。 鎖存器的鎖存控制信號為單片微機(jī)ALE引腳輸出的控制信號。在ALE的下降沿將P0口輸出的地址A0~A7鎖存。P0、P2口在系統(tǒng)擴(kuò)展中用做地址線後便不能作為一般I/O口使用。 由於地址匯流排寬度為16位,故可尋址範(fàn)圍為64KB。
8.1.1外部並行擴(kuò)展原理(2)數(shù)據(jù)匯流排(DB) 由P0口提供,用D0~D7表示。P0口為三態(tài)雙向口,是應(yīng)用系統(tǒng)中使用最為頻繁的通道。所有單片微機(jī)與外部交換的數(shù)據(jù)、指令、資訊,除少數(shù)可直接通過P1口外,全部通過P0口傳送。 數(shù)據(jù)匯流排是並連到多個連接的週邊晶片的數(shù)據(jù)線上,而在同一時間裏只能夠有一個是有效的數(shù)據(jù)傳送通道。哪個晶片的數(shù)據(jù)通道有效,則由地址線控制各個晶片的片選線來選擇。
(3)控制匯流排(CB)包括片外系統(tǒng)擴(kuò)展用控制線和片外信號對單片微機(jī)的控制線。
系統(tǒng)擴(kuò)展用控制線有ALE、
·ALE:輸出P0口上地址與數(shù)據(jù)隔離信號,用於鎖存P0口輸出的低8位地址的控制線。通常,ALE信號的下降沿控制鎖存器來鎖存地址數(shù)據(jù),通常選擇下降沿選通的鎖存器做低8位地址鎖存器。
·:輸出,用於讀片外程式記憶體(EPROM)中的數(shù)據(jù)?!白x”取EPROM中數(shù)據(jù)(指令)時,不能用“”信號,而只用 信號。 :輸入,用於選擇片內(nèi)或片外程式記憶體。當(dāng)=0時,只訪問外部程式記憶體。當(dāng)=1時,先訪問內(nèi)部程式記憶體,內(nèi)部程式記憶體全部訪問完之後,再訪問外部程式記憶體。
、:輸出,用於片外數(shù)據(jù)記憶體(RAM)的讀、寫控制。當(dāng)執(zhí)行片外數(shù)據(jù)記憶體操作指令MOVX時,自動生成、控制信號。 常用地址鎖存器管腳見圖8–2。
8D透明鎖存器74LS373的鎖存允許信號G是電平鎖存。當(dāng)G從高電平轉(zhuǎn)為低電平時,將其輸入端的數(shù)據(jù)鎖存在輸出端。當(dāng)ALE為高電平時,8D鎖存器74LS373的輸入和輸出是透明的。當(dāng)ALE出現(xiàn)下降沿後,8D鎖存器74LS373的輸出即為A0~A7,這時P0口上出現(xiàn)的是數(shù)據(jù),實(shí)現(xiàn)了地址低8位和數(shù)據(jù)線的分離。 在單片微機(jī)應(yīng)用系統(tǒng)中,為了唯一地選擇片外某一存儲單元或I/O端口,需要進(jìn)行二次選擇。一是必須先找到該存儲單元或I/O端口所在的晶片,一般稱為“片選”,二是通過對晶片本身所具有的地址線進(jìn)行解碼,然後確定唯一的存儲單元或I/O端口,稱為“字選”。
“片選”保證每次讀或?qū)憰r,只選中某一片記憶體晶片或I/O介面晶片。常用的方法有四種:“線選法”、“地址解碼法”、應(yīng)用“可編程器件PAL/GAL”或“I/O口線”。
(1)線選法:。線選法常一般是利用單片微機(jī)的最高幾位空餘的地址線中一根(如P2.7)作為某一片記憶體晶片或I/O介面晶片的“片選”控制線。用於應(yīng)用系統(tǒng)中擴(kuò)展晶片較少的場合。
(2)
解碼法:用解碼器對空餘的高位地址線進(jìn)行解碼,而解碼器的輸出作為“片選”控制線。常用的解碼器有3/8解碼器74LS138、雙2/4解碼器74LS139、4/16解碼器74LS154等。
3/8解碼器74LS138的管腳見圖8–3。
·G1、、:使能端。當(dāng)G1=1,
==0時,晶片使能。
·C、B、A:解碼器輸入,高電平有效。
·:解碼器輸出,低電平有效。正常情況下,只有一根輸出是低電平,其餘輸出都是高電平。這樣,當(dāng)解碼器輸出作為單片微機(jī)應(yīng)用系統(tǒng)中外擴(kuò)晶片的片選控制線時,保證每次讀或?qū)憰r只選中一個晶片。 部分地址線參加解碼時,稱為部分地址解碼,這時晶片的地址會有重疊。16根地址線全部參加解碼的,稱為全地址解碼。圖8–4示意的是通過3/8解碼器74LS138獲得64K地址。圖8–4中3/8解碼器74LS138已經(jīng)使能,其輸出由C、B、A的狀態(tài)決定,作為各個擴(kuò)展晶片的片選控制信號,加上晶片本身所具有的地址線共同決定每一個存儲單元或I/O端口的地址,全地址解碼的地址是唯一的。#0RAM地址分配為0000H~1FFFH,共8K。(A15=A14=A13=0)#1晶片地址分配為2000H~3FFFH,共8K。(A15=0,A14=0, A13=1)#2
晶片地址分配為4000H~5FFFH,共8K。(A15=0,A14=1, A13=0)#3
晶片地址分配為6000H~7FFFH,共8K。(A15=0,A14=1, A13=1)#4
晶片地址分配為8000H~9FFFH,共8K。(A15=1,A14=0, A13=0)#5
晶片地址分配為A000H~BFFFH,共8K。(A15=1,A14=0, A13=1)#6晶片地址分配為C000H~DFFFH,共8K。(A15=1,A14=1, A13=0)#7I/O地址分配為E000H~FFFFH,共8K。(A15=1,A14=1, A13=1)
2.80C51系列單片微機(jī)的系統(tǒng)並行擴(kuò)展能力
由於地址匯流排寬度為16位,在片外可擴(kuò)展的記憶體最大容量為64KB,地址為0000H~FFFFH。片外數(shù)據(jù)記憶體與程式記憶體的操作使用不同的指令和控制信號,允許兩者的地址重複,故片外可擴(kuò)展的數(shù)據(jù)記憶體與程式記憶體分別為64KB。
片外數(shù)據(jù)記憶體與片內(nèi)數(shù)據(jù)記憶體的操作指令不同(片外RAM只能用MOVX指令)。允許兩者地址重複,亦即外部擴(kuò)展數(shù)據(jù)記憶體地址可從0000H開始。
I/O口擴(kuò)展與片外數(shù)據(jù)記憶體統(tǒng)一編址,不再另外提供地址線。
80C51的外部串行匯流排主要包括:SPI(SerialPeriPheralInterface)匯流排和I2C匯流排兩種。⒈SPI三線匯流排結(jié)構(gòu)
SPI三線匯流排結(jié)構(gòu)是一個同步週邊介面,允許MCU與各種週邊設(shè)備以串行方式進(jìn)行通信。一個完整的SPI系統(tǒng)有如下的特性:
.全雙工、三線同步傳送;
.主、從機(jī)工作方式;
.可程式控制的主機(jī)位傳送頻率、時鐘極性和相位;
.發(fā)送完成中斷標(biāo)誌;
.寫衝突保護(hù)標(biāo)誌。在大多數(shù)場合,使用一個MCU作為主機(jī),控制數(shù)據(jù)向一個或多個從機(jī)(週邊器件)的傳送。
8.1.2外部串行擴(kuò)展原理一般SPI系統(tǒng)使用四個I/O引腳:
①串行數(shù)據(jù)線(MISO、MOSI)
主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線(MISO)和主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線(MOSI),用於串行數(shù)據(jù)的發(fā)送和接收。數(shù)據(jù)發(fā)送時.先傳送MSB(高位),後傳送LSB(低位)。 在SPI設(shè)置為主機(jī)方式時,MISO線是主機(jī)數(shù)據(jù)輸入線,MOSI是主機(jī)數(shù)據(jù)輸出線;在SPI設(shè)置為從機(jī)方式時,MISO線是從機(jī)數(shù)據(jù)輸出線,MOSI是從機(jī)數(shù)據(jù)輸入線。 ②串行時鐘線(SCLK)
串行時鐘線(SCLK)用於同步從MISO和MOSI引腳輸入和輸出數(shù)據(jù)的傳送。在SPI設(shè)置為主機(jī)方式時SCLK為輸出;在SPI設(shè)置為從機(jī)方式時,SCLK為輸入。 在SPI設(shè)置為主機(jī)方式時,主機(jī)啟動一次傳送時,自動在SCLK腳產(chǎn)生8個時鐘週期。主機(jī)和從機(jī)SPI器件中.在SCLK信號的一個跳變時進(jìn)行數(shù)據(jù)移位,數(shù)據(jù)穩(wěn)定後的另一個跳變時進(jìn)行採樣。 對於一個完整的SPI系統(tǒng),串行數(shù)據(jù)和串行時鐘之間有四種極性和相位關(guān)係,如圖8-5所示,以適應(yīng)不同的週邊器件特性。主機(jī)和從機(jī)器件之間的傳送定時關(guān)係必須相同。
③從機(jī)選擇() 在從機(jī)方式時,腳是輸入端,用於使能SPI從機(jī)進(jìn)行數(shù)據(jù)傳送;在主機(jī)方式時,一般由外部置為高電平。 通過SPI可以擴(kuò)展各種I/O功能,包括:A/D、D/A、即時時鐘、RAM、EEPROM及並行輸入/輸出介面等。在把SPI與一片或幾片串行擴(kuò)展晶片相連時,只需把SPI的SCLK、MOSI及MISO三根線同名端相連即可。對於有些I/O擴(kuò)展晶片,它們有端。這時,這些片選輸入端一般有同步串行通信的功能。無效時,為複位晶片的串行介面;有效時,初始化串行傳送。有些晶片的端,將其上從低到高的跳變當(dāng)做把移位數(shù)據(jù)打入並行寄存器或操作啟動的脈衝信號。因此,對於這些晶片,應(yīng)該用一根I/O口線來控制它們的片選端。 若80C51的串行通信口已經(jīng)被佔(zhàn)用,則可以用通用I/O口來模擬SPI串行介面,用軟體來模擬仿真SPI操作⒉I2C(IntelICBUS)公用雙匯流排結(jié)構(gòu)
使用兩根信號線(SDA和SCL)串行的方法進(jìn)行資訊傳送,並允許若干相容器件共用的雙線匯流排,稱為12C匯流排。12C匯流排系統(tǒng)的示意圖見圖8-6。
·SDA:稱為串行數(shù)據(jù)線,用於傳輸雙向的數(shù)據(jù)。
·SCL:稱為串行時鐘線,用於傳輸時鐘信號,在傳輸時用來同步串行數(shù)據(jù)線上的數(shù)據(jù)。
I2C匯流排上的器件SDA和SCL引腳都是開漏結(jié)構(gòu),都需通過電阻與電源連接。在I2C匯流排系統(tǒng)中的所有器件的SDA引腳、SCL引腳也都同名端連接在一起。 掛接在I2C匯流排上的器件(或IC),根據(jù)其功能可分為兩種:主控器件和從控器件。 主控器件:控制匯流排存取,產(chǎn)生串行時鐘(SCL)信號,並產(chǎn)生啟動傳送及結(jié)束傳送的器件,匯流排必須由一個主控器件控制。主控器件一般稱主器件。 從控器件:在匯流排上被主控器件尋址的器件,它們根據(jù)主控器件的命令來接收和發(fā)送數(shù)據(jù)。從控器件一般稱從器件。 在由若干器件所組成的I2C匯流排系統(tǒng)中,可能存在多個主器件。因此,I2C匯流排系統(tǒng)是一允許多主的系統(tǒng)。對於系統(tǒng)中的某一器件來說,有四種可能的工作方式:主發(fā)送方式、主接收式、從發(fā)送方式和從接收方式。
據(jù)此定義以下匯流排條件:
①匯流排不忙 串行時鐘線(SCL)和串行數(shù)據(jù)線(SDA)保持高電平。
②開始數(shù)據(jù)傳送 在串行時鐘線(SCL)保持高電平的情況下,串行數(shù)據(jù)線(SDA)上發(fā)生一個由高電平到低電平的變化作為起始信號(START),啟動I2C匯流排。I2C匯流排所有命令必須在起始信號以後進(jìn)行。
③停止數(shù)據(jù)傳送 在串行時鐘線(SCL)保持高電平的情況下,串行數(shù)據(jù)線(SDA)上發(fā)生一個由低電平到高電平的變化,稱為停止信號(STOP)。這時將停止I2C匯流排上的數(shù)據(jù)傳送。
④數(shù)據(jù)有效性 在開始信號以後,串行時鐘線(SCL)保持高電平的週期期間,當(dāng)串行數(shù)據(jù)線(SDA)穩(wěn)定時.串行數(shù)據(jù)線的狀態(tài)表示數(shù)據(jù)線是有效的。需要一個時鐘脈衝。 每次數(shù)據(jù)傳送在起始信號(START)下啟動,在停止信號(STOP)下結(jié)束。 在I2C匯流排上數(shù)據(jù)傳送方式有兩種,主發(fā)送到從接收和從發(fā)送到主接收。它們由起始信號(START)後的第一個位元組的最低位(即方向位R/W)決定。
I2C匯流排主要功能有:
·在主控器件和從控器件之間雙向傳送數(shù)據(jù);
·無中央主控器件的多主匯流排;
·多主傳送時,不發(fā)生錯誤;
·可以使用不同的位速率;
·串行時鐘作為交接信號; 在有I2C匯流排的單片微機(jī)(如飛利浦80C552)中,可以直接用I2C匯流排來進(jìn)行系統(tǒng)的串行擴(kuò)展;對於80C51系列單片微機(jī),大多數(shù)沒有I2C匯流排介面功能,而是採用軟體模擬雙向數(shù)據(jù)傳送協(xié)議的方法,來實(shí)現(xiàn)系統(tǒng)的串行擴(kuò)展。 在單片微機(jī)應(yīng)用系統(tǒng)中,單主結(jié)構(gòu)占絕大多數(shù)。在單主系統(tǒng)中,I2C匯流排的數(shù)據(jù)傳送狀態(tài)要簡單得多,不存在匯流排竟?fàn)幣c同步問題,只有作為主器件的單片微機(jī)對I2C匯流排器件的讀/寫操作,這就簡化了模擬軟體的設(shè)計工作。實(shí)際上,已有I2C匯流排的軟體包可調(diào)用。
SPI和I2C匯流排使用時各有所長。 二線產(chǎn)品用於要求I2C匯流排、抗雜訊性能、微控制器的I/O口線受限制的場合,或要求一條指令將多個位元組存入寫緩衝器的場合。 三線匯流排SPI規(guī)程適用於高時鐘頻率要求,或×I6位數(shù)據(jù)寬度的應(yīng)用場合。 二種串行通信匯流排都採用單電源(2~5.5V)供電,都具有低電流、低功耗、價格低廉等特點(diǎn)。二種串行通信匯流排的性能差異見表8-1。8.2程式記憶體的擴(kuò)展1.程式記憶體擴(kuò)展時的匯流排功能和操作時序
為片外程式記憶體讀選擇信號。正常運(yùn)行時,該引腳不能浮空。 根據(jù)連接電平的不同,單片微機(jī)有兩種取指過程:⑴
當(dāng)=l時,80C51單片微機(jī)所有片內(nèi)程式記憶體有效。 當(dāng)程式計數(shù)器PC運(yùn)行於片內(nèi)程式記憶體的尋址範(fàn)圍內(nèi)(對80C51/87C51/89C51為0000H~0FFFH,共4KB;對80C52/87C52/89C52為0000H~1FFFH,共8KB)時,P0口、P2口及 線沒有信號輸出;當(dāng)程式計數(shù)器PC的值超出上述範(fàn)圍後,P0口、P2口及PSEN線才有信號輸出。
80C51訪問片外程式記憶體時,使用如下的信號:
·P0口:分時輸出程式記憶體的低8位地址和8位數(shù)據(jù)。
·ALE:輸出,在ALE的下降沿時,P0口上出現(xiàn)穩(wěn)定的程式記憶體的低8位地址,用ALE信號鎖存這低8位地址。 ·P2口:在整個取指週期中,輸出穩(wěn)定的程式記憶體的高8位地址。
· 線:輸出,低電平有效。在ALE的下降沿之後, 由高變?yōu)榈?,此時片外程式記憶體的內(nèi)容(指令字)送到P0口,而後在 的上升沿將指令字送入指令寄存器。因而,信號作為片外程式記憶體的“讀”選通信號。 (2)當(dāng)=0時,80C51單片微機(jī)所有片內(nèi)程式記憶體無效,只能訪問片外程式記憶體。伴隨著單片微機(jī)複位,P0口、P2口及 線均有信號輸出。單片微機(jī)片外程式記憶體取指操作的時序如圖8-7所示。 2.?dāng)U展片外程式記憶體的硬體電路
80C51的片內(nèi)程式記憶體容量越來越大,如89C58/87C58的片內(nèi)程式記憶體的容量高達(dá)32K×8位,甚至為64K×8位。而且價格也大大降低。因此,程式記憶體的擴(kuò)展已不是必須的了。這裏,僅作為一種技術(shù)來加以介紹。通常只需要擴(kuò)展一片或兩片EPROM晶片就足夠。常用EPROM晶片的管腳見圖8–8。例:擴(kuò)展16K×
8位片外程式記憶體 如圖8–9所示。在電路中是接高電平的。27128A是16K容量的EPROM,所以用到了14根地址線A0~A13。系統(tǒng)中只擴(kuò)展了一片程式記憶體,所以27128A的片選端可直接接地,一直有效。8.3數(shù)據(jù)記憶體的擴(kuò)展
常用的數(shù)據(jù)記憶體有動態(tài)RAM和靜態(tài)RAM,有並行RAM和串行RAM。⒈片外數(shù)據(jù)記憶體擴(kuò)展時的匯流排功能和讀、寫操作時序
80C51單片微機(jī),對片外數(shù)據(jù)記憶體讀、寫操作的指令有以下四條:
MOVXA,@Ri
;片外RAM→(A),讀()操作
MOVX@Ri,A;(A)→片外RAM,寫()操作這組指令由於@Ri只能提供8位地址,因此,僅能擴(kuò)展256個位元組的片外RAM。
MOVXA,@DPTR;片外RAM→(A),讀操作
MOVX@DPTR,A;(A)→片外RAM,寫操作這組指令由於@DPTR能提供16位地址,因此,可以擴(kuò)展64KB的片外RAM。
“MOVXA,@DPTR”和“MOVX@DPTR,A”的操作時序示於圖8-10。 從圖中可以看出,執(zhí)行該組指令時,機(jī)器週期1為取指週期,在取指週期的S5狀態(tài),當(dāng)ALE為下降沿時,在P0匯流排上出現(xiàn)的是數(shù)據(jù)記憶體的低8位地址,即DPL;在P2口上出現(xiàn)的是數(shù)據(jù)記憶體的高8位地址,即DPH。
取指操作之後,直至機(jī)器週期2的S3狀態(tài)之前,一直維持高電平。而在機(jī)器週期2的S1與S2狀態(tài)之間的ALE不再出現(xiàn)。 執(zhí)行“MOVXA,@DPTR”時,從機(jī)器週期2開始到S3狀態(tài),出現(xiàn)低電平。此時允許將片外數(shù)據(jù)記憶體的數(shù)據(jù)送上P0口,在的上升沿將數(shù)據(jù)讀入累加器A。數(shù)據(jù)為輸入。執(zhí)行“MOVX@DPTR,A”時,從機(jī)器週期2開始到S3狀態(tài),出現(xiàn)低電平。此時P0口上將送出累加器A的數(shù)據(jù),在的上升沿將數(shù)據(jù)寫入片外數(shù)據(jù)記憶體中。數(shù)據(jù)為輸出。 此時P0口為地址、數(shù)據(jù)複用匯流排;P2口在機(jī)器週期1的S4狀態(tài)之後出現(xiàn)鎖存的高8位地址(DPH);用控制線來調(diào)動數(shù)據(jù)匯流排上的數(shù)據(jù)傳輸方向:而有效時數(shù)據(jù)為輸入,有效時數(shù)據(jù)為輸出。2.?dāng)U展片外數(shù)據(jù)記憶體的硬體電路 在80C51的擴(kuò)展系統(tǒng)中,片外數(shù)據(jù)記憶體一般由隨機(jī)存取記憶體組成,最大可擴(kuò)展64KB。圖8–11所示的是用兩片6264擴(kuò)展16K*8位片外數(shù)據(jù)記憶體的電路。 在圖中,採用線選法尋址。用一根口線P2.7來尋址:當(dāng)P2.7=0時,訪問6264(0),地址範(fàn)圍為6000H~7FFFH;當(dāng)P2.7=l時,訪問6264(1),地址範(fàn)圍為E000H~FFFFH。
電腦系統(tǒng)中共有兩種數(shù)據(jù)傳送操作。一類是CPU和記憶體之間的數(shù)據(jù)讀寫操作;另一類則是CPU和外部設(shè)備之間的數(shù)據(jù)傳輸。
1.單片微機(jī)為什麼需要I/O介面電路
由於記憶體是半導(dǎo)體電路,與CPU具有相同的電路形式,數(shù)據(jù)信號也是相同的(電平信號),能相互相容直接使用,因此記憶體與CPU之間採用同步定時工作方式。它們之間只要在時序關(guān)係上能相互滿足就可以正常工作。記憶體與CPU之間的連接相當(dāng)簡單,除地址線、數(shù)據(jù)線之外,就是讀或?qū)戇x通信號,實(shí)現(xiàn)起來非常方便。
8.4I/O的擴(kuò)展及應(yīng)用
8.4.1I/O擴(kuò)展概述
CPU和外部設(shè)備之間的數(shù)據(jù)傳送卻十分複雜。①高速CPU與工作速度快慢差異很大的慢速外部設(shè)備的矛盾。②外部設(shè)備的數(shù)據(jù)信號是多種多樣的。③外部設(shè)備種類繁多。④外設(shè)的數(shù)據(jù)傳送有近距離的,也有遠(yuǎn)距離的。
CPU必須在CPU和外設(shè)之間有一個介面電路,通過介面電路對CPU與外設(shè)之間的數(shù)據(jù)傳送進(jìn)行協(xié)調(diào)。
在數(shù)據(jù)的I/O傳送中,介面電路主要有如下幾項(xiàng)功能:①速度協(xié)調(diào)由於速度上的差異,使得數(shù)據(jù)的I/O傳送只能以非同步方式進(jìn)行,即只能在確認(rèn)外設(shè)已為數(shù)據(jù)傳送作好準(zhǔn)備的前提下才能進(jìn)行I/O操作。②三態(tài)緩衝數(shù)據(jù)輸入時,輸入設(shè)備向CPU傳送的數(shù)據(jù)也要通過數(shù)據(jù)匯流排,為了維護(hù)數(shù)據(jù)匯流排上數(shù)據(jù)傳送的有秩序,因此只允許當(dāng)前時刻正在進(jìn)行數(shù)據(jù)傳送的數(shù)據(jù)源使用數(shù)據(jù)匯流排,其他數(shù)據(jù)源都必須與數(shù)據(jù)匯流排處於隔離狀態(tài)。為此要求介面電路能為三態(tài)緩衝功能。③數(shù)據(jù)轉(zhuǎn)換 有些外部設(shè)備需要使用介面電路進(jìn)行數(shù)據(jù)信號的轉(zhuǎn)換。其中包括:模數(shù)轉(zhuǎn)換、數(shù)模轉(zhuǎn)換、串並轉(zhuǎn)換和並串轉(zhuǎn)換等。
⒉介面與端口 外設(shè)之間在數(shù)據(jù)傳送方面的聯(lián)繫。其功能主要是通過電路實(shí)現(xiàn)的。因此稱之為介面電路。
在介面電路中應(yīng)該包含有數(shù)據(jù)寄存器以保存輸入輸出數(shù)據(jù)、狀態(tài)寄存器以保存外設(shè)的狀態(tài)資訊、命令寄存器以保存來自CPU的有關(guān)數(shù)據(jù)傳送的控制命令。由於在數(shù)據(jù)的傳送中,CPU需要對這些寄存器的狀態(tài)口和保存命令的命令口尋址等,我們通常把介面電路中這些已編址並能進(jìn)行讀或?qū)懖僮鞯募拇嫫鞣Q之為端口(port),或簡稱口。因此,一個介面電路就對應(yīng)著多個端口地址。對它們像存儲單元一樣進(jìn)行編址。 ⒊數(shù)據(jù)隔離技術(shù)
輸入輸出的數(shù)據(jù)都要通過系統(tǒng)的數(shù)據(jù)匯流排進(jìn)行傳送,為了正確地進(jìn)行數(shù)據(jù)的傳送,就必須解決數(shù)據(jù)匯流排的隔離問題。 對於輸出設(shè)備的介面電路,要提供鎖存器,當(dāng)允許接收輸出數(shù)據(jù)時閂鎖打開,否則關(guān)閉。而對於輸入設(shè)備的介面電路,要使用三態(tài)緩衝電路或集電極開路門。⑴三態(tài)緩衝電路 三態(tài)緩衝電路就是具有三態(tài)輸出的門電路,也稱之為三態(tài)門(TSL)。所謂三態(tài),就是指低電平狀態(tài)、高電平狀態(tài)和高阻抗三種狀態(tài)。當(dāng)三態(tài)緩衝器的輸出為高或低電平時,就是對數(shù)據(jù)匯流排的驅(qū)動狀態(tài);當(dāng)三態(tài)緩衝器的輸出為高阻抗時,就是對匯流排的隔離狀態(tài)。 三態(tài)緩衝器的控制邏輯如表8–2所示。
對三態(tài)緩衝電路的主要性能要求有:
·速度快,信號延遲時間短。例如典型三態(tài)緩衝器的延遲時間只有8-13ns。
·較高的驅(qū)動能力。
·高阻抗時對數(shù)據(jù)匯流排不呈現(xiàn)負(fù)載,最多只能拉走不大於0.04mA電流。⑵集電極開路門 集電極開路門是從基本的與非門電路演變過來的,把集電極回路中的電阻除去,讓集電極開路,就得到了集電極開路門電路。可以作為集電極開路的電路有反相器、與非門以及與或非門等。 集電極開路器件的輸出是低電平起作用,如果其中一個為低電平,則總的輸出即為低電平。只有當(dāng)所有連在一起的集電極開路器件的輸出端均為高電平時總的輸出才是高電平。對於這種邏輯關(guān)係有時也稱之為”線或”。
⒋I/O編址技術(shù)
介面電路要對其中的端口進(jìn)行編址。對端口編址是為I/O操作而進(jìn)行的,因此也稱為I/O編址。常用的I/O編址有獨(dú)立編址方式和統(tǒng)一編址方式。⑴獨(dú)立編址方式 優(yōu)點(diǎn)是I/O地址空間和記憶體地址空間相互獨(dú)立,但需要專門設(shè)置一套I/O指令和控制信號,從而增加了系統(tǒng)的開銷。⑵統(tǒng)一編址方式 統(tǒng)一編址就是把系統(tǒng)中的I/O和記憶體統(tǒng)一進(jìn)行編址。在這種編址方式中,把介面中的寄存器(端口)與記憶體中的存儲單元同等對待。為此也把這種編址稱之為記憶體映像(Memorymapped)編址。80C51使用統(tǒng)一編址方式。因此在介面電路中的I/O編址也採用16位地址,和存儲單元的地址長度一樣。⒌I/O數(shù)據(jù)傳送的控制方式
有無條件傳送方式、查詢方式、中斷方式和直接記憶體存取(DMA)四種方式。在單片微機(jī)中主要使用前三種方式。⑴無條件傳送方式 無條件傳送也稱為同步程式傳送。在進(jìn)行I/O操作時,不需要測試外部設(shè)備的狀態(tài),可以根據(jù)需要隨時進(jìn)行數(shù)據(jù)傳送操作。⑵程式查詢方式 查詢方式又稱之為有條件傳送方式,即數(shù)據(jù)的傳送是有條件的。為了實(shí)現(xiàn)查詢方式的數(shù)據(jù)輸入輸出傳送,需要由介面電路提供外設(shè)狀態(tài),並以軟體方法進(jìn)行狀態(tài)測試。因此這是一種軟硬體方法結(jié)合的數(shù)據(jù)傳送方式。
⑶程式中斷方式 當(dāng)外設(shè)為數(shù)據(jù)傳送作好準(zhǔn)備之後,就向CPU發(fā)出中斷請求,CPU回應(yīng)中斷請求之後,轉(zhuǎn)去為外設(shè)的數(shù)據(jù)輸入輸出服務(wù)。待服務(wù)完成之後,CPU再繼續(xù)執(zhí)行被中斷的原程式。
80C51的四個8位雙向口,都具有數(shù)據(jù)I/O操作功能。⒈有關(guān)I/O口的指令
由於80C51採用統(tǒng)一編址方式,因此沒有專門的I/O指令。四個I/O口均屬於內(nèi)部的SFR。8.4.280C51單片微機(jī)I/O口直接應(yīng)用
⑴I/O口的數(shù)據(jù)傳送指令 向口輸出數(shù)據(jù)的指令有:MOV Px,AMOV Px,RnMOV Px,@RiMOV Px,direct
從口輸入數(shù)據(jù)的指令有:MOV A,PxMOV Rn,PxMOV @Ri,PxMOV direct,Px⑵I/O口的位操作指令位傳送指令 MOV Px.y C位清0指令 CLR Px.y 位置1指令 SETB Px.y 位取反 CPL Px.y 位為1轉(zhuǎn)移 JB Px.y rel位為0轉(zhuǎn)移 JNB Px.y rel位為1轉(zhuǎn)移並清零 JBC Px.y rel⑶I/O口其他操作指令邏輯與指令
ANL Px,A 邏輯和指令
ORL Px,A 邏輯異與指令
XRL Px,A 加1指令
INC Px 減1指令
DEC Px 減1條件轉(zhuǎn)移指令
DJNZ Px, rel數(shù)值比較轉(zhuǎn)移指令
CJNE A,Px, rel使用單片微機(jī)本身的I/O口,能完成一些簡單的數(shù)據(jù)I/O應(yīng)用。例:執(zhí)行指令:MOV P1,#7FH執(zhí)行結(jié)果為:P1.7引腳輸出為低電平,其餘7個引腳都輸出高電平。
⒈簡單輸出口的擴(kuò)展
輸出口的主要功能是進(jìn)行數(shù)據(jù)保持(鎖存),一般應(yīng)用鎖存器晶片實(shí)現(xiàn)。比如常用74LS377晶片,該晶片是一個具有“使能”控制端的8D鎖存器。一個時鐘輸入端CK,一個鎖存允許信號G,當(dāng)G=0時,CK的上跳變將把8位D輸入端的數(shù)據(jù)打入8位鎖存器,這時Q輸出端將保持D端輸入的數(shù)據(jù)。80C51與74LS377的介面見圖8–12。例:將一個數(shù)據(jù)字節(jié)從74LS377輸出,則執(zhí)行下麵程式段:
MOV DPTR.#7FFFH ;地址指針指向74LS377 MOV A,#DATA ;將輸出數(shù)據(jù)送A MOVX@DPTR,A ;輸出數(shù)據(jù)8.4.380C51簡單I/O的擴(kuò)展
⒉簡單輸入口的擴(kuò)展 對於常態(tài)數(shù)據(jù)的輸入,只需採用8位三態(tài)門控制電路晶片即可。圖8-13是用74LS244通過P0口擴(kuò)展的8位並行輸入口,圖中,三態(tài)門由P2.6和RD相或控制,其端口地址為BFFFH。例:數(shù)據(jù)輸入MOV DPTR,#0BFFFH ;指向74LS244口地址MOVX A,@DPTR ;讀入數(shù)據(jù)8.4.4可編程I/O介面晶片8255A的擴(kuò)展及應(yīng)用
在單片微機(jī)I/O擴(kuò)展中常用的並行可編程介面晶片有:8255A可編程通用並行介面晶片8155 帶RAM和定時器、計數(shù)器的可編程並行介面晶片8279 可編程鍵盤/顯示器介面晶片。⒈8255A的邏輯結(jié)構(gòu)和信號引腳
8255A是一個40引腳的雙列直插式積體電路晶片,其邏輯結(jié)構(gòu)如圖8–14所示。按功能可把8255A分為三個邏輯電路部分,即:口電路、匯流排介面電路和控制邏輯電路。
⑴口電路
8255A共有三個8位口,其中A口和B口是單純的數(shù)據(jù)口,供數(shù)據(jù)I/O使用。而C口則既可以作數(shù)據(jù)口,又可以作控制口使用,用於實(shí)現(xiàn)A口和B口的控制功能。 數(shù)據(jù)傳送中A口所需的控制信號由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起稱之為A組;同樣理由把B口和C口低位部分(PC3~PC0)合在一起稱之為B組。⑵匯流排介面電路匯流排介面電路用於實(shí)現(xiàn)8255A和單片微機(jī)的信號連接。其中包括:
①數(shù)據(jù)匯流排緩衝器數(shù)據(jù)匯流排緩衝器為8位雙向三態(tài)緩衝器,可直接和80C51的數(shù)據(jù)線相連,與I/O操作有關(guān)的數(shù)據(jù)、控制字和狀態(tài)資訊都是通過該緩衝器進(jìn)行傳送。
②讀/寫控制邏輯與讀寫有關(guān)的控制信號有:
·CS—片選信號(低電平有效)
·RD—讀信號(低電平有效)
·WR—寫信號(低電平有效)
·A0、A1—端口選擇信號。8255A共有四個可尋址的端口(即A口、B口、C口和控制寄存器),用二位地址編碼即可實(shí)現(xiàn)選擇。參見表8–3?!ESET—複位信號(高電平有效)。複位之後,控制寄存器清除,各端口被置為輸入方式。 讀寫控制邏輯用於實(shí)現(xiàn)8255A的硬體管理,其內(nèi)容包括晶片的選擇,口的尋址以及規(guī)定各端口和單片微機(jī)之間的數(shù)據(jù)傳送方向。詳見表8–38255A介面工作狀態(tài)選擇表.⑶控制邏輯電路 控制邏輯電路包括A組控制和B組控制,合在一起構(gòu)成8位控制寄存器。用於存放各口的工作方式控制字。⒉8255A工作方式及數(shù)據(jù)I/O操作
⑴8255A的工作方式
8255A共有三種工作方式,即方式0、方式1、方式2.
①方式0基本輸入/輸出方式 方式0下,可供使用的是兩個8位口(A口和B口)及兩個4位口(C口高4位部分和低4位部分)。四個口可以是輸入和輸出的任何組合。方式0適用於無條件數(shù)據(jù)傳送,也可以把C口的某一位作為狀態(tài)位,實(shí)現(xiàn)查詢方式的數(shù)據(jù)傳送。②方式1選通輸入/輸出方式
A口和B口分別用於數(shù)據(jù)的輸入/輸出。而C口則作為數(shù)據(jù)傳送的聯(lián)絡(luò)信號。具體定義見表8–4??梢夾口和B口的聯(lián)絡(luò)信號都是三個,如果A或B只有一個口按方式1使用,則剩下的另外13位口線仍然可按方式0使用。如果兩個口都按方式1使用,則還剩下2位口線,這兩位口線仍然可以進(jìn)行位狀態(tài)的輸入輸出。
方式1適用於查詢或中斷方式的數(shù)據(jù)輸入/輸出。
③方式2雙向數(shù)據(jù)傳送方式 只有A口才能選擇這種工作方式,這時A口既能輸入數(shù)據(jù)又能輸出數(shù)據(jù)。在這種方式下需使用C口的五位線作控制線,信號定義如表8–4所示。方式2適用於查詢或中斷方式的雙向數(shù)據(jù)傳送。如果把A口置於方式2下,則B口只能工作於方式0.⑵數(shù)據(jù)輸入操作 用於輸入操作的聯(lián)絡(luò)信號有:
·STB(StroBe)—選通脈衝,輸入,低電平有效。 當(dāng)外設(shè)送來STB信號時,輸入數(shù)據(jù)裝入8255A的鎖存器。
·IBF(InputBufferFull)—輸入緩衝器滿信號,輸出,高電平有效。
IBF信號有效,表明數(shù)據(jù)已裝入鎖存器,因此它是一個狀態(tài)信號。
·INTR(INTerruptRequest)—中斷請求信號,高電平有效,當(dāng)IBF為高,信號由低變高(後沿)時,中斷請求信號有效。向單片微機(jī)發(fā)出中斷請求。 數(shù)據(jù)輸入過程:當(dāng)外設(shè)準(zhǔn)備好數(shù)據(jù)輸入後,發(fā)出信號,輸入的數(shù)據(jù)送入緩衝器。然後IBF信號有效。如使用查詢方式,則IBF即作為狀態(tài)信號供查詢使用;如使用中斷方式,當(dāng)信號由低變高時,產(chǎn)生INTR信號,向單片微機(jī)發(fā)出中斷。單片微機(jī)在回應(yīng)中斷後執(zhí)行中斷服務(wù)程式時讀入數(shù)據(jù),並使INTR信號變低,同時也使IBF信號同時變低。以通知外設(shè)準(zhǔn)備下一次數(shù)據(jù)輸入。⑶數(shù)據(jù)輸出操作用於數(shù)據(jù)輸出操作的聯(lián)絡(luò)信號有:
·ACK(ACKnowledge)—外設(shè)回應(yīng)信號輸入,低電平有效。當(dāng)外設(shè)取走輸出數(shù)據(jù),並處理完畢後向單片微機(jī)發(fā)回的回應(yīng)信號。
·OBF(OutputBufferFull)——輸出緩衝器滿信號,輸出,低電平有效。當(dāng)單片微機(jī)把輸出數(shù)據(jù)寫入8255A鎖存器後,該信號有效,並送去啟動外設(shè)以接收數(shù)據(jù)。
·INTR—中斷請求信號,輸出,高電平有效。 數(shù)據(jù)輸出過程:外設(shè)接收並處理完一組數(shù)據(jù)後,發(fā)回ACK信號。該信號使OBF變高,表明輸出緩衝器已空。如使用查詢方式,則OBF可作為狀態(tài)信號供查詢使用;如使用中斷方式,則當(dāng)ACK信號結(jié)束時,INTR有效,向單片微機(jī)發(fā)出中斷請求。在中斷服務(wù)過程中,把下一個輸出數(shù)據(jù)寫入8255A的輸出緩衝器。寫入後OBF有效,表明輸出數(shù)據(jù)已到,並以此信號啟動外設(shè)工作,取走並處理8255A中的輸出數(shù)據(jù)。 ⒊8255A控制字及初始化編程
8255A是可編程介面晶片,共有兩種控制字,即8255A工作方式控制字和C口位置位/複位控制字。⑴工作方式控制字
工作方式控制字用於確定各口的工作方式及數(shù)據(jù)傳送方向。其格式如圖8-15所示。⑵C口位置位/複位控制字
C口的每一位都可以進(jìn)行置位或複位。對C口各位的置位或複位是由位置位/複位控制字進(jìn)行的。8255A的位置位/複位控制字格式如圖8–16所示。
D7是該控制字的特徵位,其狀態(tài)固定為0。在使用中,控制字每次只能對C口中的一位進(jìn)行置位或複位。 ⒋8255A與80C51的介面及應(yīng)用8255A與80C51的介面電路見圖8–17。由圖分析:PA地址為7FFCH(A15=0,A1=0,A0=0) PB地址為7FFDH(A15=0,A1=0,A0=1) PC地址為7FFEH(A15=0,A1=1,A0=0)
控制寄存器地址為7FFFH(A15=0,A1=1,A0=1)
例:對8255A各口作如下設(shè)置:A口方式0,B口方式0,從A口輸入從B口、C口輸出。工作方式控制字10010000,即90H。初始化程式段為:
MOV A,#90H ;設(shè)B口、C口輸出, ;A口輸入,A口、B口為方式0
MOV DPTR,#7FFFH MOVX @DPTR,A MOV DPTR,#7FFCH;從A口輸入
MOVX A,@DPTR INC DPTR ;從B口輸出
MOVX @DPTR,A INC DPTR ;從C口輸出
MOVX @DPTR,A例:把C口的第6位PC5置為1。
MOV DPTR,#7FFFH MOV A,#00001011 ;PC5置位
MOVX @DPTR,A8.5D/A轉(zhuǎn)換器介面的擴(kuò)展及應(yīng)用
8.5.1概述
1.D/A轉(zhuǎn)換器及其介面電路的一般特點(diǎn) 數(shù)/模轉(zhuǎn)換器是一種將數(shù)字信號轉(zhuǎn)換成模擬信號的器件,為電腦系統(tǒng)的數(shù)字信號和模擬環(huán)境的連續(xù)信號之間提供了一種介面。 數(shù)/模轉(zhuǎn)換器的輸出是由數(shù)字輸入和參考源Vref組合進(jìn)行控制的。大多數(shù)常用的數(shù)/模轉(zhuǎn)換器的數(shù)字輸入是二進(jìn)位或BCD碼形式的,輸出可以是電流也可以是電壓,而多數(shù)是電流。因而,在多數(shù)電路中,數(shù)/模轉(zhuǎn)換器的輸出需要用運(yùn)算放大器組成的電流一電壓轉(zhuǎn)換器將電流輸出轉(zhuǎn)換成電壓輸出。
2.?dāng)?shù)/模轉(zhuǎn)換器介面電路的一般特點(diǎn)
根據(jù)數(shù)/模轉(zhuǎn)換器輸入口是否具有鎖存器可將其分為兩類。(1)內(nèi)部無鎖存器 如DAC800(8位)、AD7520(10位)、AD7521(12位)。它們的結(jié)構(gòu)簡單,內(nèi)部不帶鎖存器。這一類數(shù)/模轉(zhuǎn)換器,最適合與單片微機(jī)80C51的P1、P2等具有輸出鎖存功能的I/O口直接介面。但是當(dāng)它們與P0口相接口時,則需在其輸入端增加鎖存器。(2)內(nèi)部帶鎖存器 目前應(yīng)用的數(shù)/模轉(zhuǎn)換器,不僅具有數(shù)據(jù)鎖存器,有的還提供地址解碼電路,有些包含雙重,甚至多重的數(shù)據(jù)緩衝結(jié)構(gòu),如DAC0832、DAC1230、AD7542以及AD7549等。這種類型的數(shù)/模轉(zhuǎn)換器以高於8位(如12位)的居多。這類數(shù)/模轉(zhuǎn)換器以與80C51中的P0口相接口較為適合。⒈DAC0832的技術(shù)特性
輸入數(shù)字量為8位,邏輯電平與TTL相容,參考電壓Vref的工作範(fàn)圍為+10~-10V,單電源電壓Vcc的範(fàn)圍為+5V~+15V,電流建立時間為1μs,CMOS工藝,低功耗20mW,20腳雙列直插式封裝,具有單緩衝、雙緩衝和直通三種數(shù)據(jù)輸入工作方式。8.5.2八位D/A轉(zhuǎn)換器晶片DAC0832
⒉DAC0832的內(nèi)部邏輯結(jié)構(gòu)
數(shù)/模轉(zhuǎn)換器DAC0832的內(nèi)部邏輯結(jié)構(gòu)如圖8-18所示。晶片內(nèi)有一個8位輸入寄存器,一個8位DAC寄存器,形成兩級緩衝結(jié)構(gòu)。這樣可使DAC轉(zhuǎn)換輸出前一個數(shù)據(jù)的同時,將下一個數(shù)據(jù)傳送到8位輸入寄存器,以提高數(shù)/模轉(zhuǎn)換的速度。在一些場合(比如X-Y繪圖儀的單片微機(jī)控制),能夠使多個數(shù)模轉(zhuǎn)換器分時輸入數(shù)據(jù)之後,同時輸出模擬電壓。⒊DAC0832的引腳及其功能DAC0832的引腳如圖8-19所示。CS:片選,低電平有效。與ILE信號結(jié)合,可對WR1是否起作用進(jìn)行控制?!LE:允許數(shù)據(jù)輸入鎖存,高電平有效。·WR1:寫信號1,輸入,低電平有效。用於將CPU數(shù)據(jù)匯流排送來的數(shù)據(jù)鎖存於輸入寄存器中,WR 1有效時,和ILE必須同時有效?!R2:寫信號2,輸入,低電平有效,用於將輸入寄存器中的數(shù)據(jù)傳送到DAC寄存器中,並鎖存起來。當(dāng)WR2有效時,XFER也必須同時有效。 ·XFER:傳送控制信號,低電平有效。用來控制WR2,選通DAC寄存器?!I7~DI0:8位數(shù)字輸入,DI7為最高位,DI0為最低位。Iout1:DAC電流輸出1,當(dāng)數(shù)字量為全1時,輸出電流最大;當(dāng)數(shù)字量為全0時輸出電流最小?!out2:DAC電流輸出2,其與Iout1的關(guān)係,滿足下式:·Rbf:回饋電阻(15KΩ),已固化在晶片中。因?yàn)镈AC0832是電流輸出型D/A轉(zhuǎn)換器,為得到電壓輸出,使用時需在二個電流輸出端接運(yùn)算放大器。Rbf作為運(yùn)算放大器回饋電阻,為DAC提供電壓輸出。
·Vref:參考電壓輸入,通過它將外加高精度電壓源與內(nèi)部的電阻網(wǎng)路相連接。Vref可在+10~一10V範(fàn)圍內(nèi)選擇。
·VCC:數(shù)字電路電源。
·DGND:數(shù)字地。
·AGND:模擬地。
8.5.3DAC0832的擴(kuò)展與應(yīng)用
⒈DAC0832的單緩衝方式的介面電路和應(yīng)用
使DAC0832內(nèi)部的輸入寄存器或DAC寄存器中有一個處於直通方式,另一個處於受控的鎖存狀態(tài),或者二個寄存器同時處於受控的鎖存狀態(tài)。單緩衝方式的介面電路見圖8–20。要使輸入寄存器處於直通方式,應(yīng)使ILE=1、CS=0、WR1=0。要使DAC寄存器處於直通方式,應(yīng)使XFER=0、WR2=0。例:產(chǎn)生鋸齒波。 由圖8–20可知,DAC0832為單緩衝方式,輸入寄存器和DAC寄存器同時受控鎖存。DAC0832的地址為7FFFH(P2.7=0)。
產(chǎn)生鋸齒波的程式清單如下:
ORG 0000H SJMP MAIN ORG 0030HMAIN:MOVDPTR,#7FFFH ;同時輸入輸入寄存器和 ;DAC寄存器地址
MOV R0,#0 ;轉(zhuǎn)換初值
LP:MOV A,R0 MOVX @DPTR,A;送出模擬量
INCR0
SJMPLP
⒉DAC0832的雙緩衝方式的介面電路和應(yīng)用
DAC0832與80C51的介面電路見圖8-21。採用雙緩衝方式。
用口線P2.5控制第一片DAC0832的輸入鎖存器,地址為DFFFH;用口線P2.6控制第二片DAC0832的輸入鎖存器,地址為BFFFH;用口線P2.7同時控制二片DAC0832的第二級緩衝,地址為7FFFH。若第一片的數(shù)據(jù)在R0中,第二片的數(shù)據(jù)在R1中,此時送數(shù)程式為:
MOV DPTR,#0DFFFH;把數(shù)據(jù)送第一片 ;0832的輸入鎖存器
MOV A,R0 MOVX @DPTR,A MOV DPTR,#0BFFFH;把數(shù)據(jù)送第二片 ;0832的輸入鎖存器 MOV A,R1 MOVX @DPTR,A MOV DPTR,#7FFFH;兩片0832同時輸出模擬量 MOVX @DPTR,A
8.6A/D轉(zhuǎn)換器介面的擴(kuò)展及應(yīng)用
8.6.1概述
模/數(shù)轉(zhuǎn)換器是一種用來將連續(xù)的模擬信號轉(zhuǎn)換成適合於數(shù)字處理的二進(jìn)位數(shù)的器件,是一個將模擬信號值編制成對應(yīng)的二進(jìn)位碼的編碼器。與此對應(yīng),數(shù)/模轉(zhuǎn)換器則是一個解碼器。常用的模/數(shù)轉(zhuǎn)換器有:計數(shù)式A/D轉(zhuǎn)換器、雙積分式A/D轉(zhuǎn)換器、逐位比較式A/D轉(zhuǎn)換器及並行直接比較式A/D轉(zhuǎn)換器、∑/△A/D轉(zhuǎn)換器等幾種。一個完整的模/數(shù)轉(zhuǎn)換器應(yīng)該包含這樣一些輸入、輸出信號:
.模擬輸入信號Vin和參考電壓Vref;
.數(shù)字輸出信號;
.啟動轉(zhuǎn)換信號;
.轉(zhuǎn)換完成(結(jié)束)信號或者“忙”信號,輸出;
.數(shù)據(jù)輸出允許信號,輸入。單片微機(jī)對A/D轉(zhuǎn)換的控制一般分為三個過程:①單片微機(jī)通過控制口發(fā)出啟動轉(zhuǎn)換信號,命令模/數(shù)轉(zhuǎn)換器開始轉(zhuǎn)換。②單片微機(jī)通過狀態(tài)口讀入A/D轉(zhuǎn)換器的狀態(tài),判斷它是否轉(zhuǎn)換結(jié)束。③一旦轉(zhuǎn)換結(jié)束,CPU發(fā)出數(shù)據(jù)輸出允許信號,讀入轉(zhuǎn)換完成的數(shù)據(jù)。
ADC0809是採用CMOS工藝製成的8位8通道逐次逼近式模數(shù)轉(zhuǎn)換器,可實(shí)現(xiàn)對8路模擬信號分時進(jìn)行A/D轉(zhuǎn)換,其轉(zhuǎn)換時間為100μs左右??捎脝我浑娫垂╇?,此時模擬電壓輸入範(fàn)圍為0~5V,無需調(diào)零和滿刻度調(diào)整。解析度為8位。非調(diào)整誤差為±1LSB。三態(tài)鎖存輸出。低功耗為15mW。採用28腳DIP封裝,⒈ADC0809的內(nèi)部邏輯結(jié)構(gòu)
ADC0809的內(nèi)部結(jié)構(gòu)邏輯框圖示於圖8-22。從邏輯框圖中可看到,ADC0809晶片包含一個8路模擬開關(guān)、模擬開關(guān)的地址鎖存和解碼電路、比較器、256R電阻網(wǎng)路、電子開關(guān)逐位比較寄存器SAR、三態(tài)輸出鎖存緩衝器以及控制與定時電路等。8.6.2A/D轉(zhuǎn)換器晶片ADC0809
⒉ADC0809的引腳及功能
ADC0809的引腳分配如圖8-23所示。
·ADDA、ADDB、ADDC:模擬通道的地址選擇線,輸入。
·ALE:地址鎖存允許信號,輸入。由低到高的正跳變有效,此時鎖存地址選擇線的狀態(tài),從而選通相應(yīng)的模擬通道,以便進(jìn)行A/D轉(zhuǎn)換。
·2–1~2–8:數(shù)字輸出線,輸出。2–8為最低位(LSB),2–1為最高位(MSB)。
·IN0~I(xiàn)N7:模擬量輸入通道,信號為單極性,電壓範(fàn)圍0~VCC。若信號過小還需加以放大。在A/D轉(zhuǎn)換過程中模擬量的值不應(yīng)變化,對變化速度快的模擬量,在輸入前應(yīng)增加採樣保持電路。·START:啟動信號,輸入,高電平有效。為了啟動轉(zhuǎn)換,在此端上應(yīng)加一正脈衝信號。脈衝的上升沿將內(nèi)部寄存器全部清0,在其下降沿開始轉(zhuǎn)換。
·EOC:轉(zhuǎn)換結(jié)束信號,輸出,高電平有效。在START 信號的上升沿之後0~8個時鐘週期內(nèi),EOC變?yōu)榈碗娖健.?dāng)轉(zhuǎn)換結(jié)束時,EOC變?yōu)楦唠娖剑@時轉(zhuǎn)換得到的數(shù)據(jù)可供讀出。
·OE:輸出允許信號,輸入,高電平有效。當(dāng)OE有效時,A/D的輸出鎖存緩衝器開放,將其中的數(shù)據(jù)放到外面的數(shù)據(jù)線上。
·CLK:時鐘,輸入。時鐘頻率範(fàn)圍為10K~1280KHz。
8路模擬開關(guān)的三位地址選通輸入端與對應(yīng)的輸入通道的關(guān)係見表8–5。
ADC0809的時序如圖8-24所示。其中:
tWS:最小啟動脈寬,典型值為100ns,最大值為200ns。
tWE:最小ALE脈寬,典型值為100ns,最大值為200ns。
tD:模擬開關(guān)延時,典型值為1μs,最大值為2.5μs。
tC:轉(zhuǎn)換時間,當(dāng)fCLK=640KHz時,典型值為100μs,最大值為116μs。
tEOC:轉(zhuǎn)換結(jié)束延時,最大值為8個時鐘週期+2μs。
⒈ADC0809與80C51的介面
ADC0809與80C51的介面電路如圖8-25所示。
P0口直接與ADC0809的數(shù)據(jù)線相接,P0口的低三位通過鎖存器74LS373連到ADDA、ADDB、ADDC,鎖存器的鎖存信號是80C51的ALE信號。80C51的ALE信號直接連到ADC0809的CLK引腳。
P2.7口作為讀寫口的選通地址。 片外A/D轉(zhuǎn)換通道的地址為7FF8H~7FFFH。 在軟體編制時,令P2.7(A15)=0,A0、A1、A2給出被選擇的模擬通道的地址,執(zhí)行一條輸出指令,就產(chǎn)生一個正脈衝,鎖存通道地址和啟動A/D轉(zhuǎn)換;執(zhí)行一條輸入指令,讀取A/D轉(zhuǎn)換結(jié)果。8.6.3ADC0809的擴(kuò)展及應(yīng)用例:採用延時等待A/D轉(zhuǎn)換結(jié)束方式,分別對8路模擬信號輪流採樣一次,並依次把結(jié)果存入數(shù)據(jù)記憶體。
ORG 0000H SJMP MAIN ORG 0030HMAIN:MOVR1,#20H MOV DPTR,#7FF8H ;指向通道0地址
MOV R7,#08H ;共需轉(zhuǎn)換8個通道LOOP:MOVX@DPTR,A;啟動A/D轉(zhuǎn)換
LCALLD128μs ;延時等待A/D轉(zhuǎn)換結(jié)束
MOVXA,@DPTR ;讀入A/D轉(zhuǎn)換值,並存入記憶體
MOV @R1,A INC DPTR ;指向下一通道地址
INC R1 DJNZ R7,LOOP;8個通道未轉(zhuǎn)換完,則繼續(xù)。
…
⒉ADC0809與80C51中斷方式的介面
ADC0809與80C51中斷方式連接圖介面電路如圖8–26所示。將ADC0809作為外擴(kuò)的並行I/O口,由P2.7和脈衝同時有效來啟動A/D轉(zhuǎn)換,通道選擇端A、B、C分別與地址線A0、A1、A2相連。其端口地址為7FF8H~7FFFH。A/D轉(zhuǎn)換結(jié)束信號EOC經(jīng)反相後接80C51的外部中斷引腳。例:採集8路模擬量,並存入20H地址開始的內(nèi)部RAM中。 ORG 0000H SJMP MAIN ORG0003H ;外部中斷0入口地址
LJMP INTDATA ORG 0100H ;數(shù)據(jù)採集副程式
SAMP:MOV R0,#20H ;數(shù)據(jù)緩衝區(qū)首址
MOV R2,#8 ;8通道計數(shù)器
MOV DPTR,#7FF8H;指向0通道START:CLR F0 ;清中斷發(fā)生標(biāo)誌
MOVX @DPTR,A ;啟動A/D(P2.7=0,=0)
SETB IT0 ;置外部中斷0為邊沿觸發(fā)
SETB EX0 ;允許外部中斷0
SETB EA ;開中斷
LOOP:JNB F0,LOOP ;判中斷發(fā)生標(biāo)誌是否為0
DJNZ R2,START ;8個通道轉(zhuǎn)換是否結(jié)束
RET
INTDATA:MOVXA,@DPTR ;讀數(shù)據(jù)(P2.7=0,=0),硬 ;件撤銷中斷
MOV @R0,A ;存數(shù)據(jù)
INC R0INC DPTR ;指向下一通道
SETB F0 ;置中斷發(fā)生標(biāo)誌
RETI8.7鍵盤介面
8.7.1鍵盤介面的工作原理
在過程控制和智能化儀錶中,通常是用單片微機(jī)進(jìn)行即時控制和數(shù)據(jù)處理的,為實(shí)現(xiàn)人機(jī)對話,鍵盤是個必不可少的功能配置。利用按鍵可以實(shí)現(xiàn)向單片微機(jī)輸入數(shù)據(jù)、傳送命令、功能切換等,是人工干預(yù)單片微機(jī)系統(tǒng)的主要手段。
8.7.1鍵盤介面的工作原理1.鍵盤的工作原理 鍵盤可分為兩類:獨(dú)立式鍵盤和矩陣式鍵盤。
(1)獨(dú)立式鍵盤 這是最簡單的鍵盤電路,各個鍵相互獨(dú)立,每個按鍵獨(dú)立地與一根數(shù)據(jù)輸入線相連接,如圖8–27所示。圖8–27中(a)為中斷方式,任何一個按鍵按下時,通過門電路都會向CPU申請中斷,在中斷服務(wù)程式中,讀入P1口的值,從而判斷是哪一個按鍵被按下。圖8–27中(b)為查詢方式,在平時,所有的數(shù)據(jù)輸入線都通過上拉電阻被連接成高電平;當(dāng)任何一個鍵被壓下時,與之連接的數(shù)據(jù)輸入線將被拉成低電平。 對按鍵是否被按下,需採用軟體消抖的辦法,以消除按鍵在閉合和斷開瞬間所伴隨有一連串抖動所帶來的不利影響。
(2)矩陣式鍵盤 矩陣式鍵盤輸入電路,如圖8–28所示,若有四根行線,四根列線,則構(gòu)成4×4鍵盤,最多可定義16個按鍵。
2.矩陣式鍵盤的工作過程⑴
鍵掃描:①
CPU先通過輸出口使所有列線輸出為低電平,然後從輸入口讀入所有行線的狀態(tài)。若行線狀態(tài)都為高電平,則說明沒有鍵被按下,若行線中有低電平,則表明有鍵被按下。
②判斷按鍵位置。CPU通過輸出口使列線從低位至高位逐位變低電平輸出,每次均讀入行線的狀態(tài),以確定那條列線為“0”狀態(tài)。由行、列線的狀態(tài)就可判斷是哪一個鍵被按下(行、列交叉處)③當(dāng)判斷出哪個鍵壓下後,程式轉(zhuǎn)入相應(yīng)的鍵處理程式。⑵
鍵掃描的方式: ①
程式控制掃描方式:CPU的控制一旦進(jìn)入監(jiān)控程序,將反復(fù)不斷地掃描鍵盤,等待輸入命令或數(shù)據(jù)。 ②
定時掃描方式:在初始化程式中對定時器/計數(shù)器進(jìn)行編程,使之產(chǎn)生10ms的定時中斷,CPU回應(yīng)定時中斷,執(zhí)行中斷服務(wù)程式,對鍵盤掃描一遍,檢查鍵盤的狀態(tài),實(shí)現(xiàn)對鍵盤的定時掃描。③
中斷掃描方式:當(dāng)鍵位上有鍵壓下時,由硬體電路產(chǎn)生中斷請求,CPU回應(yīng)中斷,執(zhí)行中斷服務(wù)程式,判斷壓下的鍵的鍵號,根據(jù)鍵的定義(數(shù)字鍵或功能鍵)作相應(yīng)的處理。
80C51的I/O口具有輸出鎖存和輸入緩衝的功能,因而用它們組成鍵盤電路時,可以省掉輸出鎖存器和輸入緩衝器,圖8-–29所示的是由80C51本身的P1口來構(gòu)成4×4矩陣式鍵盤。
圖中,鍵盤的四根列線連到P1口的高4位,而四根行線連到P1口的低四位,並通過“與”門連到端。 沒有鍵壓下時,為高電平;當(dāng)鍵位上有任一鍵壓下時端變?yōu)榈碗娖?,向CPU發(fā)中斷請求。若CPU開放外部中斷0,則回應(yīng)中斷、執(zhí)行中斷服務(wù)程式掃描鍵盤。 在行輸出電路
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國射頻功率放大器行業(yè)開拓第二增長曲線戰(zhàn)略制定與實(shí)施研究報告
- 2025-2030年中國企業(yè)管理培訓(xùn)行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報告
- 2025-2030年中國新型健康服務(wù)行業(yè)資本規(guī)劃與股權(quán)融資戰(zhàn)略制定與實(shí)施研究報告
- 新形勢下高空作業(yè)平臺行業(yè)快速做大市場規(guī)模戰(zhàn)略制定與實(shí)施研究報告
- 比較文學(xué)情境母題研究
- 建設(shè)無煙學(xué)校宣傳資料
- 建設(shè)培訓(xùn)中心規(guī)章制度
- 初中地理會考知識點(diǎn)
- 2025年中國電信運(yùn)營商行業(yè)全景評估及投資規(guī)劃建議報告
- 云南省楚雄州2023-2024學(xué)年九年級上學(xué)期期末教育學(xué)業(yè)質(zhì)量監(jiān)測化學(xué)試卷
- 煤礦巷道噴涂技術(shù)方案
- 新版中國腦出血診治指南
- 高校搬遷可行性方案
- 充電樁選址優(yōu)化與布局規(guī)劃
- 科技產(chǎn)業(yè)園項(xiàng)目投資計劃書
- 苗木采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- JJF 1030-2023溫度校準(zhǔn)用恒溫槽技術(shù)性能測試規(guī)范
- 輸變電工程安全文明施工設(shè)施標(biāo)準(zhǔn)化配置表
- 一銷基氯苯生產(chǎn)車間硝化工段工藝初步設(shè)計
- 自動控制原理仿真實(shí)驗(yàn)課程智慧樹知到課后章節(jié)答案2023年下山東大學(xué)
- 【城市軌道交通運(yùn)營安全管理研究9200字(論文)】
評論
0/150
提交評論