欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用msp430g2553寫的ad測量電壓的程序 [打印本頁]

作者: 嘎嘎嘎646    時間: 2018-1-18 20:54
標題: 用msp430g2553寫的ad測量電壓的程序
用msp430g2553寫的ad測量電壓的程序,實際調(diào)試的時候ADC10MEM里面確實是有值的,但是轉(zhuǎn)化成電壓值的時候一直都不能轉(zhuǎn)換,求大佬幫忙看一下,或者提供一個可以用的程序。我接的是差不多1.2v的電池,所以檢測到的電壓大于1的時候P1.0會亮,但是實際上一直為我賦的初始值。
void ADC10_Init(void)
{
        ADC10CTL1 |= CONSEQ_2; //單通道重復(fù)采樣模式
        ADC10CTL0 |= SREF_1+REFON+REF2_5V;//選擇內(nèi)部參考源2.5V,打開基準源
        ADC10CTL0 |= ADC10SHT_3+MSC; //過采樣率設(shè)置為64個采樣周期,打開AD轉(zhuǎn)換
        ADC10CTL1|= ADC10SSEL_1+ADC10DIV_1+SHS_0; //ACLK2分頻為采樣時鐘,用ADC10SC觸發(fā)采集
        ADC10CTL1 |=INCH_4; //選擇通道A1
        ADC10CTL0 |= ADC10ON+ADC10SR+REFBURST; //開啟ADC10
        ADC10AE0 |= 0x10; //開啟外部通道A1
}
unsigned long ADSample()//取樣
{
        int i=0;
        unsigned long ADC10_Result;
  ADC10_Init();
  for( i=0;i<8;i++)
  {
          ADC10CTL0 |=ENC+ADC10SC; //開始轉(zhuǎn)換
          while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG標志變高(轉(zhuǎn)換完成)
                    ADC10_Result+=ADC10MEM; //讀取采樣結(jié)果
  }
  AD_Result=AD_Result>>3;
  return ADC10_Result;
}

unsigned long DC_Result()
{
        unsigned long dc_result,dc_sample;
        dc_sample=ADSample()/8;
        dc_result=dc_sample*2.5/1023;//計算電壓值公式
        return dc_result;
}

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
    unsigned long dc_result;
    P1DIR|=BIT0;
    dc_result=DC_Result();
    if(dc_result!=0)
            P1OUT|=BIT0;
    else
            P1OUT&=~BIT0;
        return 0;
}



作者: wbwshuai    時間: 2019-12-1 22:36
這其實和溫度采樣一個道理
作者: f556    時間: 2019-12-2 01:44
我的公式,Vref不一樣,取值不一樣
ADC_Vol1= ((unsigned long)ADC10MEM)*2*252/1023;   
    //Nadc=1023*[(Vin-VR-) /(VR+ - VR-)],ADC0Bh:Vin=Vcc/2,VR見SREF_1
    //VR見SREF_1,Nadc=1023*[(Vin-VR_)/(VR+ - VR_)],ADC0Bh:Vin=Vcc/2;VR見 SREF_1 ;終值Vcc=N*2*1.5/1023
上邊公式,整形運算注意先擴大10、100倍再除,這是基本常識。比如:1/2=0,不是0.5




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1