微型計(jì)算機(jī)原理及應(yīng)用_第1頁
微型計(jì)算機(jī)原理及應(yīng)用_第2頁
微型計(jì)算機(jī)原理及應(yīng)用_第3頁
微型計(jì)算機(jī)原理及應(yīng)用_第4頁
微型計(jì)算機(jī)原理及應(yīng)用_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微型計(jì)算機(jī)原理及應(yīng)用

第12章數(shù)模(D/A)轉(zhuǎn)換

與模數(shù)(A/D)轉(zhuǎn)換接口

§12.1D/A轉(zhuǎn)換器接口

§12.2A/D轉(zhuǎn)換器接口

12.1D/A轉(zhuǎn)換器接口

D/A(DigittoAnalog)和A/D(AnalogtoDigit)轉(zhuǎn)換是

計(jì)算機(jī)與外部世界聯(lián)系的重要接口。在一個(gè)實(shí)際的系統(tǒng)中,

有兩種基本的量一一模擬量和數(shù)字量。外界的模擬量要輸入

給計(jì)算機(jī),首先要經(jīng)過A/D轉(zhuǎn)換,才能由計(jì)算機(jī)進(jìn)行運(yùn)算、

加工處理等。若計(jì)算機(jī)的控制對象是模擬量,也必須先把計(jì)

算機(jī)輸出的數(shù)字量經(jīng)過D/A轉(zhuǎn)換,才能控制模擬量。

D/A和A/D轉(zhuǎn)換的具體電路已經(jīng)在數(shù)字電路課程中講述。

本章主要介紹如何把D/A和A/D轉(zhuǎn)換的芯片與CPU進(jìn)行接口以

及用CPU控制這些轉(zhuǎn)換的軟件編程如何實(shí)現(xiàn)。

12.1.1CPU與8位D/A芯片的接

D/A轉(zhuǎn)換通常是由輸入的二進(jìn)制數(shù)的各位控制一些開關(guān),

通過電阻網(wǎng)路,在運(yùn)算放大器的輸入端產(chǎn)生與二進(jìn)制數(shù)各位

的權(quán)成比例的電流,經(jīng)過運(yùn)算放大器相加和轉(zhuǎn)換而成為與二

進(jìn)制數(shù)成比例的模擬電壓。

若CPU的輸出數(shù)據(jù)要通過D/A轉(zhuǎn)換變?yōu)槟M量輸出,當(dāng)然

要把CPU數(shù)據(jù)總線的輸出連到D/A的數(shù)字輸入上。但是,由于

CPU要進(jìn)行各種信息的加工處理,它的數(shù)據(jù)總線上的數(shù)據(jù)是

不斷地改變的,它輸出給D/A的數(shù)據(jù)只在輸出指令的幾個(gè)微

秒中出現(xiàn)在數(shù)據(jù)總線上。所以,必須要有一個(gè)鎖存器,把

CPU輸出給D/A轉(zhuǎn)換的數(shù)據(jù)鎖存起來,直至輸送新的數(shù)據(jù)為止。

一個(gè)最簡單的D/A芯片與CPU的接口電路如圖12-1所示。

+5VGND

247

D

725

D

634

D??J9

5

D2?

cp42()

D741008

3五

DTo9

D2

1518

D1

01617

112123

27H

地址_n_

譯碼

1ORQ

WR

其中,以鎖存器74100作為CPU與D/A轉(zhuǎn)換之間的接口。

CPU把74100作為一個(gè)輸出端口,用地址27H來識別,貝UCPU輸

給D/A的數(shù)據(jù)要用一條I/O寫(即輸出)指令來實(shí)現(xiàn)。

圖12-1的電路可應(yīng)用于許多場合,例如:

(1)驅(qū)動一個(gè)侍服電機(jī);

(2)控制一個(gè)電壓一頻率轉(zhuǎn)換器(用于鎖相環(huán)路);

(3)控制一個(gè)可編程的電源;

(4)驅(qū)動一個(gè)模擬電表。

12.1.28位CPU與12位(高于8位的)D/A轉(zhuǎn)

換器的接口

1.一種12位D/A轉(zhuǎn)換芯片

這里介紹一種12位D/A轉(zhuǎn)換片子DAC1210。

DAC1210是美國國家半導(dǎo)體公司生產(chǎn)的12位D/A轉(zhuǎn)換器芯

片,是智能化儀表中常用的一種高性能的D/A轉(zhuǎn)換器。

DAC1210的邏輯結(jié)構(gòu)框圖如圖12-2所示。

引°“REF

1

八。IQUTI

寄r

DI][~DI[臉OI

41殮10UT2

差lt

D

寶AC

40器

S1器?

04b

DI?-DIQ[寄y

tl

也kNcc

Bl/B2

23

LELE

CS.

WR

西1DGND

XFER,

由圖12-2所示DAC1210的邏輯結(jié)構(gòu)是一個(gè)12位的D/A轉(zhuǎn)換

器。它有兩個(gè)輸入寄存器,一個(gè)是8位的,一個(gè)是4位。若它

與8位CPU接口,DAC1210的輸入線DH1?DI4以及DI3?DIO都

連至CPU的數(shù)據(jù)總線DB7?DBO。12位數(shù)據(jù)需分兩次輸送,若

CPU輸出的地址及控制信號,使LE1有效,貝噸位數(shù)據(jù)輸入至8

位輸入寄存器:若CPU使LE2有效,則12位數(shù)據(jù)中的另4位輸

入至DAC1210的4位輸入寄存器。再使LE3有效,把12位輸入

寄存器的內(nèi)容同時(shí)輸入給12位DAC寄存器,進(jìn)行D/A轉(zhuǎn)換。

若DAC1210與16位CPU相連,則DH1?DIO連至CPU的數(shù)據(jù)

總線DB11?DBO。CPU的輸出地址與控制信號使LE1與LE2同時(shí)

有效。貝UCPU輸出的12位數(shù)據(jù)同時(shí)輸入至8位輸入寄存器與4

位輸入寄存器。然后,使LE3有效,把12位輸入寄存器的內(nèi)

容同時(shí)輸送給12位DAC寄存器,進(jìn)行D/A轉(zhuǎn)換。

DAC1210共有24個(gè)引腳,各引腳定義如下:

DH1?DIO:12位數(shù)字量輸入信號,其中DIO為最低位,

Din為最高位。

cs:片選輸入信號,低電平有效。

WR1:數(shù)據(jù)寫入信號1,低電平有效。當(dāng)此信號有效時(shí),

與B1/B2配合起控制作用。

B1/B2:字節(jié)控制信號。此引腳為高電平時(shí),12位數(shù)字

同時(shí)送入輸入寄存器;為低電平時(shí),只將12位數(shù)字量的低4

位送到4位輸入寄存器。

XFER:傳送控制信號,低電平有效,與WR2配合使用。

WR2:數(shù)據(jù)寫入信號2,低電平有效。此信號有效時(shí),

XFER信號才起作用。

I0UT1:電流輸出1。

I0UT2:電流輸出2。

Rfb:內(nèi)部反饋電阻引腳。

VREF:參考電壓,-10V-+10Vo

VCC:芯片電源,+5V?+15V。

AGND:模擬地。

DGND:數(shù)字地。

2.DAC的輸出連接方式

有的D/A轉(zhuǎn)換片子的輸出是電壓,有的片子輸出的是電

流。在實(shí)際應(yīng)用中,執(zhí)行部件往往要求電壓驅(qū)動,所以,電

流輸出的要經(jīng)過電流-電壓變換器。輸出電壓又可能只要求

單極性,而有的要求有正有負(fù)(雙極性)。

(1)單極性輸出

一個(gè)電流輸出的D/A片子轉(zhuǎn)換為單極性電壓輸出的電路

如圖12-3所小。

輸出與RFB端間接的電阻R2以及接于參考電源的R1是為

了調(diào)整增益,電容C則起防止振蕩的作用。

(2)雙極性輸出

其輸出電路如圖12-4所示。

V

REF

V

AGND

3.8位CPU與12位D/A接口方法

許多應(yīng)用場合要求D/A有更高的靈敏度和精度,8位就不

能滿足要求了,常常要求10位、12位或14位D/A轉(zhuǎn)換器。

那么,如何把一個(gè)多于8位的D/A轉(zhuǎn)換器接口至U8位的微

型機(jī)呢?

可以把12位分成兩段,第一次微型機(jī)先輸出低8位到鎖

住器,第二次再把另四位送到另一個(gè)鎖存器上,如圖12-5所

O

54H

而要輸出的12位是存儲在兩個(gè)相鄰的單元內(nèi):

地址數(shù)據(jù)位

AD7D6D5D4D3D2DIDO

A+lXXXXDllDIOD9D8

A+2D7D6D5D4D3D2DIDO

A+3XXXXDllDIOD9D8

X為無用的位。

但是,若用圖12-5的電路輸出,則輸出電壓上會出現(xiàn)毛

刺。這是由于,若原來的數(shù)據(jù)為000011110000,下一個(gè)輸

出的值為000100001011,但在輸出過程中是先輸出低8位,

如下所示:

D/AData=000011110000D/AData=000100001011

D/AData=000000001011

數(shù)據(jù)先由000011110000變?yōu)?00000001011,則輸出

電壓要下降;然后再輸出高四位,變?yōu)?00100001011,輸

出電壓再升高,就出現(xiàn)了毛刺。為了解決這個(gè)問題,可以采

用雙緩沖器結(jié)構(gòu),如圖12-6所示。

CPU輸出時(shí),先輸出低8位給緩沖器1(此時(shí)緩沖器2不通,

故輸出不變),然后輸出高兩位。等這兩者都輸出后,再輸

出一個(gè)打開緩沖器2的選通脈沖,把10位同時(shí)輸給D/A轉(zhuǎn)換,

這樣就避免了毛刺。

程序如下:

ORG2000H

START:MOVBX,DATA

MOVCL,64H

DAC:MOVAL,[BX]

OUT54H,AL

INCBX

MOVAL,[BX]

OUT55H,AL

OUT56H,AL

INCBX

DECCL

JNZDAC

JMPSTART

ORG3000H

DATADWWl,W2,???,W1OO;定義100個(gè)字(每個(gè)字10位)

ENDSTART

12.2A/D轉(zhuǎn)換器接口

12.2.1概述

在一個(gè)實(shí)際的系統(tǒng)中,要用微型計(jì)算機(jī)來監(jiān)視和控制過

程中發(fā)生的各種參數(shù),就首先要用傳感器把各種物理參數(shù)

(如壓力、溫度等)測量出來,并且轉(zhuǎn)換為電信號,再經(jīng)過

A/D轉(zhuǎn)換,傳送給微型計(jì)算機(jī);微型計(jì)算機(jī)對各種信號計(jì)算、

加工處理后輸出,經(jīng)過D/A轉(zhuǎn)換再去控制各種參數(shù),其過程

如圖12-14所不。

現(xiàn)場

多路

采樣

一保持一aA/D—微型機(jī)

開關(guān)

模擬

v-D/Av

控制

其中:

(1)傳感器一一把各種現(xiàn)場的物理量測量出來,并且轉(zhuǎn)

換為電信號。

(2)量程放大器——把傳感器的信號(通常為mV?"V級)

放大到A/D轉(zhuǎn)換所需要的量程范圍。

(3)低通濾波器一一降低干擾,增加信擾比。

(4)多路開關(guān)——通常要監(jiān)視和控制的現(xiàn)場信號是很多

的,而且它們的變化是緩慢的,所以沒有必要一種現(xiàn)場信號

就有一個(gè)A/D轉(zhuǎn)換器和占用一條與微型計(jì)算機(jī)聯(lián)系的通路,

而可以利用多路開關(guān),把多個(gè)現(xiàn)場信號,用一條通路來監(jiān)視

和控制。

(5)采樣/保持電路一一因?yàn)楝F(xiàn)場信號總是在變化的,

而A/D轉(zhuǎn)換總是需要一定時(shí)間的,所以,需要把要轉(zhuǎn)換的信

號采樣后保持一段時(shí)間,以備轉(zhuǎn)換。另外,現(xiàn)場信號的變化

是緩慢的,沒有必要始終監(jiān)視,而可以用巡回檢測的辦法,

所以,也要求有采樣/保持電路。

當(dāng)用巡回檢測的辦法來監(jiān)視現(xiàn)場信號時(shí),就存在一個(gè)問

題:應(yīng)該經(jīng)過多長時(shí)間去采樣一次被測信號,使采樣的結(jié)

果能夠反映被測信號,即采樣頻率應(yīng)該多高。采樣定理告訴

我們:采樣頻率至少應(yīng)該大于被測信號頻譜中的最高頻率的

兩倍。

本章主要討論A/D轉(zhuǎn)換。

12.2.2用軟件實(shí)現(xiàn)A/D轉(zhuǎn)換

利用D/A轉(zhuǎn)換器,CPU可用軟件實(shí)現(xiàn)A/D轉(zhuǎn)換。

1.計(jì)數(shù)器式A/D轉(zhuǎn)換

計(jì)數(shù)器式A/D轉(zhuǎn)換可以用硬件實(shí)現(xiàn),如圖12-15所示。也

可以利用一個(gè)D/A轉(zhuǎn)換電路,用軟件實(shí)現(xiàn),如圖12-16所示。

軟件實(shí)現(xiàn)實(shí)際上是用一種類似于線性搜索的辦法,每次

讓一個(gè)鎖存器加1,再把它經(jīng)D/A轉(zhuǎn)換后為V:與輸入模擬電

壓Vx相比較,把比較的結(jié)果用一個(gè)輸入端口輸入,若仍是Vx

>VC,則循環(huán);當(dāng)Vx二Vc時(shí)就停止循環(huán),此時(shí)鎖存器中的數(shù)據(jù)

即為轉(zhuǎn)換所得的結(jié)果。

輸入模擬電壓比較器

D7

其程序如下:

ORG2000H

START:MOVCL,0;用CL作比較用的寄存器,初值為

DALOOP:MOVAL,CL

OUT27H,AL

INAL,15H;輸入比較器的狀態(tài),若Vx>V.

則D5=0

AND20H;屏蔽除D5外的其他位

JNZDONE;D5W0,則轉(zhuǎn)換完成

INCCL

JMPDALOOP

DONE:MOVAL,CL

OUT02H,AL;轉(zhuǎn)換完成數(shù)據(jù)輸出顯示

HALT

但是用上述軟件來實(shí)現(xiàn)轉(zhuǎn)換,比硬件更慢。255步的比

較需要7ms(若CPU為8080A)。顯然轉(zhuǎn)換的位數(shù)越多,時(shí)間就

更長。

所以,用軟件實(shí)現(xiàn)計(jì)數(shù)器式的A/D轉(zhuǎn)換是不實(shí)用的;但

是當(dāng)轉(zhuǎn)換速度要求不高時(shí)硬件實(shí)現(xiàn)的芯片仍然是有用的,它

的成本較低。

2.逐次逼近式A/D轉(zhuǎn)換

用軟件實(shí)現(xiàn)逐次逼近式A/D轉(zhuǎn)換,實(shí)際上是把輸入模擬

電壓Vx作為一個(gè)關(guān)鍵字,用對分搜索的辦法來逼近它。

例如,在8位的情況下,要轉(zhuǎn)換一個(gè)相當(dāng)于數(shù)113的模擬

電壓,搜索過程可用表12-5來描述。

用軟件實(shí)現(xiàn)逐次逼近式A/D轉(zhuǎn)換的流程圖如圖12-17所示。

如果仍然使用圖12-16所示的接口電路,則寄存器AL用

于I/O數(shù)據(jù)傳送和位操作,寄存器DH存放每次試探的數(shù)據(jù),

寄存器DL存放累加的結(jié)果,寄存器CL作為循環(huán)次數(shù)計(jì)數(shù)器。

程序如下:

ORG2000H

START:SUBAL,AL;清AL

MOVDX,8000H;置DH=80H,DL=OOH

MOVCL,8;置循環(huán)次數(shù)

AGAIN:ORAL,DH;建立新試探值

MOVDL,AL;存入DL中

INAL,15H;輸入比較結(jié)果的狀態(tài);

*若VX>VC,則D5=0

ANDAL,20H;屏蔽除D5外的所有位

JZOK;小于VX,轉(zhuǎn)至OK

MOVAL,DH

NOTAL

ANDAL,DL;使新的試探值置0

MOVDL,AL;和一DL

OK:SHRDH,1;移至下一4立試探

MOVAL,DL

DECCL

JNZAGAIN;未完,進(jìn)入下一循環(huán)

DONE:HALT

對于8位的轉(zhuǎn)換,若CPU為8080,時(shí)鐘周期為500ns,則

轉(zhuǎn)換時(shí)間為240〃s。若要求更快轉(zhuǎn)換,則可用硬件實(shí)現(xiàn)的逐

次逼近式轉(zhuǎn)換器。

12.2.3A/D轉(zhuǎn)換芯片介紹

1.8通道8位A/D轉(zhuǎn)換器ADC0809

ADC0809是CMOS的8位單片A/D轉(zhuǎn)換器。片內(nèi)有8路模擬

開關(guān),可控制選擇8個(gè)模擬量中的一個(gè)。A/D轉(zhuǎn)換采用逐次逼

近原理。輸出的數(shù)字信號有TTL三態(tài)緩沖器控制,故可直接

連至數(shù)據(jù)總線。

(1)主要功能

①分辨率為8位;

②總的不可調(diào)誤差在±12LSB?±1LSB范圍內(nèi);

③轉(zhuǎn)換時(shí)間為100〃s;

④具有鎖存控制的8路多路開關(guān);

⑤輸出有三態(tài)緩沖器控制;

⑥單一5V電源供電,此時(shí)模擬電壓輸入范圍為0?5V;

⑦輸出與TTL兼容;

⑧工作溫度范圍為-40℃?85℃。

(2)ADC0809功能方框圖

ADC0809的結(jié)構(gòu)如圖12-18所示。

模擬輸入部分有8路多路開關(guān),可由三位地址輸入ADDA、

ADDB、ADDC的不同組合來選擇(這三條地址輸入信號可鎖存)。

主體部分是采用逐次逼近式的A/D轉(zhuǎn)換電路,由CLK信號

控制內(nèi)部電路的工作,由START信號控制轉(zhuǎn)換開始。轉(zhuǎn)換后

的數(shù)字信號在內(nèi)部鎖存,通過三態(tài)緩沖器接至輸出端。

STARTCLK

QQ

r

-I:OC

控制與時(shí)序

SAR三態(tài)

輸出

鎖存I-X7

緩沖

樹狀開關(guān)器

o

RET(+)REF㈠OE

ADC0809的引腳如圖12-19所示。其中,START為啟動命

令,高電平有效。由它啟動ADC0809內(nèi)部的A/D轉(zhuǎn)換過程。

當(dāng)模/數(shù)轉(zhuǎn)換完成,輸出信號E0C#(EndofConvert)有效(低

電平有效)。0E(OutputEnable)為輸出允許信號,高電平有

效。當(dāng)在此輸入端供給一個(gè)有效信號時(shí),打開輸出三態(tài)緩沖

器,把轉(zhuǎn)換后的結(jié)果輸送至數(shù)據(jù)總線。

1N--------O

3128IN2

IN4------227Z

g——326IN。

IN6——425--------ADDA

IN7------524-------ADDB

START-------6ADC080923-------ADDC

EOC-------722-------ALE

821D°

OE--------920Di

CLK-------

1()19D2

【cc1118E>3

REF(+)--------

1217D7

GND-------1316-------REF(-)

1415

D(,o5

(3)ADC0809時(shí)序

ADC0809的時(shí)序如圖12-20所示。

當(dāng)模擬量送到某一輸入端后,由三位地址信號來選擇,

地址信號由地址鎖存允許ALE(AddressLatchEnable)鎖存。

由啟動命令START啟動轉(zhuǎn)換。轉(zhuǎn)換完成E0C#輸出一個(gè)負(fù)脈沖,

外界的輸出允許信號0E,打開三態(tài)緩沖器把轉(zhuǎn)換的結(jié)果送上

數(shù)據(jù)總線。一次A/D轉(zhuǎn)換的過程就完成了。

2.12位A/D轉(zhuǎn)換器AD7870/AD7875/AD7876

(1)主要功能

AD7870/AD7875/AD7876是一組完全12位8〃s逐次逼近

式A/D轉(zhuǎn)換器。它們由基于快速設(shè)置的電壓輸出DAC、高速

比較器和逐次逼近寄存器(SAR)、采樣保持放大器、時(shí)鐘和

控制邏輯組成。它有一個(gè)自包含的內(nèi)部時(shí)鐘以保證轉(zhuǎn)換時(shí)間

的精確控制,不需要外部時(shí)鐘。若需要的話,內(nèi)部時(shí)鐘也可

被外部時(shí)鐘超越。

整個(gè)操作由±5V電源供電。

AD7870和AD7876分別接收±3V和±10V輸入信號范圍而

AD7875接收單極性的0V?+5V輸入范圍。

(2)AD7870的結(jié)構(gòu)和引腳

其結(jié)構(gòu)如圖12-21所示。

AD7870接收到有效的CONVST命令后,內(nèi)部的逐次逼近寄

存器從最高位開始順次經(jīng)DAC在比較器上與模擬量相比較。

檢測完所有位后,SAR中包含轉(zhuǎn)換后的12位二進(jìn)制碼。

轉(zhuǎn)換完成后,SAR發(fā)出INT信號(低電平有效),打開三態(tài)

緩沖器輸出數(shù)據(jù)。

各個(gè)引腳的功能為:

腳1——RD#讀。輸入,低電平有效。此輸入引腳用于

與低電平有效的CS#相結(jié)合以允許數(shù)據(jù)輸出。

腳2——BUSY#/INT#忙/中斷。低有效,輸出以指示轉(zhuǎn)換

器狀態(tài)。參見時(shí)序圖。

腳3——CLK時(shí)鐘輸入。一外部TTL兼容的時(shí)鐘可以供給

至此輸入腳。若連接此腳至VSS,啟用內(nèi)部時(shí)鐘。

腳4——DBH/HBEN數(shù)據(jù)位H(最高有效位)/高字節(jié)啟

用。此腳的功能取決于12/8/CLK輸入的狀態(tài)。當(dāng)選擇12位并

行數(shù)據(jù)時(shí),此腳提供DBH輸出。當(dāng)選擇字節(jié)數(shù)據(jù)時(shí),此腳變

為HBEN邏輯輸入,用于與8位總線接口。當(dāng)HBEN是低,

DB7/L0W?DB0/DB8變?yōu)镈B7?DBO。若HBEN為高,DB7/L0W到

DB0/DB8用于數(shù)據(jù)的高四位。

腳5——DB10/SSTRB數(shù)據(jù)位10/串行選通。當(dāng)選擇12位數(shù)

據(jù)時(shí),此腳提供DB10輸出。SSTRB是一個(gè)低有效漏極開路輸

出為串行數(shù)據(jù)提供選通或幀脈沖。在SSTRB上需要一個(gè)

4.7kQ的上拉電阻。

腳6——DB9/SCLK數(shù)據(jù)位9/串行時(shí)鐘。當(dāng)選擇12位并行

數(shù)據(jù)時(shí),此腳提供DB9輸出。SCLK是以內(nèi)部或外部ADC時(shí)鐘導(dǎo)

出的可控的串行時(shí)鐘輸出。若12/8/CLK輸入是-5V,于是

SCLK繼續(xù)運(yùn)行。若12/8/CLK是0V,于是SCLK在串行發(fā)送完成

之后關(guān)閉。SCLK是一個(gè)漏極開路輸出并要求外部2kQ上拉電

阻。

腳7——DB8/SDATA數(shù)據(jù)位8/串行數(shù)據(jù)。當(dāng)選擇12位并行

數(shù)據(jù)時(shí),此腳提供DB8輸出。SDATA是一漏極開路串行數(shù)據(jù)輸

出,它與CLK和SSTRB一起用于串行數(shù)據(jù)傳送。當(dāng)SSTRB為低

時(shí),串行數(shù)據(jù)在SCLK的下降沿有放。在SDATA上要求一個(gè)外

部的4.7kQ上拉電阻。

腳8?腳11——DB7/L0W?DB4/L0W由CS和RD控制的三態(tài)

數(shù)據(jù)輸出。它們的功能取決于12/8/CLK和HBEN輸入。

在12/8/CLK高時(shí),它們是DB7?DB4。在12/8/CLK低或一

5V,它們的功能由HBEN控制(見表12-6)。

腳12——DGND數(shù)字地。

腳13?腳16——DB3/DBU-DB0/DB8由CS和RD控制的三

態(tài)數(shù)據(jù)輸出。它們的功能取決于12/8/CLK和HBEN輸入。若

12/8/CLK為高,它們是DB3?DBO。若12/8/CLK為低或-5V,它

們的功能由HBEN控制(見表12-6)。

腳17——VDD正電源,+5V±5%O

腳18——AGND模擬地。

腳19——REFOUT參考電壓輸出。在此腳上提供內(nèi)部3V

參考電壓外部負(fù)載能力是500“A。

腳20——VIN模擬輸入。對于AD7870是±3V,對于

AD7876是±10V,對于AD7875是+5V。

腳21——VSS負(fù)電源,-5V±5%。

腳22——12/8/CLK三功能輸入。定義數(shù)據(jù)格式和串行

時(shí)鐘格式。若此腳為+5V,輸出數(shù)據(jù)是12位并行。若此腳為

0V,或者是字節(jié)或者是串行數(shù)據(jù),且SCLK不連續(xù)。若此腳為

-5V,或者字節(jié)或者串行數(shù)據(jù)但現(xiàn)在SCLK連續(xù)。

腳23——CONVST#啟動轉(zhuǎn)換。在此輸入腳上由低變?yōu)楦?

使采樣/保持處在保持方式并啟動轉(zhuǎn)換。此腳與CLK輸入是異

步的。

腳24——CS#片選,輸入、低有效。當(dāng)此輸入有效,選

中此設(shè)備。若CONVST連接為低,當(dāng)CS#變低,啟動新的轉(zhuǎn)換。

(3)AD7870的操作方式與時(shí)序

AD7870/AD7875/AD7876有兩種基本操作模式:模式1、

模式2。在第一種模式(模式1)中,CONVST#線用于啟動轉(zhuǎn)

換并驅(qū)使采樣/保持電路進(jìn)入保持方式。在轉(zhuǎn)換結(jié)束,采樣/

保持電路返回采樣方式。對于要求在時(shí)間上精確采樣的數(shù)字

信號處理和別的應(yīng)用程序,傾向于用這種模式。對于這種情

況,CONVST#線由定時(shí)器或若干精確時(shí)鐘源驅(qū)動。

第二種模式是把CONVST#線硬連為低而實(shí)現(xiàn)。這種模式

(模式2)傾向用于微處理器同時(shí)控制和啟動ADC轉(zhuǎn)換并讀

數(shù)據(jù)的系統(tǒng)中。CS#啟動轉(zhuǎn)換,在轉(zhuǎn)換間隔由BUSY#/INT#線

使微處理器處在WAIT狀態(tài)。

①模式1接口

轉(zhuǎn)換由在CONVST#輸入腳上的低脈沖啟動。CONVST#脈沖

的上升沿,啟動轉(zhuǎn)換并且驅(qū)使采樣/保持放大器進(jìn)入保持方

式。若CS#是低電平則轉(zhuǎn)換不啟動。在這種模式,

BUSY#/INT#狀態(tài)輸出作為中斷功能。INT#正常是高電平,在

轉(zhuǎn)換結(jié)束時(shí)變低。INT#線能用于中斷微處理器。對ADC的讀

操作訪問數(shù)據(jù)且在CS#和RD#的下降沿INT#線重置為高電平。

為了對這種模式的ADC正確操作,當(dāng)CS#和RD#都變低時(shí),

CONVST#必須為高電平。在這種模式下,CS#和RD#不能硬連

為低。在轉(zhuǎn)換期間不能讀數(shù)據(jù),因?yàn)槠系逆i存器在轉(zhuǎn)換進(jìn)

行中是屏蔽的。

圖12-24給出12位并行數(shù)據(jù)輸出格式(12/8/CLK=+5V)

時(shí)模式1的時(shí)序圖。在轉(zhuǎn)換結(jié)束時(shí)對ADC的讀同時(shí)訪問所有12

位數(shù)據(jù)。對于這種數(shù)據(jù)輸出格式,串行數(shù)據(jù)是不可以用的。

AD7870提供三種數(shù)據(jù)輸出格式:單個(gè)并行的12位字、

兩個(gè)8位字節(jié)或串行數(shù)據(jù)。

并行數(shù)據(jù)格式是對16位數(shù)據(jù)總線提供單12位并行字;對

于8位數(shù)據(jù)總線提供兩個(gè)字節(jié)格式。

數(shù)據(jù)字節(jié)格式由12/8/CLK輸入控制。在此腳上的邏輯

高電平,只選擇12位并行輸出格式。若邏輯低電平或-5V供

給此輸入,允許用戶訪問字節(jié)格式或串行的數(shù)據(jù)。在任一種

操作模式中,這三種數(shù)據(jù)輸出格式都是可選的。

—"11)

CONVST一\一斤采樣保持進(jìn)入保評

CS

RD

?梁杼保恃返回至東杼

?且快測時(shí)間開始

INT

tCONVERT

三念r

DATA

DB11-DBO

?并行輸出格式

在第一種格式中,12位數(shù)據(jù)在DB11?DBO上同時(shí)可用。在

第二種格式中,訪問數(shù)據(jù)要求兩次讀。在選擇了這種格式時(shí),

DB11/HBEN腳作為HBEN(高字節(jié)允許)功能,它選擇從ADC讀

數(shù)據(jù)的哪個(gè)字節(jié)。當(dāng)HBEN為低,在讀操作期間數(shù)據(jù)的低8位

放至數(shù)據(jù)總線;當(dāng)HBEN為高,12位字的高4位放至數(shù)據(jù)總線。

這4位是右對齊的,因此占用低4位而高4位包含4個(gè)0。

?串行輸出格式

在AD7870/AD7875/AD7876上可以輸出串行數(shù)據(jù)。當(dāng)

12/8/CLK輸入是0V或-5V時(shí),DB10/SSTRB、DB9/SCLK和

DB8/SDATA腳起串行功能。串行數(shù)據(jù)是一個(gè)16位的字,4個(gè)前

導(dǎo)3跟著是12位轉(zhuǎn)換的結(jié)果,最高有效位在前。數(shù)據(jù)同步

于串行時(shí)鐘輸出(SCLK)由串行選通(SSTRB)確定一幀。

數(shù)據(jù)當(dāng)SSTRB輸出為低時(shí),在串行時(shí)鐘由低變高時(shí)輸出而在

時(shí)鐘的下降沿有效。SSTRB在CONVST后三個(gè)時(shí)鐘周期內(nèi)變低,

且第一個(gè)串行數(shù)據(jù)位(第一個(gè)前導(dǎo)0)在SCLK的第一個(gè)下降

沿有效。這三個(gè)串行線都是漏極開路并要求外部上拉電阻。

串行時(shí)鐘輸出是以ADC時(shí)鐘源導(dǎo)出的,它可以是內(nèi)部的

或外部的。

對于字節(jié)和串行數(shù)據(jù),模式1的時(shí)序如圖12-25所示。

INT#在轉(zhuǎn)換結(jié)束后變低由CS#和RD#的第一個(gè)下降沿重置

為高。在轉(zhuǎn)換結(jié)束后的第一次讀能訪問數(shù)據(jù)的低字節(jié)或高字

節(jié)取決于HBEN的狀態(tài)。圖12-25同時(shí)顯示了非連續(xù)和連續(xù)的

運(yùn)行時(shí)鐘(虛線)。

DB7-DB0DB11-DB9

sm,

H--------------------11—H

ea?*

iJ

,如T卜d

'髀。'詞

NMTA*

事行救根

②模式2接口

第二種接口模式由硬連CONVST#為低,轉(zhuǎn)換由當(dāng)HBEN為

低使CS#為低啟動的。采樣/保持放大器在CS#的下降沿進(jìn)入

保持方式。在此模式,BUSY#/INT#腳起B(yǎng)USY#功能(作為

8086的READY線)。在轉(zhuǎn)換開始BUSY#變低并且在轉(zhuǎn)換期間保

持為低,當(dāng)轉(zhuǎn)換完成返回高電平。它通常用作并行接口,使

微處理器在轉(zhuǎn)換期間處在WAIT狀態(tài)。

圖12-26顯示12位并行數(shù)據(jù)輸出格式(12/8/CLK二+5V)模

式2時(shí)序圖。在這種情況下,ADC的行為像慢速存儲器。這種

接口的主要優(yōu)點(diǎn)是允許微處理器啟動轉(zhuǎn)換、等待,然后用單

個(gè)讀指令讀數(shù)據(jù)。用戶不需要關(guān)心中斷服務(wù)或保證在轉(zhuǎn)換期

間的延時(shí)。

CS采杼保持進(jìn)入保持

采杼保持返回至保持

且快測時(shí)間開始

三態(tài)

DATA教編)

DB11-DB0

字節(jié)和串行數(shù)據(jù)的模式2時(shí)序如圖12-27所示。對于讀兩

字節(jié),低字節(jié)(DBO?DB7)必須先訪問,因?yàn)橐獑愚D(zhuǎn)換,

HBEN必須為低。

對于第一次讀,ADC的行為像慢速存儲器。但第二次訪

問數(shù)據(jù)的高字節(jié)是正常的讀。串行功能的操作在模式1和模

式2是相同的,如圖12-27所示。

6二

Tq

§二

o

g二

L

e*二?

-二

JTL

-二

gt

l_n

Jgl

Tn興

n

L

JkL「

?

-己

——

4工i

12.2.4A/D轉(zhuǎn)換芯片與CPU

1.A/D轉(zhuǎn)換芯片與CPU接口要注意的問題

(1)啟動信號

A/D轉(zhuǎn)換器要求的啟動信號一般有兩種形式:電平啟動

信號和脈沖啟動信號。

有些A/D轉(zhuǎn)換芯片要求用電平作為啟動信號,整個(gè)轉(zhuǎn)換

過程中都必須保證啟動信號有效,如果中途撤走啟動信號,

就會停止轉(zhuǎn)換而得到錯誤結(jié)果。為此,CPU一般要通過并行

接口來對A/D芯片發(fā)啟動信號,或者用D觸發(fā)器使啟動信號在

A/D轉(zhuǎn)換期間保持在有效電平。

另外一些A/D轉(zhuǎn)換芯片要求用脈沖信號來啟動,對這種

芯片,通常用CPU執(zhí)行輸出指令時(shí)所發(fā)出的片選信號和寫信

號即可在片內(nèi)產(chǎn)生啟動脈沖,從而開始轉(zhuǎn)換。

(2)轉(zhuǎn)換結(jié)束與轉(zhuǎn)換數(shù)據(jù)的讀取

A/D轉(zhuǎn)換結(jié)束時(shí),A/D轉(zhuǎn)換芯片會輸出轉(zhuǎn)換結(jié)束信號,通

知CPU讀取轉(zhuǎn)換數(shù)據(jù)。

CPU一般可以采用以下四種方式和A/D轉(zhuǎn)換器進(jìn)行聯(lián)絡(luò)來

實(shí)現(xiàn)對轉(zhuǎn)換數(shù)據(jù)的讀取。

第一種是程序查詢方式。這種方式的思想就是在啟動

A/D轉(zhuǎn)換器工作之后,程序不斷地讀取A/D轉(zhuǎn)換結(jié)束信號,如

果發(fā)現(xiàn)結(jié)束信號有效,則認(rèn)為完成一次轉(zhuǎn)換,因而用輸入指

令讀取數(shù)據(jù)。

第二種是中斷方式。用這種方式時(shí),把轉(zhuǎn)換結(jié)束信號作

為中斷請求信號,送到中斷控制器(如8259)的中斷請求輸

入端。

第三種是CPU等待方式。這種方式利用CPU的READY引腳

的功能,設(shè)法在A/D轉(zhuǎn)換期間使READY處于低電平,以使CPU

停止工作,轉(zhuǎn)換結(jié)束時(shí),則使READY成為高電平,CPU讀取轉(zhuǎn)

換數(shù)據(jù)。

第四種是固定的延遲程序方式。用這種方式時(shí),要預(yù)先

精確地知道完成一次A/D轉(zhuǎn)換所需要的時(shí)間。這樣,CPU發(fā)出

啟動命令之后,執(zhí)行一個(gè)固定的延遲程序,此程序執(zhí)行完時(shí),

A/D轉(zhuǎn)換也正好結(jié)束,于是CPU讀取數(shù)據(jù)。

如果CPU的轉(zhuǎn)換時(shí)間比較長,或者有幾件事情需要CPU處

理,那么,用中斷方式效率比較高。但是,如果A/D轉(zhuǎn)換時(shí)

間比較短,中斷方式就失去了優(yōu)越性,因?yàn)轫憫?yīng)中斷、保護(hù)

現(xiàn)場、恢復(fù)現(xiàn)場、中斷返回這一系列環(huán)節(jié)所花去的時(shí)間將和

A/D轉(zhuǎn)換的時(shí)間相當(dāng)。此時(shí)可用上述的三種非中斷方式之一

來實(shí)現(xiàn)轉(zhuǎn)換數(shù)據(jù)的讀取。

采用中斷方式時(shí),程序設(shè)計(jì)非常簡單。主程序中,只要

有一條輸出指令即可以啟動A/D轉(zhuǎn)換。假設(shè)A/D轉(zhuǎn)換器的端口

號為PROTAD,則執(zhí)行指令:

OUTPORTAD,AL

后,A/D轉(zhuǎn)換器便開始轉(zhuǎn)換。在這條輸出指令中,寄存

器AL預(yù)先放什么內(nèi)容是無關(guān)緊要的,執(zhí)行這條指令的目的是

為了得到有效的片選信號和寫信號,使A/D轉(zhuǎn)換器啟動。

此后,便開始A/D轉(zhuǎn)換過程。轉(zhuǎn)換結(jié)束后,A/D芯片會輸

出一個(gè)轉(zhuǎn)換結(jié)束信號,此信號產(chǎn)生中斷請求,CPU響應(yīng)中斷

后,便轉(zhuǎn)去執(zhí)行中斷處理程序。中斷處理程序中最主要的指

令是讀取轉(zhuǎn)換結(jié)果的輸入指令:

INAL,PORTAD

這條指令在執(zhí)行時(shí),使三態(tài)輸出門開啟,從而CPU獲得

轉(zhuǎn)換數(shù)據(jù)。

2.8位轉(zhuǎn)換器的接口

當(dāng)A/D轉(zhuǎn)換芯片與CPU接口時(shí),除了數(shù)據(jù)的輸入至CPU外,

與通常的I/O接口一樣,還需要有控制信息和狀態(tài)信息,如

圖12-28所示。

在實(shí)際應(yīng)用時(shí),A/D的模擬輸入端接至采樣/保持電路的

輸出,如圖12-14中所示。但轉(zhuǎn)換的開始,要由CPU用軟件來

控制(輸出一條指令);而轉(zhuǎn)換總是需要一定時(shí)間才能完成,

故A/D轉(zhuǎn)換電路必須給出一個(gè)DONE/BUSY的狀態(tài)信息。

CLOCK

START

ADC

DATA<

DONE一

一個(gè)典型的8位A/D轉(zhuǎn)換的接口電路如圖12-29所示。

其中,輸入輸出接口電路采用8212,顯然也可以采用8255A。

程序如下:

ORG2000H

START:LDBX,DATA

CONV:OUT37H,AL;啟動轉(zhuǎn)換

TET:INAL,66H;輸入狀態(tài)

ANDAL,80H;檢測DONE標(biāo)志

JZTET;未完成,等待

INAL,65H;輸入轉(zhuǎn)換后的數(shù)據(jù)

MOVBX],AL;存入內(nèi)存

RET

ORG3000H

DATA:DS1;給輸入數(shù)據(jù)保留一個(gè)存儲單元

END

上述程序是用查詢方式與A/D交換信息,顯然也可以用

中斷方式,用DONE信息作為中斷請求信號。

一若把ADC0809接至TP801A單板機(jī),其接線如圖12-30所

O

若要把8個(gè)模擬量輪流輸入至內(nèi)存緩沖區(qū),輸入在中斷

服務(wù)程序中執(zhí)行。程序如下:

;主程序

START:MOVBX,DATA;設(shè)輸入緩沖器指針

MOVCH,8

MOVCL,0

STI

MOVAL,CL

OUTPADC,AL

HALT

LOOP:XORAL,AL

INCCL

MOVAL,CL

CMPAL,8

JZDONE

OUTPADC,AL

JMPLOOP

DONE:HALT

;中斷服務(wù)程序

ORG0038H

DWINTSEV

3.10位A/D轉(zhuǎn)換接口

當(dāng)A/D轉(zhuǎn)換的精度要求高時(shí),就要求有10位、12位或更

多位的A/D轉(zhuǎn)換芯片。如何把一個(gè)多于8位的A/D轉(zhuǎn)換芯片與8

位的微型計(jì)算機(jī)接口呢?圖12-31是一個(gè)典型的10位A/D轉(zhuǎn)換

的接口電路。其中,狀態(tài)信號和數(shù)據(jù)的高兩位,用了同一個(gè)

輸入接口芯片8212,只要在程序上加以區(qū)分是不會混淆的。

其程序?yàn)椋?/p>

ORG2000H

ADC:PUSHAX

PUSHBX

MOVBX,ADTA

OUT37H,AL;啟動轉(zhuǎn)換

TEST:INAL,66H;輸入狀態(tài)及高兩位數(shù)據(jù)

ADDAL,80H;檢查D7=l?但不影響DI和DO

JNCTEST;轉(zhuǎn)換未完則等待

MOV[BX+1],AL;存入高位字節(jié)(兩位)

INAL,65H;輸入低8位

MOV[BX],AL

POPBX

POPAX

RET

ORG3000H

DATADS2;為輸入數(shù)據(jù)保留兩個(gè)存儲單元

END

12.2.5D/A和A/D轉(zhuǎn)換應(yīng)用舉例

1.D/A轉(zhuǎn)換舉例

鋸齒波信號廣泛用于示波器的掃描電路,鋸齒波信號一

般是利用阻容電路的充電來實(shí)現(xiàn)的,由于阻容充放電的過程

是近似線性的,所以很難得到一個(gè)線性好的波形,通過D/A

轉(zhuǎn)換電路可以得到線性度相當(dāng)高的波形。圖12-32就是一個(gè)

利用DAC0832芯片實(shí)現(xiàn)鋸齒波信號的電路。

數(shù)

對于圖12-32所示電路,執(zhí)行下面的程序時(shí),就可以產(chǎn)

生一個(gè)鋸齒波信號。

MOVDX,PORTA;PORTA為D/A轉(zhuǎn)換器端口地址

MOVAL,OFFH;初值為OFFH

ROTATE:INCAL

OUTDX,AL;往D/A轉(zhuǎn)換器輸出數(shù)據(jù)

JMPROTATE

2.A/D轉(zhuǎn)換舉例

有一數(shù)據(jù)采集電路如圖12-33所示,圖中ADC0809通過

8255A與8086CPU連接,要求從模擬通道IN0開始轉(zhuǎn)換,連續(xù)

采樣24個(gè)數(shù)據(jù);然后采樣下一個(gè)模擬通道IN1,同樣采樣24

個(gè)數(shù)據(jù);……直至IN7。采樣后的數(shù)據(jù)存放在數(shù)據(jù)段中2000H

開始的數(shù)據(jù)區(qū)中。

EOCD?-D.

WR

OE

8026

ADDA%

ADDB

ADDCA;

M而

ADC

08092

RD

(1)電路分析

地址譯碼器74LS138的地址輸入端C、B、A分別接A4、A3、

A2,GZA#與或門5輸出相連,或門5的輸入為M/IO#和A5,只有

在M/IO#二0時(shí)(即I/O操作)且A5=0才可能使GZA#為有效低電

平,從而使74LS138能正常譯碼。GZB#與與非門6的輸出相連,

而與非門6的輸入為A6A7,只要A6A7為高電平,G?B#才能是有

效的低電平。而G1同A8直接相連,只有當(dāng)A8為高電平時(shí),G1

才為有效的高電平。這樣,從GZA#、GZB#和G1的要求來看,

A8A7A6A5必須為H10且為I/O操作時(shí),才能滿足74LS138的譯

碼條件。

8255A的PA口與ADC0809的數(shù)據(jù)線D7?DO相連,即可從

8255A的PA□讀入轉(zhuǎn)換后的數(shù)字量。8255A的片選端接

74LS138的輸出端Y。#,所以8255A的端口地址為

A8A7A6A5A4A3A2A1AO=U10000XX即1C0H?1C3HO

8255A的PBO同ADC0809的EOC相連,用來檢測ADC0809

是否轉(zhuǎn)換結(jié)束。

ADC0809的通道地址選擇線ADDC、ADDB、ADDA同8086

CPU的AO、Al、A2相連。

74LS138的譯碼輸入地址為A8?A2,因此每一個(gè)輸出端

包含4個(gè)端口地址,而對ADC0809的8個(gè)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論