ADC0804是逐次比較型A/D轉(zhuǎn)換器,它采用CMOS工藝20引腳集成芯片,分辨率為8位,轉(zhuǎn)換時(shí)間100us,輸入電壓范圍0~5V芯片內(nèi)具有三態(tài)輸出數(shù)據(jù)鎖存器,科直接連接在數(shù)據(jù)總線上。
ADC0804引腳
ADC0804引腳分布圖
Vin(+)Vin(-):兩模擬信號(hào)輸入端,用以接收單極性、雙極性和差模輸入信號(hào)
DB7~DB0:具有三態(tài)特性數(shù)字信號(hào)輸出口
AGND:模擬信號(hào)地DGNA:數(shù)字信號(hào)地
CLK:時(shí)鐘信號(hào)輸入端
CLKR:內(nèi)部時(shí)鐘發(fā)生器的外接電阻端,與CLK端配合可由芯片自身產(chǎn)生時(shí)鐘脈沖,其頻率為1/(1.1RC)
CS:片選信號(hào)輸入端,低電平有效,一旦CS有效,表明AD轉(zhuǎn)換器被選中,可啟動(dòng)工作WR:寫信號(hào)輸入,低電平啟動(dòng)AD轉(zhuǎn)換。
RD:讀信號(hào)輸入,低電平輸出端有效。
INTR:AD轉(zhuǎn)換結(jié)束信號(hào),低電平表示本次轉(zhuǎn)換已完成。
Vref/2:參考電平輸入,決定量化單位
Vcc:芯片電源5V輸入
TX-1C開發(fā)板上的ADC0804接法
分析圖如下:
1.ADC0804的片選CS連接U2鎖存器的Q7輸出端,我們可以通過控制鎖存器來控
制CS,這樣接是因?yàn)殚_發(fā)板擴(kuò)展的外圍太多,沒有多余的IO口來獨(dú)立控制ADC0804的CS,所以選擇U2
2.Vin(+)接電位器的中間滑動(dòng)端,Vin(-)接地,因?yàn)檫@兩端可以輸入查分電壓,即它可測(cè)量Vin(+)和Vin(-)之間的電壓,當(dāng)Vin(-)接地時(shí),Vin(+)端的電壓即為ADC0804的模擬輸入電壓,Vin(+)與電位器之間串聯(lián)一個(gè)10K的電阻,目的是限制輸入Vin(+)的電流,防止電流過大而燒壞AD芯片,當(dāng)用短路帽接插針ADIN后,電位器的中間滑動(dòng)端便通過電阻R12與Vin(+)連接,此時(shí)調(diào)節(jié)電位器的旋鈕,其中間滑動(dòng)端的電壓便在0~Vcc間變化,進(jìn)而ADC0804的數(shù)字輸出端也在0x00~0xFF變化。
3.CLKR、CLK、GND之間用電阻電容組成RC振蕩器,用來給ADC0804提供工作所需的脈沖,其脈沖的頻率為1/(1.1RC),按芯片手冊(cè)上說明,R取10K,C取150pF。
4.Vref/2端用兩個(gè)1K的電阻分壓得到Vcc/2的電壓,將該電壓作為AD芯片工作時(shí)內(nèi)部的參考電壓
5.WR、RD分別接單片機(jī)的P3.6和P3.7引腳,數(shù)字輸出端接單片機(jī)的P1口。
6.將AGND和DGND同時(shí)連接到實(shí)驗(yàn)板的GND上,實(shí)際應(yīng)用電路要考慮精確度和穩(wěn)定度最好將器件的模擬地和數(shù)字地分別連接,最后將模擬地和數(shù)字地僅在一點(diǎn)相連。
ADC0804啟動(dòng)轉(zhuǎn)換時(shí)序
ADC0804啟動(dòng)轉(zhuǎn)換時(shí)序圖
序分析:CS先為低電平,WR隨后置低,經(jīng)過至少tw(WR)L(min100ns)時(shí)間后,WR拉高,隨后AD轉(zhuǎn)換器被啟動(dòng),并且在經(jīng)過(1~8個(gè)AD時(shí)間周期+內(nèi)部Tc)時(shí)間后,模/數(shù)完成轉(zhuǎn)換,轉(zhuǎn)換結(jié)果存入數(shù)據(jù)鎖存器,同時(shí)INTR自動(dòng)變?yōu)榈碗娖?,通?a target="_blank">單片機(jī)本次轉(zhuǎn)換已結(jié)束。
時(shí)序分析:當(dāng)INTR變?yōu)榈碗娖胶?,將CS先置低,接著再將RD置低,在RD置低至少經(jīng)過tacc(max200ns)時(shí)間后,數(shù)字輸出口上的數(shù)據(jù)達(dá)到穩(wěn)定狀態(tài),此時(shí)直接讀取數(shù)字輸出端口的數(shù)據(jù)便可得到轉(zhuǎn)換后的數(shù)字信號(hào),讀走數(shù)據(jù)后,馬上將RD拉高,然后再將CS拉高,INTR是自動(dòng)變化得,當(dāng)RD置低tr1時(shí)間后,INTR自動(dòng)拉高。上面是啟動(dòng)一次和讀取一個(gè)數(shù)據(jù)的時(shí)序圖,當(dāng)我們需要連續(xù)轉(zhuǎn)換并且連續(xù)讀走數(shù)據(jù)時(shí),就沒有必要每次都把CS置低再拉高,因?yàn)镃S是片選信號(hào),只要開始就把CS置低,以后當(dāng)要啟動(dòng)轉(zhuǎn)換盒讀取數(shù)據(jù)時(shí)只需操作WR和RD即可。
實(shí)例程序:
#include《reg52.h》
sbitadrd=P3^7;//IO口定義
sbitadwr=P3^6;sbitdiola=P2^5;sbitdula=P2^6;sbitwela=P2^7;
unsignedcharj,k,adval;voidmain()//主程序{
uchara,A1,A2,A2t,A3;while(1){
wela=1;P0=0;//選通ADCS
adwr=0;//AD寫入(隨便寫個(gè)什么都行,主要是為了啟動(dòng)AD轉(zhuǎn)換)_nop_();adwr=1;P0=0xff;//關(guān)閉ADCSdelay(10);
wela=0;//關(guān)閉有AD片選信號(hào)鎖存器的鎖存端以防止在操作數(shù)碼管時(shí)使AD的片選發(fā)生變化
for(a=20;a》0;a--)//需要注意的是ADC0804在寫和讀之間的時(shí)間間隔要足夠長否則
無法讀出數(shù)據(jù)
{//這里把顯示部分放這里的原因也是為了增加寫讀之間的時(shí)間間隔
display(A1,A2,A3);}//送去顯示各位。wela=1;//重新打開有AD片選信號(hào)鎖存器的鎖存端P1=0xff;//讀取P1口之前先給其寫全1P0=0;//選通ADCS
adrd=0;//AD讀使能adval=P1;//AD數(shù)據(jù)讀取賦給P1口adrd=1;P0=0xff;//關(guān)閉ADCSadwr=0;P1=adval;//同時(shí)把AD的值送八個(gè)發(fā)光二極顯示
A1=adval/100;//分出百,十,和個(gè)位
A2t=adval%100;
A2=A2t/10;
A3=A2t%10;
};
}
1.零點(diǎn)和滿刻度調(diào)節(jié)
ADC0804的零點(diǎn)無需調(diào)整。滿刻度調(diào)整時(shí),先給輸入端加入電壓VIN+,使?jié)M刻度所對(duì)應(yīng)的電壓值是
其中Vmax是輸入電壓的最大值,Vmin是輸入電壓的最小值。當(dāng)輸入電壓與VIN+值相當(dāng)時(shí),調(diào)整VREF/2端電壓值是輸出碼為FEH或FFH。
2.參考電壓的調(diào)節(jié)
在使用A/D轉(zhuǎn)換器時(shí),為保證其轉(zhuǎn)換精度,要求輸入電壓滿量程使用,如輸入電壓動(dòng)態(tài)范圍較小,則可調(diào)節(jié)參考電壓VREF,以保證小信號(hào)輸入時(shí)ADC0804芯片8位的轉(zhuǎn)換精度。
3.接地
模數(shù)、數(shù)模轉(zhuǎn)換電路中要特別注意到地線的正確連接,否則干擾很嚴(yán)重,以致影響轉(zhuǎn)換結(jié)果的正確性。A/D、D/A及取樣-保持芯片上都提供了獨(dú)立的模擬地(AGND)和數(shù)字地(DGND)的引腳。在線路設(shè)計(jì)中,必須將所有的器件的模擬地和數(shù)字地分別相連,然后將模擬地與數(shù)字地僅在一點(diǎn)上相連接。地線的正確連接方法如圖所示:
?
評(píng)論
查看更多