主要參數
* 解析度為8位;
* 電流穩定時間1us;
* 可單緩衝、雙緩衝或直接數字輸入;
* 只需在滿量程下調整其線性度;
* 單一電源供電(+5V~+15V);
* 低功耗,20mW。
結構
* D0~D7:8位數據輸入線,TTL電平,有效時間應大於90ns(否則鎖存器的數據會出錯);
* ILE:數據鎖存允許控制信號輸入線,高電平有效;
* CS:片選信號輸入線(選通數據鎖存器),低電平有效;
* WR1:數據鎖存器寫選通輸入線,負脈衝(脈寬應大於500ns)有效。由ILE、CS、WR1的邏輯組合產生LE1,當LE1為高電平時,數據鎖存器狀態隨輸入數據線變換,LE1的負跳變時將輸入數據鎖存;
* XFER:數據傳輸控制信號輸入線,低電平有效,負脈衝(脈寬應大於500ns)有效;
* WR2:DAC暫存器選通輸入線,負脈衝(脈寬應大於500ns)有效。由WR2、XFER的邏輯組合產生LE2,當LE2為高電平時,DAC暫存器的輸出隨暫存器的輸入而變化,LE2的負跳變時將數據鎖存器的內容打入DAC暫存器並開始D/A轉換。
* IOUT1:電流輸出端1,其值隨DAC暫存器的內容線性變化;
* IOUT2:電流輸出端2,其值與IOUT1值之和為一常數;
* RFB:反饋信號輸入線,改變Rfb端外接電阻值可調整轉換滿量程精度;
* Vcc:電源輸入端,Vcc的範圍為+5V~+15V;
* VREF:基準電壓輸入線,VREF的範圍為-10V~+10V;
* AGND:模擬信號地;
* DGND:數位訊號地。
工作方式
根據對DAC0832的數據鎖存器和DAC暫存器的不同的控制方式,DAC0832有三種工作方式: 直通方式、 單緩衝方式和 雙緩衝方式。
1、單緩衝方式。單緩衝方式是控制輸入暫存器和DAC暫存器同時接收資料,或者只用輸入暫存器而把DAC暫存器接成直通方式。此方式適用只有一路模擬量輸出或幾路模擬量異步輸出的情形。
2、雙緩衝方式。雙緩衝方式是先使輸入暫存器接收資料,再控制輸入暫存器的輸出資料到DAC暫存器,即分兩次鎖存輸入資料。此方式適用於多個D/A轉換同步輸出的情節。
3、直通方式。直通方式是資料不經兩級鎖存器鎖存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高電平。此方式適用於連續反饋控制線路和不帶微機的控制系統,不過在使用時,必須通過另加I/O接口與CPU連線,以匹配CPU與D/A轉換。
DAC0832引腳功能電路套用原理圖DAC0832是採樣頻率為八位的D/A轉換晶片,積體電路內有兩級輸入暫存器,使DAC0832晶片具備雙緩衝、單緩衝和直通三種輸入方式,以便適於各種電路的需要(如要求多路D/A異步輸入、同步轉換等)。所以這個晶片的套用很廣泛,關於DAC0832套用的一些重要資料見下圖: D/A轉換結果採用電流形式輸出。若需要相應的模擬電壓信號,可通過一個高輸入阻抗的線性運算放大器實現。運放的反饋電阻可通過RFB端引用片內固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電平,可直接與TTL電路或微機電路連線。
特性
1)解析度
解析度它反映了輸出模擬電壓的最小變化值。定義為輸出滿刻度電壓與2n的比值,其中n為DAC的位數。
解析度與輸入數字量的位數有確定的關係。對於5V的滿量程,採用8位的DAC時,解析度為5V/256=19.5mV;當採用10位的DAC時,解析度則為5V/1024=4.88mV。顯然,位數越多解析度就越高。
2)建立時間
建立時間是描述DAC轉換速度快慢的參數。定義為從輸入數字量變化到輸出達到終值誤差±1/2 LSB(最低有效位)所需的時間。
3)接口形式
接口形式是DAC輸入/輸出特性之一。包括輸入數字量的形式:十六進制或BCD,輸入是否帶有鎖存器等。
DAC0832是使用非常普遍的8位D/A轉換器,由於其片內有輸入數據暫存器,故可以直接與單片機接口。
DAC0832以電流形式輸出,當需要轉換為電壓輸出時,可外接運算放大器。屬於該系列的晶片還有DAC0830、DAC0831,它們可以相互代換。
根據數據的輸入過程,單片機與DAC0832有 三種聯接方式:
二級緩衝器連線方式
單級緩衝器連線方式
直通連線方式
套用電路圖
採用DAC0832實現D/A轉換。
DAC0832引腳功能說明:
DI0~DI7:數據輸入線,TTL電平。
ILE:數據鎖存允許控制信號輸入線,高電平有效。
CS:片選信號輸入線,低電平有效。
WR1:為輸入暫存器的寫選通信號。
XFER:數據傳送控制信號輸入線,低電平有效。
WR2:為DAC暫存器寫選通輸入線。
Iout1:電流輸出線。當輸入全為1時Iout1最大。
Iout2: 電流輸出線。其值與Iout1之和為一常數。
Rfb:反饋信號輸入線,晶片內部有反饋電阻.
Vcc:電源輸入線 (+5v~+15v)
Vref:基準電壓輸入線 (-10v~+10v)
AGND:模擬地,摸擬信號和基準電源的參考地.
DGND:數字地,兩種地線在基準電源處共地比較好.
D/A轉換器DAC0832DAC0832是採用CMOS工藝製成的單片直流輸出型8位數/模轉換器。如圖4-82所示,它由倒T型R-2R電阻網路、模擬開關、運算放大器和參考電壓VREF四大部分組成。
由上式可見,輸出的模擬量與輸入的數字量() 成正比,這就實現了從數字量到模擬量的轉換。
一個8位D/A轉換器有8個輸入端(其中每個輸入端是8位二進制數的一位),有一個模擬輸出端。輸入可有28=256個不同的二進制組態,輸出為256個電壓之一,即輸出電壓不是整個電壓範圍內任意值,而只能是256個可能值。圖4-83是DAC0832的邏輯框圖和引腳排列。
數/模(D/A)轉換器
D0~D7:數位訊號輸入端。
ILE:輸入暫存器允許,高電平有效。
CS:片選信號,低電平有效。
WR1:寫信號1,低電平有效。
XFER:傳送控制信號,低電平有效。
WR2:寫信號2,低電平有效。
IOUT1、IOUT2:DAC電流輸出端。
Rfb:是集成在片內的外接運放的反饋電阻。 Vref:基準電壓(-10~10V)。
Vcc:是源電壓(+5~+15V)。
AGND:模擬地 NGND:數字地,可與AGND接在一起使用。
DAC0832輸出的是電流,一般要求輸出是電壓,所以還必須經過一個外接的運算放大器轉換成電壓。
D/A轉換器是接收數字量,輸出一個與數字量相對應的電流或電壓信號的模擬量接口。
D/A轉換器被廣泛用於計算機函式發生器、計算機圖形顯示以及與A/D轉換器相配合的控制系統等。
D/A轉換原理:數字量的值是由每一位的數字權疊加而得的。D/A轉換器品種繁多,有權電阻DAC、變形權電阻DAC、T型電阻DAC、電容型DAC和權電流DAC等。為了掌握數/模轉換原理,必須先了解運算放大器和電阻解碼網路的工作原理和特點。
輸出形式
① 單極性輸出
如圖9-58所示, 由運算放大器進行電流→電壓轉換,使用內部反饋電阻。輸出電壓值VOUT和輸入數字量D的關係:
VOUT = - VREF ×D/256
D = 0~255, VOUT = 0 ~ - VREF ×255/256
VREF = -5V, VOUT =0~5×(255/256)V
VREF = +5V, VOUT = 0 ~ -5×(255/256)V
② 雙極性輸出
如果實際套用系統中要求輸出模擬電壓為雙極性,則需要用轉換電路實現。如圖9-59所示。
其中 R2=R3=2R1
VOUT= 2×VREF×D/256 -VREF= (2D/256-1)VREF
D = 0, VOUT= -VREF;
D = 128, VOUT= 0;
D = 255, VOUT= (2×255/256-1)×VREF= (127/128)VREF
即:輸入數字為0~255時,輸出電壓在- VREF ~+ VREF之間變化。
1. 運算放大器
運算放大器有三個特點:
⑴開環放大倍數非常高,一般為幾千,甚至可高達10萬。在正常情況下,運算放大器所需要的輸入電壓非常小。
⑵輸入阻抗非常大。運算放大器工作時,輸入端相當於一個很小的電壓加在一個很大的輸入阻抗上,所需要的輸入電流也極小。
⑶輸出阻抗很小,所以,它的驅動能力非常大。
2. 由電阻網路和運算放大器構成的D/A轉換器
利用運算放大器各輸入電流相加的原理,可以構成如圖10.7所示的、由電阻網路和運算放大器組成的、最簡單的4位D/A轉換器。圖中,V0是一個有足夠精度的標準電源。運算放大器輸入端的各支路對應待轉換資料的D0,D1,…,Dn-1位。各輸入支路中的開關由對應的數字元值控制,如果數字元為1,則對應的開關閉合;如果數字為0,則對應的開關斷開。各輸入支路中的電阻分別為R,2R,4R,…這些電阻稱為權電阻。
假設,輸入端有4條支路。4條支路的開關從全部斷開到全部閉合,運算放大器可以得到16種不同的電流輸入。這就是說,通過電阻網路,可以把0000B~1111B轉換成大小不等的電流,從而可以在運算放大器的輸出端得到相應大小不同的電壓。如果數字0000B每次增1,一直變化到1111B,那么,在輸出端就可得到一個0~V0電壓幅度的階梯波形。
3. 採用T型電阻網路的D/A轉換器
從圖10.7可以看出,在D/A轉換中採用獨立的權電阻網路,對於一個8位二進制數的D/A轉換器,就需要R,2R,4R,…,128R共8個不等的電阻,最大電阻阻值是最小電阻阻值的128倍,而且對這些電阻的精度要求比較高。如果這樣的話,從工藝上實現起來是很困難的。所以,n個如此獨立輸入支路的方案是不實用的。
在DAC電路結構中,最簡單而實用的是採用T型電阻網路來代替單一的權電阻網路,整個電阻網路只需要R和2R兩種電阻。在積體電路中,由於所有的組件都做在同一晶片上,電阻的特性可以做得很相近,而且精度與誤差問題也可以得到解決。
圖10.8是採用T型電阻網路的4位D/A轉換器。4位元待轉換資料分別控制4條支路中開關的倒向。在每一條支路中,如果(資料為0)開頭倒向左邊,支路中的電阻就接到地;如果(資料為1)開關倒向右邊,電阻就接到虛地。所以,不管開關倒向哪一邊,都可以認為是接“地”。不過,只有開關倒向右邊時,才能給運算放大器輸入端提供電流。
T型電阻網路中,節點A的左邊為兩個2R的電阻並聯,它們的等效電阻為R,節點B的左邊也是兩個2R的電阻並聯,它們的等效電阻也是R,…,依次類推,最後在D點等效於一個數值為R的電阻接在參考電壓VREF上。這樣,就很容易算出,C點、B點、A點的電位分別為-VREF/2,-VREF/4,-VREF/8。
在清楚了電阻網路的特點和各節點的電壓之後,再來分析一下各支路的電流值。開關S3,S2,S1,S0分別代表對應的1位二進制數。任一資料位Di=1,表示開關Si倒向右邊;Di=0,表示開關Si倒向左邊,接虛地,無電流。當右邊第一條支路的開關S3倒向右邊時,運算放大器得到的輸入電流為-VREF/(2R),同理,開關S2,S1,S0倒向右邊時,輸入電流分別為-VREF/(4R),-VREF/(8R),-VREF/(16R)。
如果一個二進制數據為1111,運算放大器的輸入電流
I=-VREF/(2R)-VREF/(4R)-VREF/(8R)-VREF/(16R)
=-VREF/(2R)(20+2-1+2-2+2-3)
=-VREF/(24R)(23+22+21+20)
相應的輸出電壓
V0=IR0=-VREFR0(24R)(23+22+21+20)
將資料推廣到n位,輸出模擬量與輸入數字量之間關係的一般表達式為:
V0=-VREFR0/(2nR)(Dn-12n-1+Dn-2 2n-2+…+D121+D020) (Di=1或0)
上式表明,輸出電壓V0除了和待轉換的二進制數成比例外,還和網路電阻R、運算放大器反饋電阻R0、標準參考電壓VREF有關。
2. D/A轉換器性能參數
在實現D/A轉換時,主要涉及下面幾個性能參數。
⑴ 解析度。解析度是指最小輸出電壓(對應於輸入數字量最低位增1所引起的輸出電壓增量)和最大輸出電壓(對應於輸入數字量所有有效位全為1時的輸出電壓)之比,
例如,4位DAC的解析度為1/(16-1)=1/15=6.67%(解析度也常用百分比來表示)。8位DAC的解析度為1/255=0.39%。顯然,位數越多,解析度越高。
⑵轉換精度。如果不考慮D/A轉換的誤差,DAC轉換精度就是解析度的大小,因此,要獲得高精度的D/A轉換結果,首先要選擇有足夠高解析度的DAC。
D/A轉換精度分為絕對和相對轉換精度,一般是用誤差大小表示。DAC的轉換誤差包括零點誤差、漂移誤差、增益誤差、噪聲和線性誤差、微分線性誤差等綜合誤差。
絕對轉換精度是指滿刻度數字量輸入時,模擬量輸出接近理論值的程度。它和標準電源的精度、權電阻的精度有關。相對轉換精度指在滿刻度已經校準的前提下,整個刻度範圍內,對應任一模擬量的輸出與它的理論值之差。它反映了DAC的線性度。通常,相對轉換精度比絕對轉換精度更有實用性。
相對轉換精度一般用絕對轉換精度相對於滿量程輸出的百分數來表示,有時也用最低位(LSB)的幾分之幾表示。例如,設VFS為滿量程輸出電壓5V,n位DAC的相對轉換精度為±0.1%,則最大誤差為±0.1%VFS=±5mV;若相對轉換精度為±1/2LSB,LSB=1/2n,則最大相對誤差為±1/2n+1VFS。
⑶非線性誤差。D/A轉換器的非線性誤差定義為實際轉換特性曲線與理想特性曲線之間的最大偏差,並以該偏差相對於滿量程的百分數度量。轉換器電路設計一般要求非線性誤差不大於±1/2LSB。
⑷轉換速率/建立時間。 轉換速率實際是由建立時間來反映的。建立時間是指數字量為滿刻度值(各位全為1)時,DAC的模擬輸出電壓達到某個規定值(比如,90%滿量程或±1/2LSB滿量程)時所需要的時間。
建立時間是D/A轉換速率快慢的一個重要參數。很顯然,建立時間越大,轉換速率越低。不同型號DAC的建立時間一般從幾個毫微秒到幾個微秒不等。若輸出形式是電流,DAC的建立時間是很短的;若輸出形式是電壓,DAC的建立時間主要是輸出運算放大器所需要的回響時間。
10.3.3 DAC0832及接口電路
DAC0832是美國資料公司研製的8位雙緩衝器D/A轉換器。晶片內帶有資料鎖存器,可與數據匯流排直接相連。電路有極好的溫度跟隨性,使用了COMS電流開關和控制邏輯而獲得低功耗、低輸出的泄漏電流誤差。晶片採用R-2RT型電阻網路,對參考電流進行分流完成D/A轉換。轉換結果以一組差動電流IOUT1和IOUT2輸出。
1.DAC0832 的內部結構
DAC0832中有兩級鎖存器,第一級鎖存器稱為輸入暫存器,它的鎖存信號為ILE;第二級鎖存器稱為DAC暫存器,它的鎖存信號為傳輸控制信號 。因為有兩級鎖存器,DAC0832可以工作在雙緩衝器方式,即在輸出模擬信號的同時採集下一個數字量,這樣能有效地提高轉換速度。此外,兩級鎖存器還可以在多個D/A轉換器同時工作時,利用第二級鎖存信號來實現多個轉換器同步輸出。
ILE為高電平、WR1 和 CS為低電平時, LE1為高電平,輸入暫存器的輸出跟隨輸入而變化;此後,當WR1 由低變高時, LE1為低電平,資料被鎖存到輸入暫存器中,這時的輸入暫存器的輸出端不再跟隨輸入資料的變化而變化。對第二級鎖存器來說, WR2和XFER 同時為低電平時, LE2為高電平,DAC暫存器的輸出跟隨其輸入而變化;此後,當WR2 由低變高時, LE2變為低電平,將輸入暫存器的資料鎖存到DAC暫存器中。
2. DAC0832 的引腳特性
DAC0832是20引腳的雙列直插式晶片。各引腳的特性如下:
CS——片選信號,和允許鎖存信號ILE組合來決定 是否起作用,低有效。
ILE——允許鎖存信號,高有效。
WR1——寫信號1,作為第一級鎖存信號,將輸入資料鎖存到輸入暫存器(此時, 必須和 、ILE同時有效),低有效。
WR2——寫信號2,將鎖存在輸入暫存器中的資料送到DAC暫存器中進行鎖存(此時,傳輸控制信號 必須有效)低有效。
XFER——傳輸控制信號,低有效。
DI7~DI0——8位數據輸入端。
IOUT1——模擬電流輸出端1。當DAC暫存器中全為1時,輸出電流最大,當DAC暫存器中全為0時,輸出電流為0。
IOUT2——模擬電流輸出端2。IOUT1+IOUT2=常數。
Rfb——反饋電阻引出端。DAC0832內部已經有反饋電阻,所以,RFB端可以直接接到外部運算放大器的輸出端。相當於將反饋電阻接在運算放大器的輸入端和輸出端之間。
VREF——參考電壓輸入端。可接電壓範圍為±10V。外部標準電壓通過VREF與T型電阻網路相連。
VCC——晶片供電電壓端。範圍為+5V~+15V,最佳工作狀態是+15V。
AGND——模擬地,即模擬電路接地端。
DGND——數字地,即數字電路接地端。
3.DAC0832 的工作方式
DAC0832 進行D/A 轉換,可以採用兩種方法對數據進行鎖存。
第一種方法是使輸入暫存器工作在鎖存狀態,而DAC暫存器工作在直通狀態。具體地說,就是使 和 都為低電平,DAC暫存器的鎖存選通端得不到有效電平而直通;此外,使輸入暫存器的控制信號ILE處於高電平、 處於低電平,這樣,當 端來一個負脈衝時,就可以完成1次轉換。
第二種方法是使輸入暫存器工作在直通狀態,而DAC暫存器工作在鎖存狀態。就是使 和 為低電平,ILE為高電平,這樣,輸入暫存器的鎖存選通信號處於無效狀態而直通;當WR2 和XFER 端輸入1個負脈衝時,使得DAC暫存器工作在鎖存狀態,提供鎖存數據進行轉換。
根據上述對DAC0832的輸入暫存器和DAC暫存器不同的控制方法, DAC0832 有如下3 種工作方式:
⑴ 單緩衝方式。單緩衝方式是控制輸入暫存器和DAC暫存器同時接收資料,或者只用輸入暫存器而把DAC暫存器接成直通方式。此方式適用只有一路模擬量輸出或幾路模擬量異步輸出的情形。
⑵雙緩衝方式。雙緩衝方式是先使輸入暫存器接收資料,再控制輸入暫存器的輸出資料到DAC暫存器,即分兩次鎖存輸入資料。此方式適用於多個D/A轉換同步輸出的情節。
⑶直通方式。直通方式是資料不經兩級鎖存器鎖存,即 CS*,XFER* ,WR1* ,WR2* 均接地,ILE接高電平。此方式適用於連續反饋控制線路和不帶微機的控制系統,不過在使用時,必須通過另加I/O接口與CPU連線,以匹配CPU與D/A轉換。
4. DAC0832 的套用舉例
⑴DAC0832實現一次D/A轉換,可以採用下面程式段。設定要轉換的數據放在1000H單元中。
MOV BX,100H
MOV AL,[BX] ;取轉換資料
OUT DX,AL
⑵在實際套用中,經常需要用到一個線性增長的電壓去控制某一個檢測過程,或者作為掃描電壓去控制一個電子束的移動。執行下面的程式段,利用D/A轉換器產生一個鋸齒波電壓,實現此類控制作用。
MOV DX,PORTA ;PORTA為D/A轉換器連線埠地址
MOV AL,OFFH ;置初值
ROTAT :INC AL
OUT DX,AL ;往D/A轉換器輸出資料
CALL DELP ;調用延遲子程式
JMP ROTAT
DELY: MOV CX, DATA ;置延遲常數DATA
DELY1: LOOP DELY1
RET
如果需要一個負向的鋸齒波,只要將指令INC AL改成DEC AL就可以了。
⑶從兩個不相關的檔案中輸出一批X-Y資料,驅動X-Y記錄儀,或者控制加工複雜零件的走刀(X軸)和進刀(Y軸)。這些在控制過程中是很有用的。下面程式驅動X-Y記錄儀的100點輸出,並用軟體驅動記錄儀的抬筆和放筆控制。
MOV SI, XDATA ;X軸資料指針→SI
MOV DI, YDATA ;Y軸資料指針→DI
MOV CX, 100
WE0 : MOV AL,[SI]
OUT PORTX, AL ;往X軸的D/A轉換器輸出資料
MOV AL ,[DI]
OUT PORTY ,AL;往Y軸的D/A轉換器輸出資料
CALL DELY1 ;調延遲子程式1,等待筆移動
MOV AL ,01H
OUT PORTM ,AL;輸出升脈衝,控制筆放下
CALL DELY2 ;調延遲子程式2,等待完成
MOV AL ,00H
OUT PORTM ,AL;輸出降脈衝,控制筆抬起
CALL DELY2 ;調延遲子程式2,等待完成
INC SI
INC DI
LOOP WE0
HLT
DELY1 :┇
RET
DELY2 :┇
RET
XDATA DB …
YDATA DB …
(4).利用C語言編程:
#pragma db oe sb
#i nclude<reg51.h>
#i nclude<absacc.h>
#define DAC0832 XBYTE[0x7fff] /* 定義DAC0832連線埠地址 */
#define uchar unsigned char
void delay(uchar t) { /* 延時函式 */
while(t--);
}
void saw(void) { /* 鋸齒波發生函式 */
uchar i;
for (i=0;i<255;i++) {
DAC0832=i;
}
}
void square(void) { /* 方波發生函式 */
DAC0832=0x00;
delay(0x10);
DAC0832=0xff;
delay(0x10);
}
void main(void) {
uchar i,j;
i=j=0xff;
while(i--) {
saw(); /* 產生一段鋸齒波 */
}
while(j--) {
square(); /* 產生一段方波 */
}
}