《單片機(jī)應(yīng)用與設(shè)計》課件項目四_第1頁
《單片機(jī)應(yīng)用與設(shè)計》課件項目四_第2頁
《單片機(jī)應(yīng)用與設(shè)計》課件項目四_第3頁
《單片機(jī)應(yīng)用與設(shè)計》課件項目四_第4頁
《單片機(jī)應(yīng)用與設(shè)計》課件項目四_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項目四單片機(jī)的A/D和D/A電路

4.1單片機(jī)的A/D電路4.2常用ADC簡介4.3單片機(jī)的D/A電路4.4常用DAC簡介制作指南4A/D和D/A電路制作指南本章知識總結(jié)學(xué)習(xí)目標(biāo)

了解A/D、D/A的基本概念和主要參數(shù);

掌握ADC0804、DAC0832的功能及應(yīng)用;

掌握ADC0804、DAC0832與單片機(jī)之間的硬件電路的連接和程序編寫;

掌握查看芯片數(shù)據(jù)手冊的方法;

熟練掌握ADC0804、DAC0832的典型應(yīng)用方法。

能力目標(biāo)

能夠根據(jù)實(shí)際需求,選擇相應(yīng)的AD、DA芯片,并能根據(jù)相關(guān)資料,設(shè)計出與單片機(jī)連接的電路;掌握用單片機(jī)控制AD、DA芯片的控制方法。

4.1單片機(jī)的A/D電路

單片機(jī)本身只能處理數(shù)字信號,但在實(shí)際應(yīng)用中,很多情況下都需要對模擬信號進(jìn)行處理,如果想要測量模擬信號,則需要將模擬信號轉(zhuǎn)換成數(shù)字信號,再送單片機(jī)進(jìn)行處理,這就是A/D電路。如果是想要用單片機(jī)輸出一個模擬量,則需要將單片機(jī)輸出的數(shù)字量轉(zhuǎn)換成模擬量,這就是D/A電路。

4.1.1A/D轉(zhuǎn)換的基本概念

A/D轉(zhuǎn)換就是模/數(shù)轉(zhuǎn)換,即把模擬信號轉(zhuǎn)換成數(shù)字信號。能完成A/D轉(zhuǎn)換的電路,叫做模/數(shù)轉(zhuǎn)換器,簡稱ADC(AnalogtoDigitalConverter)。

1.?A/D轉(zhuǎn)換的步驟

A/D轉(zhuǎn)換的一般步驟是將連續(xù)的模擬信號轉(zhuǎn)換為離散的數(shù)字信號,通常的轉(zhuǎn)換過程為取樣、保持、量化和編碼。

1)取樣與保持

取樣是將時間上連續(xù)變化的信號轉(zhuǎn)換為時間上離散的信號,即將時間上連續(xù)變化的模擬信號轉(zhuǎn)換為一系列等間隔的脈沖,脈沖的幅度取決于輸入模擬信號,波形如圖4.1所示。圖4.1采樣波形圖由于采樣脈沖的寬度很小,需要在取樣之后加一個保持電路,保持電路實(shí)際上就是一個存儲電路,所以通常利用電容器C的存儲電荷(電壓)的作用以保持樣值脈沖,如圖4.2

所示。圖4.2采樣保持電路

2)量化與編碼

將采樣電壓轉(zhuǎn)化為數(shù)字量最小數(shù)量單位的整數(shù)倍,這個轉(zhuǎn)化過程叫量化,所規(guī)定的最小數(shù)量單位叫作量化單位,用S表示。將量化的數(shù)值用二進(jìn)制代碼表示,稱為編碼。這個二進(jìn)制代碼便是A/D轉(zhuǎn)換器的輸出信號。

量化的方法有兩種,一種是最小數(shù)量單位為1/8?V,另外一種是最小數(shù)量單位為2/15?V,如圖4.3所示。圖4.31/8?V和2/15?V量化4.1.2ADC的分類

ADC有積分型、逐次比較型、并行比較型/串并行比較型、Σ-Δ調(diào)制型等類型。

積分型的ADC工作原理是將輸入電壓轉(zhuǎn)換成時間(脈沖寬度信號)或頻率(脈沖頻率),然后由定時器/計數(shù)器獲得數(shù)字值。

逐次比較型ADC由一個比較器和DAC通過逐次比較邏輯構(gòu)成,從MSB(最高有效位)開始,順序地對每一位將輸入電壓與內(nèi)置DAC輸出進(jìn)行比較,經(jīng)n次比較而輸出數(shù)字值。

并行比較型ADC采用多個比較器,僅作一次比較而實(shí)行轉(zhuǎn)換,又稱FLash(快速)型。由于其轉(zhuǎn)換速率極高,n位的轉(zhuǎn)換需要2n?-?1個比較器,因此電路規(guī)模大,價格高,只適用于視頻ADC等速度特別高的領(lǐng)域。串并行比較型ADC結(jié)構(gòu)上介于并行型和逐次比較型之間,最典型的是由2個n/2位的并行型ADC配合DAC組成,用兩次比較實(shí)行轉(zhuǎn)換,所以稱為Halfflash(半快速)型。并行比較型ADC采用多個比較器,僅作一次比較而實(shí)行轉(zhuǎn)換,又稱Flash(快速)型。

Σ-Δ型ADC由積分器、比較器、1位DAC和數(shù)字濾波器等組成。其原理上跟積分型相似,將輸入電壓轉(zhuǎn)換成時間(脈沖寬度)信號,用數(shù)字濾波器處理后得到數(shù)字值。4.1.3ADC的主要參數(shù)

ADC的主要參數(shù)說明如下:

(1)分辨率:數(shù)字量變化一個最小量時模擬信號的變化量,定義為滿刻度與2n的比值。分辨率又稱精度,通常以數(shù)字信號的位數(shù)來表示。

(2)轉(zhuǎn)換速率(ConversionRate):完成一次從模擬轉(zhuǎn)換到數(shù)字的A/D轉(zhuǎn)換所需的時間的倒數(shù)。積分型ADC的轉(zhuǎn)換時間是毫秒級屬低速A/D轉(zhuǎn)換,逐次比較型ADC是微秒級屬中速A/D轉(zhuǎn)換,并行比較型/串并行比較型ADC可達(dá)到納秒級。另外,采樣時間是指兩次轉(zhuǎn)換的時間間隔。為了保證轉(zhuǎn)換的正確完成,采樣速率(SampleRate)必須小于或等于轉(zhuǎn)換速率。因此有人習(xí)慣上將轉(zhuǎn)換速率在數(shù)值上等同于采樣速率也是可以接受的。常用單位是ks/s和Ms/s,分別表示千次采樣每秒和百萬次采樣每秒。

(3)量化誤差(QuantizingError):ADC的有限分辨率而引起的誤差,即有限分辨率ADC的階梯狀轉(zhuǎn)移特性曲線與無限分辨率ADC(理想ADC)的轉(zhuǎn)移特性曲線(直線)之間的最大偏差。通常是1個或半個最小數(shù)字量的模擬變化量,表示為1LSB、1/2LSB。

(4)偏移誤差(OffsetError):輸入信號為零時輸出信號不為零的值,可外接電位器調(diào)至最小。

(5)滿刻度誤差(FullScaleError):滿刻度輸出時對應(yīng)的輸入信號與理想輸入信號值之差。

(6)線性度(Linearity):實(shí)際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏移。

4.2常用ADC簡介

4.2.1常用ADC

常用的ADC有積分型、逐次逼近型、并行比較型等,其中逐次逼近型ADC的轉(zhuǎn)換速度快,轉(zhuǎn)換精度高,價格適中,目前是最常用的ADC。如TLC0831、ADC0804、ADC0809。

4.2.2ADC0804的技術(shù)指標(biāo)

ADC0804的主要技術(shù)指標(biāo)如下:

(1)高阻抗?fàn)顟B(tài)輸出;

(2)分辨率:8位(0~255);

(3)存取時間:135ms;

(4)轉(zhuǎn)換時間:100ms;

(5)總誤差:-1LSB~+1LSB;

(6)工作溫度:ADC0804C為0~70℃;ADC0804L為-40℃~85℃;

(7)模擬輸入電壓范圍:0~5?V;

(8)參考電壓:2.5?V;

(9)工作電壓:5?V;

(10)輸出為三態(tài)結(jié)構(gòu)。4.2.3ADC0804的引腳

ADC0804一共有20個引腳,雙列直插式封裝,如圖4.4所示。

ADC0804各引腳功能如下:

:芯片片選信號,低電平有效,即=?0,該芯片才能正常工作。在外接多個ADC0804芯片時,該信號可以作為選擇地址使用,通過不同的地址信號使能不同的ADC0804芯片,從而可以實(shí)現(xiàn)多個ADC通道的分時復(fù)用。

:啟動ADC0804進(jìn)行ADC采樣。該信號低電平有效,即信號由高電平變成低電平時,觸發(fā)一次A/C轉(zhuǎn)換。圖4.4ADC0804的引腳:低電平有效,即=?0時,可以通過數(shù)據(jù)端口DB0~DB7讀出本次的采樣結(jié)果。

VIN(+)和VIN(-):模擬電壓輸入接VIN(+)端,VIN(-)端接地。雙邊輸入時VIN(+)、VIN(-)分別接模擬電壓信號的正端和負(fù)端。當(dāng)輸入的模擬電壓信號存在“零點(diǎn)漂移電壓”時,可在VIN(-)接一等值的零點(diǎn)補(bǔ)償電壓,變換時將自動從VIN(+)中減去這一電壓。

VREF/2:參考電壓接入引腳。該引腳可外接電壓,也可懸空,若接外界電壓,則ADC的參考電壓為該外界電壓的兩倍;若不外接,則VREF與VCC共用電源電壓,此時ADC的參考電壓即為電源電壓VCC的值。

CLKR和CLKIN:外接RC電路產(chǎn)生模數(shù)轉(zhuǎn)換器所需的時鐘信號,時鐘頻率CLK=,一般要求頻率范圍100?kHz~1.28?MHz。

AGND和DGND:分別接模擬地和數(shù)字地。

:中斷請求信號輸出引腳,該引腳低電平有效,當(dāng)一次A/D轉(zhuǎn)換完成后,將引起=?0。實(shí)際應(yīng)用時,該引腳應(yīng)與微處理器的外部中斷輸入引腳相連(如51單片機(jī)的INT0,INT1腳),當(dāng)產(chǎn)生信號有效時,還需等待

=?0才能正確讀出A/D轉(zhuǎn)換結(jié)果,若ADC0804單獨(dú)使用,則可以將引腳懸空。

DB0~DB7:輸出A/D轉(zhuǎn)換后的8位二進(jìn)制結(jié)果。4.2.4ADC0804的典型應(yīng)用電路與控制方法

通過查詢ADC0804數(shù)據(jù)手冊,可以找到ADC0804的典型應(yīng)用電路(TypicalApplications),如圖4.5所示。

對ADC0804控制時,需要參考其操作時序圖,在ADC0804的數(shù)據(jù)手冊中,可以找到ADC0804的時序圖,如圖4.6所示。圖4.5ADC0804的典型應(yīng)用電路圖4.6ADC0804時序圖從圖4.6中我們可以看出,在開始轉(zhuǎn)換時,先為低電平,然后置為低電平,低電平維持時間為tw(

)L后,置為高電平,A/D轉(zhuǎn)換啟動,經(jīng)過1~8個時鐘周期+內(nèi)部Tc的時間后,A/D轉(zhuǎn)換完成,轉(zhuǎn)換結(jié)果存入數(shù)據(jù)鎖存器,

變?yōu)榈碗娖?,其中tw(

)L的時間最低為100?ns,而Tc在fCLK?=?640?kHz的最短時間為103?μs,當(dāng)VCC?=?5?V時,fCLK的典型值為640?kHz。

在讀取A/D轉(zhuǎn)換結(jié)果時,要參考圖4.7中的時序。圖4.7ADC0804讀取結(jié)果時序圖

A/D轉(zhuǎn)換結(jié)束后,變?yōu)榈碗娖?,然后我們需要?/p>

置為低電平,接著再將置為低電平,在經(jīng)過tACC時間后,就可以讀取轉(zhuǎn)換后的數(shù)據(jù),待讀取結(jié)束后,需要將

再置為高電平,然后再將置為高電平。從時序圖中我們可以看出,在置低電平tR1(300?ns)后,會自動變?yōu)楦唠娖健?/p>

在實(shí)際應(yīng)用中,只需要參考這兩個時序圖,就可以寫出相應(yīng)的程序代碼,如果需要連續(xù)轉(zhuǎn)換,可以一直置為低電平。綜上所述,可以總結(jié)出ADC0804芯片操作流程:

(1)啟動A/D轉(zhuǎn)換;

(2)查詢引腳,當(dāng)引腳由高電平變?yōu)榈碗娖綍r,表示A/D轉(zhuǎn)換結(jié)束;

(3)讀取轉(zhuǎn)換結(jié)果。4.2.5ADC0804應(yīng)用舉例

【例4.1】采集電位器上模擬電壓值,將轉(zhuǎn)換結(jié)果送到P1口,并顯示在發(fā)光二極管上。

解析:

(1)硬件電路。根據(jù)ADC0804數(shù)據(jù)手冊,根據(jù)典型應(yīng)用電路和題目要求,可以設(shè)計出電路原理圖,如圖4.8所示。

(2)程序代碼如下:

#include<reg52.h>

sbitCS=P0^0; //定義片選端

sbitINTR=P0^1;

voiddelay_ms(unsignedcharz) //ms級帶參數(shù)延時函數(shù)

{

unsignedcharx,y;

for(x=z;x>0;x--)

for(y=0;y<110;y++);

}

voidinit() //初始化函數(shù)CS=0

{

CS=0;

}

voidstart() //啟動A/D轉(zhuǎn)換函數(shù)

{

WR=1;

WR=0;

WR=1;

}

voidmain()

{

init(); //調(diào)用初始化函數(shù)

while(1)

{

start(); //調(diào)用啟動A/D轉(zhuǎn)換函數(shù)

RD=0;

delay_ms(1);

P1=P2;

//讀取轉(zhuǎn)換結(jié)果,將結(jié)果傳給P1口

RD=1;

}

}

【例4.2】采集電位器上模擬電壓值,將轉(zhuǎn)換結(jié)果以十進(jìn)制的形式在數(shù)碼管上顯示。

解析:

(1)硬件電路。由例4.1可得到ADC0804與單片機(jī)連接硬件圖,再根據(jù)項目三中的數(shù)碼管顯示電路,就可以設(shè)計出滿足題目要求的電路,如圖4.9所示。

(2)程序代碼如下:

#include<reg52.h>

sbitCS=P0^4;

sbitINTR=P0^5;

sbitDK=P0^6;sbitWK=P0^7;

unsignedchartemp,bai,shi,ge;

unsignedcharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

voiddelay_ms(unsignedcharz) //ms級帶參數(shù)延時函數(shù)

{

unsignedcharx,y;

for(x=z;x>0;x--)

for(y=0;y<110;y++);

}voidinit() //初始化函數(shù)CS=0

{

CS=0;

}

voidstart() //啟動A/D轉(zhuǎn)換函數(shù)

{

WR=1;

WR=0;

WR=1;

}

voiddisplay(unsignedcharbai,shi,ge) //顯示函數(shù)

{

bai=temp/100;

shi=temp%100/10;

ge=temp%10;

P2=table[bai]; //百位顯示

DK=1;

DK=0;

P2=0xfe;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

P2=table[shi]; //十位顯示

DK=1;

DK=0;

P2=0xfd;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

P2=table[ge]; //個位顯示

DK=1;

DK=0;

P2=0xfb;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

}

voidmain()

init(); //調(diào)用初始化

DK=0; //關(guān)閉段選鎖存端

WK=0; //關(guān)閉位選鎖存端

while(1)

{

start();//調(diào)用啟動A/D轉(zhuǎn)換函數(shù)

while(INTR!=0); //等待A/D轉(zhuǎn)換完成 RD=0;

delay_ms(1);

temp=P1;//讀取轉(zhuǎn)換結(jié)果,將結(jié)果賦值給變量temp

RD=1;

display(bai,shi,ge); //調(diào)用顯示函數(shù)

}

}

【例4.3】在例4.2電路的基礎(chǔ)上,將采集的電壓值顯示在數(shù)碼管上。

解析:

由于ADC0804是一個8位的A/D轉(zhuǎn)換器,因此分辨率為5?×?1/256?=?0.0196?V,所以在計算數(shù)值時,需要將轉(zhuǎn)換結(jié)果乘以分辨率,然后再進(jìn)行計算,得出各位的數(shù)值,再顯示到數(shù)碼管上即可。

程序代碼如下:

#include<reg52.h>

sbitCS=P0^4;

sbitINTR=P0^5;

sbitDK=P0^6;

sbitWK=P0^7;

unsignedinttemp,qian,bai,shi,ge;

unsignedcharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

voiddelay_ms(unsignedcharz)

//ms級帶參數(shù)延時函數(shù)

{

unsignedcharx,y;

for(x=z;x>0;x--)

for(y=0;y<110;y++);

}

voidinit() //初始化函數(shù)CS=0

{

CS=0;

}

voidstart() //啟動A/D轉(zhuǎn)換函數(shù)

{

WR=1;

WR=0;

WR=1;

}

voiddisplay(unsignedcharqian,bai,shi,ge) //顯示函數(shù)

{

P2=table[qian]+0x80; //整數(shù)位顯示,加0x80讓整數(shù)位顯示小數(shù)點(diǎn)

DK=1;

DK=0;

P2=0xfe;

WK=1;

delay_ms(2);

P2=0xff;

WK=0; P2=table[bai]; //小數(shù)點(diǎn)后第一位顯示

DK=1;

DK=0;

P2=0xfd;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

P2=table[shi]; //小數(shù)點(diǎn)后第二位顯示

DK=1;

DK=0;

P2=0xfb;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

P2=table[ge]; //小數(shù)點(diǎn)后第三位顯示

DK=1;

DK=0;

P2=0xf7;

WK=1;

delay_ms(2);

P2=0xff;

WK=0;

}

voidmain()

{

init(); //調(diào)用初始化

DK=0; //關(guān)閉段選鎖存端

WK=0; //關(guān)閉位選鎖存端 while(1)

{

start(); //調(diào)用啟動A/D轉(zhuǎn)換函數(shù)

while(INTR!=0); //等待A/D轉(zhuǎn)換完成

RD=0;

delay_ms(1);

temp=P1; //讀取轉(zhuǎn)換結(jié)果,將結(jié)果賦值給變量temp

RD=1;

temp=temp*196; //乘以分辨率 temp=temp*196; //乘以分辨率

qian=temp/10000; //取整數(shù)位的數(shù)值

bai=temp/1000%10; //取小數(shù)點(diǎn)后第一位數(shù)值

shi=temp/100%10; //取小數(shù)點(diǎn)后第二位數(shù)值

ge=temp/10%10; //取小數(shù)點(diǎn)后第三位數(shù)值

display(qian,bai,shi,ge); //調(diào)用顯示函數(shù)

}

}4.2.6ADC0809芯片簡介

ADC0809是8通道8位逐次比較原理進(jìn)行模/數(shù)轉(zhuǎn)換的器件,其內(nèi)部有一個8通道模擬多路開關(guān),可以根據(jù)地址碼鎖存譯碼后的信號,只選通8路模擬輸入信號中的一個進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)由三態(tài)鎖存器輸出。ADC0809片內(nèi)沒有時鐘,需外接時鐘信號;模擬輸入電壓范圍為單極性0~5?V,雙極性±5?V、±10?V,但是需要外加輔助電路。ADC0809的啟動轉(zhuǎn)換控制為脈沖方式,上升沿將內(nèi)部寄存器復(fù)位(清零),下降沿開始轉(zhuǎn)換。在使用時,ADC0809不需要進(jìn)行零點(diǎn)和滿刻度調(diào)節(jié)。

ADC0809的其他主要特性如下:

轉(zhuǎn)換時間為100?μs;

單個+5?V電源供電;

模擬輸入電壓范圍0~+5?V,不需零點(diǎn)和滿刻度校準(zhǔn);

工作溫度范圍為-40℃~+85;

低功耗,約15?mW。

1.?ADC0809的引腳

ADC0809芯片有28條引腳,采用雙列直插式封裝,引腳如圖4.10所示。圖4.10ADC0809的引腳

IN0~I(xiàn)N7:8路模擬量輸入端。

D0~D7:8位數(shù)字量輸出端。

ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。

CLK:時鐘脈沖輸入端。

VREF(+)、VREF(-):基準(zhǔn)電壓。

VCC:電源,單一+5?V。

GND:地。

ALE:地址鎖存允許信號,輸入高電平有效。

START:A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖(至少100?ns寬)使其啟動(脈沖上升沿使0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。

EOC:輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。

OE:數(shù)據(jù)輸出允許信號,輸入高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。

ADC0809一共有8個通道,通道選擇如表4-1所示。表4-1ADC0809通道選擇表

2.?ADC0809的工作過程

ADC0809的時序如圖4.11所示。

從時序圖中,可以得出ADC0809的工作過程如下:

(1)首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中,地址經(jīng)譯碼選通8路模擬輸入的其中1路到比較器;

(2)?START上升沿將內(nèi)部寄存器復(fù)位;

(3)?START下降沿啟動A/D轉(zhuǎn)換,之后EOC輸出信號由高電平變?yōu)榈碗娖?,指示轉(zhuǎn)換正在進(jìn)行;圖4.11ADC0809工作時序圖

(4)直到A/D轉(zhuǎn)換完成,EOC將變?yōu)楦唠娖?,表示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個信號可用作中斷申請;

(5)當(dāng)OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。

拓展練習(xí):根據(jù)ADC0808的工作過程,利用ADC0809設(shè)計一個數(shù)字電壓表,完成程序的編寫,并在Proteus中仿真實(shí)現(xiàn)。

4.3單片機(jī)的D/A電路

4.3.1D/A轉(zhuǎn)換的基本概念

D/A轉(zhuǎn)換就是數(shù)/模轉(zhuǎn)換,就是把數(shù)字信號轉(zhuǎn)換成模擬信號,能完成D/A轉(zhuǎn)換的電路,叫做數(shù)/模轉(zhuǎn)換器,簡稱DAC(DigitaltoAnalogConverter)。

1.權(quán)電阻網(wǎng)絡(luò)

權(quán)電阻網(wǎng)絡(luò)DAC如圖4.12所示。圖4.12權(quán)電阻網(wǎng)絡(luò)DAC圖4.12中,D0~D3為4位輸入數(shù)字量;R、2R、4R、8R為加權(quán)電阻;S0~S3是電子模擬開關(guān)。當(dāng)某位Di=1時,相應(yīng)開關(guān)閉合,Di?=?0時,開關(guān)斷開。由理想運(yùn)放的特性可知:設(shè)RF?=?R/2,則可得

2..倒T型電阻網(wǎng)絡(luò)DAC

倒T型電阻網(wǎng)絡(luò)如圖4.13所示。

由圖4.13可以看出,圖中網(wǎng)絡(luò)電阻只有兩種:即R和2R而且構(gòu)成倒T形,故又稱為R-2R倒T型電阻網(wǎng)絡(luò)DAC。其中S0~S3為模擬開關(guān),運(yùn)算放大器A組成求和電路。圖4.13倒T型電阻網(wǎng)絡(luò)DAC模擬開關(guān)Si,由輸入數(shù)碼Di控制。當(dāng)Di?=?1時Si接運(yùn)算放大器反相端,電流Ii流入求和電路;當(dāng)Di=0時,Si則將電阻2R接地。根據(jù)虛地的概念可知,無論模擬開關(guān)Si處于何種位置,與Si相連的2R電阻均將接地(地或虛地)。通過分析R-2R電阻網(wǎng)絡(luò)可以發(fā)現(xiàn),從每個節(jié)點(diǎn)向左看的二端網(wǎng)絡(luò)等效電阻均為R,流入每個2R電阻的電流從高位到低位按2的整數(shù)倍遞減。設(shè)基準(zhǔn)電壓源電壓為VREF,則總電流為I=VREF/R,則流過各開關(guān)支路(從右到左)的電流分別為I/2、I/4、I/8和I/16。于是可得到各支路的總電流

I

?=?I0+I1+I2+I34.3.2DAC的分類

DAC可分為電壓輸出型和電流輸出型。

1.電壓輸出型

電壓輸出型DAC雖有直接從電阻陣列輸出電壓的,但一般采用內(nèi)置輸出放大器以低阻抗輸出。直接輸出電壓的器件僅用于高阻抗負(fù)載,由于無輸出放大器部分的延遲,故常作為高速DAC使用。

2.電流輸出型

在實(shí)際應(yīng)用中電流輸出型DAC很少直接利用電流輸出,大多外接電流/電壓轉(zhuǎn)換電路得到電壓輸出。將電流轉(zhuǎn)換成電壓有兩種方法:一是只在輸出引腳上接負(fù)載電阻而進(jìn)行電流/電壓轉(zhuǎn)換,二是外接運(yùn)算放大器將電流轉(zhuǎn)換成電壓。4.3.3DAC的主要參數(shù)

DAC的主要參數(shù)說明如下:

(1)分辨率:DAC模擬輸出電壓可能被分離的等級數(shù)。n位DAC最多有2n個模擬輸出電壓。位數(shù)越多DAC的分辨率越高。分辨率也可以用能分辨的最小輸出電壓與最大輸出電壓之比給出。n位DAC的分辨率可表示為

(2)轉(zhuǎn)換精度:對給定的數(shù)字量,DAC轉(zhuǎn)換器實(shí)際值與理論值之間的最大偏差。

(3)轉(zhuǎn)換速率:完成一次從模擬轉(zhuǎn)換到數(shù)字的A/D轉(zhuǎn)換所需的時間的倒數(shù)。

4.4常用DAC簡介

DAC0832是8位D/A轉(zhuǎn)換集成芯片,其價格低廉、接口簡單、轉(zhuǎn)換控制容易,在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉(zhuǎn)換器,由倒T型R-2R電阻網(wǎng)絡(luò)、模擬開關(guān)、運(yùn)算放大器和參考電壓VREF四大部分組成。4.4.1DAC0832的特性

DAC0832的特性如下:

(1)分辨率為8位;

(2)電流穩(wěn)定時間為1?μs;

(3)可單緩沖、雙緩沖或直接數(shù)字輸入;

(4)只需在滿量程下調(diào)整其線性度;

(5)單一電源供電(+5?V~+15?V);

(6)低功耗,20?mW。4.4.2DAC0832的引腳

DAC0832有20個引腳,采用雙列直插式封裝,如圖4.14所示。

DAC0832的引腳功能如下:

DI0~DI7:8位數(shù)據(jù)輸入線,TTL電平,有效時間應(yīng)大于90?ns(否則鎖存器的數(shù)據(jù)會出錯)。

ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效。

:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效。

:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500?ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時,數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時將輸入數(shù)據(jù)鎖存。圖4.14DAC0832的引腳:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500?ns)有效。

:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500?ns)有效。WR2、XFER的邏輯組合可產(chǎn)生LE2,當(dāng)LE2為高電平時,DAC寄存器的輸出隨寄存器的輸入而變化,LE2負(fù)跳變時將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。

IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化。

IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù)。

RFB:反饋信號輸入線,改變RFB端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度。

VCC:電源輸入端,范圍為+5?V~+15?V。

VREF:基準(zhǔn)電壓輸入,范圍為-10?V~+10?V。

AGND:模擬信號地。

DGND:數(shù)字信號地。

DAC0832轉(zhuǎn)換結(jié)果采用電流形式輸出,如果需要相應(yīng)的模擬電壓信號,可通過一個高輸入阻抗的線性運(yùn)算放大器實(shí)現(xiàn)。運(yùn)算放大器的反饋電阻可通過RFB端引用片內(nèi)固有電阻,也可外接。DAC0832邏輯輸入滿足TTL電平,可直接與TTL電路連接。4.4.3DAC0832的工作方式

DAC0832進(jìn)行D/A轉(zhuǎn)換時,可以采用兩種方法對數(shù)據(jù)進(jìn)行鎖存。第一種方法是使輸入寄存器工作在鎖存狀態(tài),而DAC寄存器工作在直通狀態(tài);第二種方法是使輸入寄存器工作在直通狀態(tài),而DAC寄存器工作在鎖存狀態(tài)。

根據(jù)對DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。

(1)直通方式:將、、和引腳都直接接數(shù)字地,ILE引腳接高電平,芯片處于直通狀態(tài)。此時,8位數(shù)字量輸入到D0~D7端,就立即進(jìn)行D/A轉(zhuǎn)換。但需要注意的是,在此種方式下,DAC0832不能直接與單片機(jī)的數(shù)據(jù)總線相連接。

(2)單緩沖方式:使DAC0832的兩個輸入寄存器中有一個處于直通方式,而另一個處于受控的鎖存方式。

(3)雙緩沖方式:先使輸入寄存器接收資料,再控制輸入寄存器的輸出資料到DAC寄存器,即分兩次鎖存輸入資料。此方式適用于多個D/A轉(zhuǎn)換同步輸出的情節(jié)。4.4.4DAC0832的典型應(yīng)用電路

查詢DAC0832數(shù)據(jù)手冊后,可以找到其典型應(yīng)用電路,如圖4.15所示。

對DAC0832控制時,同樣需要參考其操作時序圖,在DAC0832數(shù)據(jù)手冊中,可以找到ADC0804的時序圖,如圖4.16所示。

圖4.15DAC0832的典型應(yīng)用電路圖4.16DAC0832的工作時序圖從時序圖4.16可以看出,當(dāng)為低電平,也置為低電平時,數(shù)據(jù)位(DATABITS)上的數(shù)據(jù)才有效,IOUT1、IOUT2有電流輸出,但此時輸出不穩(wěn)定,在置為低電平tS時間后(從手冊上可查得,tS為1μs),IOUT1、IOUT2輸出穩(wěn)定。如果只進(jìn)行一次轉(zhuǎn)換的話,在程序中,需要對和置為高電平,如果進(jìn)行連續(xù)轉(zhuǎn)換,只需改變數(shù)字量輸入數(shù)據(jù)即可。4.4.5DAC0832應(yīng)用舉例

【例4.4】利用單片機(jī)P0口采用單緩沖方式控制DAC0832輸出,利用按鍵控制數(shù)字量增加,每按一次按鍵,使數(shù)字量加1,數(shù)字量從零開始,用電流表觀察輸出電流。

解析:

根據(jù)DAC0832單緩沖方式,只需將ILE接高電平、

和接地,接P2.6、接P3.6,這時只有和

可控,可以實(shí)現(xiàn)單緩沖方式,電路圖如圖4.17所示。圖4.17例4.4電路原理圖程序代碼如下:

#include<reg52.h>

sbitCS=P2^6;

sbitkey=P2^7;

voiddelay_10ms(unsignedintz)

{

unsignedintx,y;

for(x=z;x>0;x--)

for(y=1150;y>0;y--);

}

voidmain()

{

CS=0; //置低

WR=0; //置低

P0=0x0; //數(shù)據(jù)初始為0,DAC0832有輸出

while(1)

{

if(key==0) //判斷按鍵是否按下

{

delay_10ms(1);

if(key==0) {

P0=P0+0x01; //如果有按鍵按下,則數(shù)字量加1

}

while(!key); //按鍵釋放

delay_10ms(1);

while(!key);

}

}

}

【例4.5】用DAC0832輸出鋸齒波。

解析:

(1)硬件原理圖。由于DAC0832輸出為電流,作為波形輸出時,需要將電流信號轉(zhuǎn)換成電壓,因此需要加入運(yùn)放電路將電流信號轉(zhuǎn)換成電壓信號,因此可得出電路圖如圖4.18所示。

(2)程序分析。由鋸齒波的特點(diǎn)可知,鋸齒波按照一定的斜率上升,當(dāng)達(dá)到最大后,從零開始。因此在編寫程序時,我們只需要讓數(shù)字量按照一定的時間間隔加1,當(dāng)達(dá)到最大后,再從零開始,如此反復(fù)既可以得到鋸齒波的波形。圖4.18例4.5原理圖程序代碼如下:

#include<reg52.h>

#include<absacc.h> //絕對地址頭文件

#defineDAC0832XBYTE[0xDFFF] //絕對地址

voiddelay() //1ms延時函數(shù)

{

TH0=(65536-1)/256;

TL0=(65536-1)%256;

TR0=1;

while(!TF0);

TF0=0;

}

voidmain()

{

unsignedchari;

TMOD=0x01; //設(shè)置定時0,工作方式1

P0=0; //數(shù)字量初始值0

while(1)

{

for(i=255;i>=0;i--)

{

DAC0832=i;

delay();

}

}

}

【例4.6】用DAC0832輸出三角波。

解析:

從例4.5中可知,想要得到三角波,只需使數(shù)字量在輸出時從0增加到最大,再從最大值減小到0,如此反復(fù)就可以得到周期性的三角波,原理圖同例4.5電路。

程序代碼如下:

#include<reg52.h>

#include<absacc.h> //絕對地址頭文件

#definedac0832XBYTE[0xDFFF] //絕對地址

voiddelay() //1ms延時函數(shù)

{

TH0=(65536

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論