新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機ADC的應用

        AVR單片機ADC的應用

        作者: 時間:2013-05-11 來源:網絡 收藏

        的應用

        1.數模轉換的基礎知識

        ()基本上是一個比例上的問題,即由產生的數字值跟輸入模擬量與轉換器量程的比值有關的。轉換關系如下:

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

        數模轉換的轉換精度計算:

        Vresolution=Vfullscale/((2N-1)

        2.AVR微控器的ADC介紹

        AVR微控器的ADC具有兩個ADC寄存器:ADC控制與狀態寄存器ADCSR控制ADC的運行;ADC多路復用選擇器ADMUX,控制8個測量的模擬量輸入。

        1.jpg

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

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

        (2) 設置ADIE為1,打開中斷模式

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

        (4)  設置ADSC,以馬上開始轉換

        3.應用

        系統功能:當在模擬通道3輸入電壓超過3V時,系統點亮紅色LED;當輸入電壓小于2V時,點亮黃色LED,當輸入電壓在2V--3V間,點亮綠色LED.

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

        程序代碼:

        #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中斷產生

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙洋县| 金平| 右玉县| 兴安县| 北票市| 嘉义市| 东方市| 四子王旗| 连州市| 亳州市| 漳平市| 沂南县| 云安县| 新化县| 湛江市| 信宜市| 楚雄市| 黄龙县| 苍溪县| 马龙县| 民丰县| 资中县| 万年县| 龙岩市| 河间市| 伊宁县| 东安县| 漳州市| 栾城县| 潮安县| 灵石县| 慈利县| 屯门区| 海伦市| 蓬安县| 西吉县| 邓州市| 墨脱县| 龙游县| 荣成市| 上思县|