新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ADC0809模數(shù)轉(zhuǎn)換器的使用詳解與程序

        ADC0809模數(shù)轉(zhuǎn)換器的使用詳解與程序

        作者: 時(shí)間:2012-10-20 來(lái)源:網(wǎng)絡(luò) 收藏
        帶我們的王老師剛評(píng)上碩導(dǎo)了,下學(xué)期開(kāi)始帶研究生了。
        從他那里了解到每做一次實(shí)驗(yàn)或者實(shí)踐,應(yīng)該把它用規(guī)范的格式記錄下來(lái),一來(lái)自己可以日后查看,二來(lái)同學(xué)間可以相互交流,共通過(guò)進(jìn)步,甚為必要。現(xiàn)將本次實(shí)驗(yàn)記錄如下。
        實(shí)驗(yàn)點(diǎn)擊瀏覽下一頁(yè)
        名稱:根據(jù)光強(qiáng)控制外圍器件的通斷。
        實(shí)驗(yàn)原理;使用AD芯片將太陽(yáng)能電池產(chǎn)生的光生伏打電壓轉(zhuǎn)化為數(shù)字信號(hào),再通過(guò)單片機(jī)處理后,在數(shù)碼管上顯示電壓,同時(shí)根據(jù)設(shè)定電壓伐值,控制外圍器件的通斷。
        實(shí)驗(yàn)所需的設(shè)備:機(jī)燒寫(xiě)器一個(gè),電腦一臺(tái),數(shù)字式示波器一個(gè),數(shù)字式萬(wàn)用表一個(gè)
        實(shí)驗(yàn)所需的元件:太陽(yáng)能電池一片,單片機(jī)一片,1k排阻一個(gè),四位連體的數(shù)碼管一個(gè),排針若干排,導(dǎo)線,萬(wàn)用版一塊,焊錫。
        實(shí)驗(yàn)前的理論準(zhǔn)備;能熟練使用機(jī),示波器,keil軟件,isp下載軟件,看懂AD0809的英文pdf說(shuō)明
        實(shí)驗(yàn)的難點(diǎn):難點(diǎn)一就是AD0809芯片的使用。
        難點(diǎn)二就是將AD0809產(chǎn)生的0~256的數(shù)字換算成0~5.000的精確度,而又不至于溢出出錯(cuò)。
        難點(diǎn)三就是以上的理論準(zhǔn)備全部系自學(xué),呵呵
        下面著重說(shuō)明AD0809的使用難點(diǎn)。

        是采樣頻率為8位的、以逐次逼近原理進(jìn)行模—數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個(gè)8通道多路開(kāi)關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。
          1.主要特性
          1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。
          2)具有轉(zhuǎn)換起停控制端。
          3)轉(zhuǎn)換時(shí)間為100μs
          4)單個(gè)+5V電源供電
          5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。
          6)工作溫度范圍為-40~+85攝氏度
          7)低功耗,約15mW。
          2.內(nèi)部結(jié)構(gòu)
          是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖13.22所示,它由8路模擬開(kāi)關(guān)、地址鎖存與譯碼器、比較器、8位開(kāi)關(guān)樹(shù)型D/A轉(zhuǎn)換器、逐次逼近
          3.外部特性(引腳功能)
          芯片有28條引腳,采用雙列直插式封裝,如圖13.23所示。下面說(shuō)明各引腳功能。
          IN0~I(xiàn)N7:8路模擬量輸入端。
          2-1~2-8:8位數(shù)字量輸出端。
          ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路
          ALE:地址鎖存允許信號(hào),輸入,高電平有效。
          START: A/D轉(zhuǎn)換啟動(dòng)信號(hào),輸入,高電平有效。
          EOC: A/D轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。
          OE:數(shù)據(jù)輸出允許信號(hào),輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開(kāi)輸出三態(tài)門(mén),輸出數(shù)字量。
          CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。
          REF(+)、REF(-):基準(zhǔn)電壓。
          Vcc:電源,單一+5V。
          GND:地。
          ADC0809的工作過(guò)程是:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此 地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可 用作中斷申請(qǐng)。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門(mén)打開(kāi),轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。
         

        值得一提的是,我按照上面電路,把AD的ABC三腳共同接接地時(shí),AD0809088始終輸出高電平,最后當(dāng)我把BC共同接地,在程序中給A一個(gè)0,則AD0809正常運(yùn)行,有輸出,并且發(fā)現(xiàn)當(dāng)所給的時(shí)鐘頻率越低,最高精度的那位輸出越穩(wěn)定,具體參數(shù)范圍從芯片資料里有詳細(xì)介紹,不過(guò)十全英文,專業(yè)詞匯哦。哈哈
        現(xiàn)將程序記錄如下:
        完整的程序從這里下載: http://www.51hei.com/ziliao/file/0809c51x.rar

         #include reg52.h> #define uint unsigned int #define uchar unsigned char uchar aa,qian,bai,shi,ge; uint temp; sbit clock=P2^0; sbit start=P2^1; sbit eoc=P2^2; sbit oe=P2^3; sbit ale=P2^4; sbit adda=P2^5; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; //void display(uchar bai,uchar shi,uchar ge); void delay(uint z); void main() { TMOD=0x20;  //設(shè)置定時(shí)器1為工作方式2 TH1=0x216;    //216 TL1=0x216;    //216 EA=1;       //開(kāi)總中斷 ET1=1;        //開(kāi)t1中斷 TR1=1;         start=0;    //復(fù)位 oe=0;         //輸出 adda=0; //eoc=0; ale=0;           //關(guān)閉地址選擇 while(1) { start=0; ///delay(10); start=1;     //        復(fù)位 ale=1;           //     打開(kāi)地址選擇 adda=0; ///delay(10); start=0;         //     開(kāi)始轉(zhuǎn)換 ale=0;             //      關(guān)地址 //delay(1);     while(eoc==0);         //       等待eoc變?yōu)? //delay(1); oe=1;             //       打開(kāi)輸出 //delay(1); //P1=0xff; temp=P1;             //      取p1到p3 oe=0;             //      關(guān)輸出 temp=temp*50; temp=temp/256; qian=temp/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10; P3=0x00; P0=0xfe; P3=table[qian]; delay(50); P3=0x00; P0=0xfd; P3=table[bai]; delay(50); P3=0x00; P0=0xfb; P3=table[shi]; delay(50); P3=0x00; P0=0xf7; P3=table[ge]; } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=1;y>0;y--); } void cl() interrupt 3 { clock=!clock; }  

        萬(wàn)用表相關(guān)文章:萬(wàn)用表怎么用


        51單片機(jī)相關(guān)文章:51單片機(jī)教程


        模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理




        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 城市| 梓潼县| 东港市| 丹棱县| 龙里县| 滨海县| 巧家县| 蕲春县| 甘孜县| 九龙城区| 福鼎市| 旺苍县| 云南省| 元谋县| 顺义区| 土默特右旗| 彭山县| 眉山市| 英山县| 陆河县| 滁州市| 林口县| 澜沧| 宜州市| 阳信县| 平泉县| 博白县| 阜南县| 抚宁县| 大埔县| 太原市| 龙门县| SHOW| 北碚区| 台中县| 高邮市| 特克斯县| 钟山县| 泾源县| 邯郸县| 承德市|