ADC0804工作原理其程序_第1頁
ADC0804工作原理其程序_第2頁
ADC0804工作原理其程序_第3頁
ADC0804工作原理其程序_第4頁
ADC0804工作原理其程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、前言:本文詳細(xì)說明了ADC0804工作原理及過程,還附有一個ADC0804在單片機(jī)中的典型應(yīng)用,包含原理圖,源程序,程序注釋詳細(xì)清楚,這有助于更好地理解與應(yīng)用ADC0804芯片。1、A/D轉(zhuǎn)換概念:即模數(shù)轉(zhuǎn)換(Analog to DigitalConversion),輸入模擬量(比如電壓信號),輸出一個與模擬量相對應(yīng)的數(shù)字量(常為二進(jìn)制形式)。例如參考電壓VREF為5V,采用8位的模數(shù)轉(zhuǎn)換器時,當(dāng)輸入電壓為0V時,輸出的數(shù)字量為0000 0000,當(dāng)輸入的電壓為5V時,輸出的數(shù)字量為1111 1111。當(dāng)輸入的電壓從從0V到5V變化時,輸出的數(shù)字量從0000 0000到1111 1111變化。

2、這樣每個輸入電壓值對應(yīng)一個輸出數(shù)字量,即實現(xiàn)了模數(shù)轉(zhuǎn)換。2、分辨率概念:分辨率是指使輸出數(shù)字量變化1時的輸入模擬量,也就是使輸出數(shù)字量變化一個相鄰數(shù)碼所需輸入模擬量的變化值。分辨率與A/D轉(zhuǎn)換器的位數(shù)有確定的關(guān)系,可以表示成FS / 2 n 。FS表示滿量程輸入值,n為A/D轉(zhuǎn)換器的位數(shù)。例如,對于5V的滿量程,采用4位的ADC時,分辨率為5V/16=0.3125V (也就是說當(dāng)輸入的電壓值每增加0.3125V,輸出的數(shù)字量增加1);采用8位的ADC時,分辨率為5V/25619.5mV(也就是說當(dāng)輸入的電壓值每增加19.5mV,則輸出的數(shù)字量增加1);當(dāng)采用12位的ADC時,分辨率則為5V/4

3、0961.22mV(也就是說當(dāng)輸入的電壓值每增加1.22mV ,則輸出的數(shù)字量增加1)。顯然,位數(shù)越多,分辨率就越高。3、ADC0804引腳功能:CS:芯片片選信號,低電平有效。即CS=0時,該芯片才能正常工作,高電平時芯片不工作。在外接多個ADC0804芯片時,該信號可以作為選擇地址使用,通過不同的地址信號使能不同的ADC0804芯片,從而可以實現(xiàn)多個ADC通道的分時復(fù)用。WR:啟動ADC0804進(jìn)行ADC采樣,該信號低電平有效,即WR信號由低電平變成高電平時,觸發(fā)一次ADC轉(zhuǎn)換。RD:低電平有效,即RD=0時,DAC0804把轉(zhuǎn)換完成的數(shù)據(jù)加載到DB口,可以通過數(shù)據(jù)端口DB0DB7讀出本次

4、的采樣結(jié)果。VIN(+)和VIN(-):模擬電壓輸入端,單邊輸入時模擬電壓輸入接VIN(+)端,VIN(-)端接地。雙邊輸入時VIN(+)、VIN(-)分別接模擬電壓信號的正端和負(fù)端。當(dāng)輸入的模擬電壓信號存在“零點漂移電壓”時,可在VIN(-)接一等值的零點補(bǔ)償電壓,變換時將自動從VIN(+)中減去這一電壓。VREF/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外接電壓,則ADC的參考電壓為該外界電壓的兩倍,如不外接,則VREF與Vcc共用電源電壓,此時ADC的參考電壓即為電源電壓Vcc的值。CLKIN和CLKR:外接RC振蕩電路產(chǎn)生模數(shù)轉(zhuǎn)換器所需的時鐘信號,時鐘頻率CLK = 1/1.

5、1RC,一般要求頻率范圍100KHz1460KHz。AGND和DGND:分別接模擬地和數(shù)字地。 INTR:轉(zhuǎn)換結(jié)束輸出信號,低電平有效,當(dāng)一次A/D轉(zhuǎn)換完成后,將引起INTR=0,實際應(yīng)用時,該引腳應(yīng)與微處理器的外部中斷輸入引腳相連(如51單片機(jī)的INT0,INT1腳),當(dāng)產(chǎn)生INTR信號有效時,還需等待RD=0才能正確讀出A/D轉(zhuǎn)換結(jié)果,若ADC0804單獨(dú)使用,則可以將INTR引腳懸空。DB0DB7:輸出A/D轉(zhuǎn)換后的8位二進(jìn)制結(jié)果。補(bǔ)充說明:ADC0804片內(nèi)有時鐘電路,只要在外部“CLKIN(引腳4)”和“CLKR(引腳19)”兩端外接一對電阻電容即可產(chǎn)生A/D轉(zhuǎn)換所要求的時鐘,其振蕩

6、頻率為fCLK1/1.1RC。其典型應(yīng)用參數(shù)為:R=10K,C=150PF,fCLK640KHz,轉(zhuǎn)換速度為100。若采用外部時鐘,則外部fCLK可從CLKIN端送入,此時不接R、C。允許的時鐘頻率范圍為100KHz1460KHz。4、ADC0804工作過程如下圖所示,ADC0804的工作時序圖(Timing Diagrams):(欲詳細(xì)了解工作過程,可以結(jié)合ADC0804使用手冊)圖6給出的其實就是使ADC0804正確工作的軟件編程模型。由圖可見,實現(xiàn)一次ADC轉(zhuǎn)換主要包含下面三個過程:1.啟動轉(zhuǎn)換:由圖6中的上部“FIGURE 10A”可知,在CS信號為低電平的情況下,將WR引腳先由高電平

7、變成低電平,經(jīng)過至少tW(WR)I 延時后,再將WR引腳拉成高電平,即啟動了一次AD轉(zhuǎn)換。注:ADC0804使用手冊中給出了要正常啟動AD轉(zhuǎn)換WR的低電平保持時間tW(WR)I的最小值為100ns,即WR拉低后延時大于100ns即可以,具體做法可通過插入NOP指令或者調(diào)用delay()延時函數(shù)實現(xiàn),不用太精確,只要估計插入的延時大于100ns即可。2延時等待轉(zhuǎn)換結(jié)束:依然由圖6中的上部“FIGURE 10A”可知,由拉低WR信號啟動AD采樣后,經(jīng)過1到8個Tclk+INTERNAL Tc延時后,AD轉(zhuǎn)換結(jié)束,因此,啟動轉(zhuǎn)換后必須加入一個延時以等待AD采樣結(jié)束。注:手冊中給出了內(nèi)部轉(zhuǎn)換時間“IN

8、TERNAL Tc”的時間范圍為6273個始終周期,因此延時等待時間應(yīng)該至少為8+73=81個時鐘周期。比如,若R為150K, C為150pF,則時鐘頻率為Fclk=1/1.1RC=606KHz,因此時鐘周期約為Tclk=1/Fclk=1.65us。所以該步驟至少應(yīng)延時81*Tclk=133.65us. 具體做法可通過插入NOP指令或者調(diào)用delay()延時函數(shù)實現(xiàn),不用太精確,只要估計插入的延時大于133.65us即可。3.讀取轉(zhuǎn)換結(jié)果:由圖6的下部“FIGURE 10B”可知,采樣轉(zhuǎn)換完畢后,在CS信號為低的前提下,將RD腳由高電平拉成低電平后,經(jīng)過tACC的延時即可從DB腳讀出有效的采樣

9、結(jié)果。注:手冊中給出了tACC的典型值和最大值分別為135ns和200ns,因此將RD引腳拉低后,等待大于200ns后即可從DB讀出有效的轉(zhuǎn)換結(jié)果。具體做法可通過插入NOP指令或者調(diào)用delay()延時函數(shù)實現(xiàn),不用太精確,只要估計插入的延時大于200ns即可。圖6:ADC0804手冊給出的ADC轉(zhuǎn)換時序圖圖7:ADC0804手冊給出的電器特性表對采樣值進(jìn)行運(yùn)算變換,換算出實際的滑動變阻器輸入電壓值。對于任何一個A/D采樣器而言,其轉(zhuǎn)換公式如下:其中:輸入ADC的模擬電壓值。:ADC轉(zhuǎn)換后的二進(jìn)制值。本試驗的ADC0804為八位。:ADC能夠表示的刻度總數(shù)。ADC0804為八位ADC,因此:A

10、DC參考電壓值,本試驗ADC0804的被設(shè)置為5V因此,對于本試驗,轉(zhuǎn)換公式為5、ADC0804在單片機(jī)中的簡單應(yīng)用舉例如下圖所示,本例ADC0804中的VCC=5V, VREF/2引腳懸空(懸空則相當(dāng)于與VCC共接5V電源),因此ADC轉(zhuǎn)換的參考電壓為VCC的值,即5V。VIN-接地,而VIN+連接滑動變阻器RV1的輸出,因此VIN+的電壓輸入范圍為0V5V,正好處于參考電壓范圍內(nèi)。引腳CS接地, WR和RD分別連接單片機(jī)的P36和P37引腳,而DB0DB7連接單片機(jī)的P1口.P0口接數(shù)碼管的段選線,P2口低四位接數(shù)碼管的位選線。程序主要實現(xiàn)以下功能:(1)控制ADC0804芯片對VIN(+

11、)引腳輸入的電壓值進(jìn)行正確采樣,讀取采樣結(jié)果。(2)對采樣值進(jìn)行模數(shù)變換,將轉(zhuǎn)換后數(shù)字量后顯示在4段數(shù)碼管上。C程序如下:#include #include #define uint unsigned int#define uchar unsigned charsbit wr=P36;sbit rd=P37;uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共陽顯示代碼void delay(uint x) /延時函數(shù) delay(1)延時0.992ms,大約為1ms uchar i; while(x-) for(

12、i=0;i120;i+);void display(uchar db)/數(shù)碼管顯示函數(shù),用于顯示模數(shù)轉(zhuǎn)換后得到的數(shù)字量 uchar bw,sw,gw;/bw,sw,gw分別等于db百位,十位,個位上的數(shù)bw=db/100;sw=db%100/10;gw=db%10;P2=0x01; /點亮第一只數(shù)碼管P0=disbw&0x7f; /最高位置0,點亮第一只數(shù)碼管的小數(shù)點,delay(5);P2=0x02; /點亮第二只數(shù)碼管P0=dissw;delay(5);P2=0x04; /點亮第三只數(shù)碼管P0=disgw;delay(5); P2=0x08; /點亮第四只數(shù)碼管P0=dis0; /第四只數(shù)碼管一直顯示0delay(5); void main()uchar i;while(1)wr=0;/在片選信號CS為低電平情況下(由于CS接地,所以始終為低電平),_nop_(); /WR由低電平到高電平時,即上升沿時,AD開始采樣轉(zhuǎn)換wr=1;delay(1); /延時1ms,等待采樣轉(zhuǎn)換結(jié)束P1=0xff; /這條語句不能少,我也還不知道為什么rd=0;/將RD腳置低電平后,再延時大于135ns左右(這里延時1us),_nop_(); /即可從DB腳讀出有效的采樣

溫馨提示

  • 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

提交評論