久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3239|回復: 0
打印 上一主題 下一主題
收起左側

AD轉換的C語言代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:110389 發表于 2016-3-23 16:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*編寫時間2016.2.9*/
#include <iom16v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
#define PC7_1 PORTC|=1<<7
#define PC7_0 PORTC&=~(1<<7)
#define PC6_1 PORTC|=1<<6
#define PC6_0 PORTC&=~(1<<6)

void m16_init()//單片機初始化
{
DDRA=0x00;
PORTA=0x00;
DDRB=0xff;
PORTB=0x00;
DDRD=0xff;
PORTD=0x00;
DDRC=0xC0;
PORTC=0x00;
}

void delay(uint ms)        //延時0.25ms       
{
        uint i,j;
        for(i=0; i<ms; i++)
                for(j = 0; j < 250; j++);
}

//AD初始化
void adc7_init()       
{                                       
ADMUX = 0x07;   //外部參考電源,右對齊選,擇通道7
ADCSRA = 0x80;         //使能,轉換器2分頻IE=0       
}       

/*  
uint16_t ADC_Convert(void)              // 得到AD結果  
{  
    uint16_t temp1,temp2;  
    temp1=(uint16_t)ADCL;  
    temp2=(uint16_t)ADCH;  
    temp2=(temp2<<8)+temp1;  
    return(temp2);  
}  
*/   
uint ADC_Convert(void)   
{   
    uint i;   
    uint ret;   
    uint max_id, min_id, max_value, min_value;   

    ADMUX  = (1<<MUX0);               // 外部參考電壓,5通道   
    ADCSRA = (1<<ADEN);               // 使能ADC,單次轉換模式   

    // 連續轉換8次   
    for(i=0;i<8;i++)   
    {   
        ADCSRA |= (1<<ADSC);          //開始   
        delay(100);   
        while(ADIF==1)   
        delay(100);   
        ret = ADCL;   
        ret |= (uint16_t)(ADCH<<8);   
        g_aAdValue[i] = ret;            //單次   
    }   
    ret = 0;   
    for(i=1;i<8;i++)   
        ret += g_aAdValue[i];   

    // 找到最大和最小值索引   
    ret /= 7;   
    max_id = min_id = 1;   
    max_value = min_value = 0;   
    for(i=1;i<8;i++)   
    {   
        if(g_aAdValue[i] > ret)   
        {   
            if(g_aAdValue[i] - ret > max_value)   
            {   
                max_value = g_aAdValue[i] - ret;   
                max_id = i;   
            }   
        }   
        else   
        {   
            if(ret - g_aAdValue[i] > min_value)   
            {   
                min_value = ret - g_aAdValue[i];   
                min_id = i;   
            }   
        }   
    }   

    // 去掉第一個和最大最小值后的平均值   
    ret = 0;   
    for(i=1;i<8;i++)   
    {   
        if((i!=min_id) && (i!=max_id))   
            ret += g_aAdValue[i];   
    }   
    if(min_id != max_id)   
        ret /= 5;   
    else   
        ret /= 6;   

    ADCSRA = 0x00;                  // 關閉ADC   

    return ret;   
}   

void Process(uint16_t i,uint8_t *p)   
{   
    p[0]=i/1000;   
    i=i%1000;   
    p[1]=i/100;   
    i=i%100;   
    p[2]=i/10;   
    i=i%10;   
    p[3]=i;   
}   

int main(void)   
{   
    uint16_t ret;   
    m16_init();
    adc7_init();//就是這里卡住了  不往下執行了
    while(1)   
    {   
        ret = ADC_Convert();   
        //i = (i*5.0/1024)*1000;    // 此處浮點也,MCU開支可不小!   
        ret *= 4.88;            // 輸出原值   
        Process(ret,Data);   
        Display(Data);   
    }   
    return 0;   
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99热在线| 成在线人视频免费视频 | 久久九精品 | 国产成人精品福利 | 中文亚洲视频 | 精品1区 | 色综合久久久 | 亚洲精品久久视频 | 日韩日韩日韩日韩日韩日韩日韩 | 91在线资源 | 国产乱码精品一区二区三区五月婷 | 日韩视频一区二区 | 老妇激情毛片免费 | 国产成人精品一区二区三区 | 色婷婷av一区二区三区软件 | 亚洲人在线 | 97国产爽爽爽久久久 | 国产成人精品午夜视频免费 | 91精品国产综合久久久久 | 亚洲三级视频 | 久久男人天堂 | 日本中文在线 | 亚洲色图50p | 色爱av| 日韩精品一区二区三区在线观看 | 国产在线观看网站 | 九九热久久免费视频 | 国产精品99 | 黄色国产 | 国产精品成人一区二区三区夜夜夜 | 久久人人爽人人爽人人片av免费 | 国产视频在线一区二区 | 中国免费黄色片 | 久久精品播放 | 久久成人免费观看 | 毛片免费观看视频 | 亚洲一区在线日韩在线深爱 | 新91视频网 | 欧美一区二区 | 日本三级线观看 视频 | 一级片免费网站 |