在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)ADC的應(yīng)用

            AVR單片機(jī)ADC的應(yīng)用

            作者: 時(shí)間:2013-05-11 來(lái)源:網(wǎng)絡(luò) 收藏

            的應(yīng)用

            1.數(shù)模轉(zhuǎn)換的基礎(chǔ)知識(shí)

            ()基本上是一個(gè)比例上的問(wèn)題,即由產(chǎn)生的數(shù)字值跟輸入模擬量與轉(zhuǎn)換器量程的比值有關(guān)的。轉(zhuǎn)換關(guān)系如下:

            Vin/Vfullscale=X/(2N-1)  其中X是數(shù)字輸出,N是數(shù)字輸出的位數(shù)(ADC的位數(shù)),Vin是模擬輸入量的值,Vfullscale是模擬輸入量的最大值。

            數(shù)模轉(zhuǎn)換的轉(zhuǎn)換精度計(jì)算:

            Vresolution=Vfullscale/((2N-1)

            2.AVR微控器的ADC介紹

            AVR微控器的ADC具有兩個(gè)ADC寄存器:ADC控制與狀態(tài)寄存器ADCSR控制ADC的運(yùn)行;ADC多路復(fù)用選擇器ADMUX,控制8個(gè)測(cè)量的模擬量輸入。

            1.jpg

            為了ADC以最大的精度操作時(shí),要求使用50HZ---200K HZ之間的時(shí)鐘頻率,選擇合適的比例分頻因子以獲得50HZ---200KHZ的轉(zhuǎn)換頻率。由于ADC的速度比較慢,如果處理器在ADC轉(zhuǎn)換數(shù)據(jù)時(shí)處于等待狀態(tài),會(huì)浪費(fèi)時(shí)間,則ADC通常采用中斷模式。ADC初始化:

            (1) 設(shè)置ADCSR的最低三位,確定分頻因子

            (2) 設(shè)置ADIE為1,打開(kāi)中斷模式

            (3) 設(shè)置ADEN為高電平,使ADC有效

            (4)  設(shè)置ADSC,以馬上開(kāi)始轉(zhuǎn)換

            3.應(yīng)用

            系統(tǒng)功能:當(dāng)在模擬通道3輸入電壓超過(guò)3V時(shí),系統(tǒng)點(diǎn)亮紅色LED;當(dāng)輸入電壓小于2V時(shí),點(diǎn)亮黃色LED,當(dāng)輸入電壓在2V--3V間,點(diǎn)亮綠色LED.

            硬件連接:三個(gè)LED分別接至AT908535的PORD口的PORTD.0、 PORTD.1、PORTD.2 AVR微控制器的ADC外設(shè)會(huì)根據(jù)所使用的具體微控制器而有所不同,所有的ADC都對(duì)VCC連接中的引腳電壓有噪聲抑制要求,有些擁有內(nèi)置的噪聲消除器,有些則擁用在內(nèi)部控制Vref的能力,使用ADC時(shí)需要查看相關(guān)微控制器的手冊(cè)。

            程序代碼:

            #i nclude90s9535.h>

            #define LEDS PORTD

            #define red 0xfe

            #define yellow 0xfd

            #define green 0xfc

            #define uchar unsigned char

            interrupt[ADC_INT] void adc_isr(void)

            {

            uchar adc_data; //variable for ADC result

            adc_data=ADCW; //read all 10bits into variable

            if(adc_data>(3*1023)/5)

            LEDS=red;

            else(adc_data(2*1023)/5)

            LEDS=yellow;

            else

            LEDS=green;

            ADCSR=ADCSR|0x40; //start the next conversion

            }

            void main()

            {

            DDRD=0x07; //least signifcant 3 bits for output

            ADMUX=0x03; //select to read only channel 3

            ADCSR=0xCE; //ADC中斷,64分頻

            #asm("sei")

            while(1); //等待ADC中斷產(chǎn)生

            }



            評(píng)論


            相關(guān)推薦

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

            關(guān)閉