欧美极品高清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