新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR128的程序——ADC轉換

        AVR128的程序——ADC轉換

        作者: 時間:2016-11-22 來源:網絡 收藏
        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        void Delayms(uint MS);
        void display(uchar FirstBit,uchar Num);
        uchar TempData[8];
        uchar WeiMa[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
        uchar led_discode[11]={0xc0,0xf9,0xa4,0xb0,0x99,
        0x92,0x82,0xf8,0x80,0x90,0xff};
        void display(uchar FirstBit,uchar Num)
        {
        unsigned char i;
        for(i=0;i
        {
        PORTC=led_discode[10];
        PORTA=WeiMa[i+FirstBit];
        PORTC=TempData[i];
        Delayms(2);
        }
        }
        void display1(uchar FirstBit,uchar Num)
        {
        unsigned char i;
        for(i=0;i
        {
        PORTC=led_discode[10];
        PORTA=WeiMa[i+FirstBit];
        PORTC=0X7F;
        Delayms(2);
        }
        }
        void port_init(void)
        {
        DDRF = 0x00;
        PORTF= 0x00;
        }
        void adc_init(void)
        {
        ADMUX = 0x00;
        ADCSRA= 0x00;
        ADMUX |= 0X40;
        ADCSRA |= 0XE8;
        }
        //AD是10位的,那么它將基準為5V的電壓分為1024份,精度就很高了。
        void data_pro(uint temp_l,uint temp_h)
        {
        uint temp1,temp2,dyz;
        temp1=temp_h*256;
        temp2=temp1+temp_l;
        dyz= ((500 * (long)temp2)>>10);
        temp2 = (uint)dyz;
        TempData[0]=led_discode[temp2/100];
        TempData[1]=led_discode[temp20/10];
        TempData[2]=led_discode[temp20];
        }
        void main(void)
        {
        port_init();
        adc_init();
        DDRA=0XFF;
        PORTA=0XFF;
        DDRC=0XFF;
        PORTC=0XFF;
        DDRF|=0X0E;
        PORTF|=0X0E;
        PORTF&=0xF7;
        DDRB |=0X10;
        PORTB|=0X10;
        TempData[0]=led_discode[0];
        TempData[1]=led_discode[0];
        TempData[2]=led_discode[0];
        TempData[3]=led_discode[0];
        SEI();
        while(1);
        }
        void Delayms(uint MS)
        {
        uint i,j;
        for( i=0;i
        for(j=0;j<1141;j++);
        }
        #pragma interrupt_handler adc_isr:22
        void adc_isr(void)
        {
        uint adc_l,adc_h;
        adc_l=ADCL;
        adc_h=ADCH;
        data_pro(adc_l,adc_h);
        display(5,3);
        display1(5,1);
        }


        關鍵詞: AVR128ADC轉

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 原阳县| 平阳县| 中牟县| 聂荣县| 伊宁市| 陆良县| 永吉县| 鄯善县| 普兰店市| 荔波县| 商都县| 盘山县| 崇仁县| 刚察县| 东丽区| 光泽县| 平舆县| 普洱| 泽库县| 洞口县| 商城县| 招远市| 黑山县| 巴中市| 咸丰县| 海兴县| 岐山县| 扬州市| 平安县| 邳州市| 玉树县| 通城县| 刚察县| 沈阳市| 云阳县| 庆阳市| 太仓市| 同江市| 乐平市| 禹城市| 宁明县|