1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
用msp430g2553寫的ad測量電壓的程序
[打印本頁]
作者:
嘎嘎嘎646
時間:
2018-1-18 20:54
標題:
用msp430g2553寫的ad測量電壓的程序
用msp430g2553寫的ad測量電壓的程序,實際調試的時候ADC10MEM里面確實是有值的,但是轉化成電壓值的時候一直都不能轉換,求大佬幫忙看一下,或者提供一個可以用的程序。我接的是差不多1.2v的電池,所以檢測到的電壓大于1的時候P1.0會亮,但是實際上一直為我賦的初始值。
void ADC10_Init(void)
{
ADC10CTL1 |= CONSEQ_2; //單通道重復采樣模式
ADC10CTL0 |= SREF_1+REFON+REF2_5V;//選擇內部參考源2.5V,打開基準源
ADC10CTL0 |= ADC10SHT_3+MSC; //過采樣率設置為64個采樣周期,打開AD轉換
ADC10CTL1|= ADC10SSEL_1+ADC10DIV_1+SHS_0; //ACLK2分頻為采樣時鐘,用ADC10SC觸發采集
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; //開始轉換
while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG標志變高(轉換完成)
ADC10_Result+=ADC10MEM; //讀取采樣結果
}
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