在電子技術(shù)領(lǐng)域,單片機(jī) D/A 轉(zhuǎn)換器接口是一個(gè)至關(guān)重要的部分。D/A 轉(zhuǎn)換器的輸入為數(shù)字量,經(jīng)轉(zhuǎn)換后輸出為模擬量。有關(guān) D/A 轉(zhuǎn)換器的技術(shù)性能指標(biāo)眾多,如精度、相對(duì)精度、線性度、輸出電壓范圍、輸入數(shù)字代碼種類(lèi)等等。下面我們將對(duì)幾個(gè)與接口有關(guān)的指標(biāo)作詳細(xì)介紹。
- 分辨率:分辨率是 D/A 轉(zhuǎn)換器對(duì)輸入量變化敏感程度的描述,它與輸入數(shù)字量的位數(shù)密切相關(guān)。如果數(shù)字量的位數(shù)為 n,則 D/A 轉(zhuǎn)換器的分辨率為 2??。分辨率越高,意味著 D/A 轉(zhuǎn)換器能夠更地分辨輸入數(shù)字量的微小變化,從而輸出更細(xì)膩的模擬量。例如,一個(gè) 8 位的 D/A 轉(zhuǎn)換器,其分辨率為 2?? = 1/256,而一個(gè) 12 位的 D/A 轉(zhuǎn)換器,分辨率則為 2?12 = 1/4096,顯然 12 位的 D/A 轉(zhuǎn)換器分辨率更高,能實(shí)現(xiàn)更精準(zhǔn)的模擬量輸出。
- 建立時(shí)間:建立時(shí)間是描述 D/A 轉(zhuǎn)換速度的一個(gè)重要參數(shù),具體是指從輸入數(shù)字量變化到輸出達(dá)到終值誤差 ±1/2LSB(有效位)時(shí)所需的時(shí)間。通常以建立時(shí)間來(lái)表明轉(zhuǎn)換速度,建立時(shí)間越短,轉(zhuǎn)換速度越快。在一些對(duì)實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)景中,如高速數(shù)據(jù)采集與處理系統(tǒng),需要選擇建立時(shí)間短的 D/A 轉(zhuǎn)換器,以確保能夠及時(shí)準(zhǔn)確地完成數(shù)字量到模擬量的轉(zhuǎn)換。
- 接口形式:D/A 轉(zhuǎn)換器主要分為兩類(lèi),一類(lèi)不帶鎖存器,另一類(lèi)則帶鎖存器。對(duì)于不帶鎖存器的 D/A 轉(zhuǎn)換器,為了保存單片機(jī)的轉(zhuǎn)換數(shù)據(jù),在接口處需要額外添加鎖存器。這是因?yàn)閱纹瑱C(jī)輸出的數(shù)字量可能會(huì)快速變化,如果沒(méi)有鎖存器,D/A 轉(zhuǎn)換器可能無(wú)法及時(shí)處理這些變化的數(shù)據(jù),導(dǎo)致輸出的模擬量不準(zhǔn)確。而帶鎖存器的 D/A 轉(zhuǎn)換器則可以在一定程度上避免這個(gè)問(wèn)題,提高數(shù)據(jù)處理的穩(wěn)定性。
DAC0832 是一款 8 位電流輸出型 D/A 轉(zhuǎn)換器,具有單電源供電的特點(diǎn),在 + 5~+15V 范圍內(nèi)均可正常工作。其基準(zhǔn)電壓的范圍為 ±10 V , 電流建立時(shí)間為 1 μs ,采用 CMOS 工藝,具有低功耗 20 mW 的優(yōu)點(diǎn)。

圖 1 DAC0832 內(nèi)部結(jié)構(gòu)框圖
該轉(zhuǎn)換器由輸入寄存器和 DAC 寄存器構(gòu)成兩級(jí)數(shù)據(jù)輸入鎖存。在使用時(shí),數(shù)據(jù)輸入可以采用兩級(jí)鎖存(雙緩沖)形式、單級(jí)鎖存(單緩沖)形式,也可采用直接輸入(直通)形式。由 3 個(gè)與門(mén)電路組成寄存器輸出控制電路,可直接進(jìn)行數(shù)據(jù)鎖存控制:當(dāng) LE = 0 時(shí),輸入數(shù)據(jù)被鎖存;當(dāng) LE = 1 時(shí),數(shù)據(jù)不鎖存,鎖存器的輸出跟隨輸入變化。
DAC0832 為電流輸出形式,其兩個(gè)輸出端的關(guān)系為 IOUT1 + IOUT2 = 常數(shù)。為了得到電壓輸出,可在電流輸出端接一個(gè)運(yùn)算放大器,如圖 2 所示。需要指出的是,DAC0832 內(nèi)部已有反饋電阻,其阻值為 15kΩ。

圖 2 DAC0832 引腳圖
DAC0832 轉(zhuǎn)換器芯片為 20 腳雙列直插式封裝,各引腳的功能如下:
- DI7 ~ DI0:轉(zhuǎn)換數(shù)據(jù)輸入端,用于接收單片機(jī)輸出的數(shù)字量。
- CS:片選信號(hào),輸入,低電平有效,用于選擇該 DAC0832 芯片。
- ILE :數(shù)據(jù)鎖存允許信號(hào),輸入,高電平有效,控制數(shù)據(jù)是否可以鎖存。
- WR1 、WR2:寫(xiě)信號(hào) 1 和 2 ,輸入,低電平有效,用于控制數(shù)據(jù)的寫(xiě)入操作。

圖 3 DAC0832 的引腳圖 - XFER:數(shù)據(jù)傳輸控制信號(hào),輸入,低電平有效,用于控制數(shù)據(jù)從輸入寄存器傳輸?shù)?DAC 寄存器。
- IOUT1:電流輸出 1 ,當(dāng) DAC 寄存器中各位全為 “1” 時(shí) ,電流;為全 “0” 時(shí) ,電流為 0 。
- IOUT2:電流輸出 2 ,電路中保證 IOUT1 + IOUT2 = 常數(shù)。
- Rfb :反饋電阻端,片內(nèi)集成電阻為 15kΩ,用于與外接運(yùn)算放大器配合實(shí)現(xiàn)電壓輸出。
- VREF :參考電壓,可正可負(fù),范圍為 - 10~ + 10V ,為 D/A 轉(zhuǎn)換提供參考電壓。
- DGND:數(shù)字量地,為數(shù)字電路部分提供接地參考。
- AGND:模擬量地,為模擬電路部分提供接地參考。
DAC0832 與 8031 有兩種基本的接口方式:?jiǎn)尉彌_方式和雙緩沖方式。
- 單緩沖方式:?jiǎn)尉彌_方式接口電路如圖 4 所示。讓 ILE 接 + 5V,CS 和 XFER 與地址選擇線 P2.7 相連接。當(dāng)?shù)刂愤x擇線選通 DAC0832 后,只要輸出 WR 信號(hào),DAC0832 就能一步完成數(shù)字量的輸入鎖存和 D/A 的轉(zhuǎn)換輸出。執(zhí)行下面的幾條指令就能完成 D/A 轉(zhuǎn)換。

圖 4 DAC0832 單緩沖方式接口電路

- 雙緩沖方式:對(duì)于多路 D/A 轉(zhuǎn)換接口,要求同步進(jìn)行 D/A 轉(zhuǎn)換輸出時(shí),必須采用雙緩沖方式。DAC0832 數(shù)字量輸入鎖存和 D/A 轉(zhuǎn)換輸出是分兩步完成的,即 CPU 的數(shù)據(jù)總線分時(shí)輸入數(shù)字量并鎖存在各 D/A 轉(zhuǎn)換器的輸入寄存器中,然后 CPU 對(duì)所有 D/A 轉(zhuǎn)換器發(fā)出控制信號(hào),使各輸入寄存器中的數(shù)據(jù)輸入相應(yīng)的 DAC 寄存器,實(shí)現(xiàn)同步轉(zhuǎn)換輸出。圖 5 是一個(gè)兩路同步輸出的 D/A 轉(zhuǎn)換接口電路。執(zhí)行下面的指令,能完成兩路 D/A 的同步轉(zhuǎn)換輸出。

圖 5 DAC0832 雙緩沖方式接口電路

D/A 轉(zhuǎn)換器可以應(yīng)用在許多場(chǎng)合,這里介紹用 D/A 轉(zhuǎn)換器產(chǎn)生階梯波。階梯波是在一定的時(shí)間范圍內(nèi)每隔一段時(shí)間,輸出幅度遞增一個(gè)恒定值。在圖 6 中,每隔 1ms 輸出幅度增長(zhǎng)一個(gè)定值,經(jīng) 10ms 后重新循環(huán)。用 DAC0832 在單緩沖方式下就可輸出這樣的波形(接口電路見(jiàn)圖 6)。

圖 6 產(chǎn)生階梯波的接口電路
產(chǎn)生階梯波的程序如下:
