求教51单片机除法计算问题。
本帖最后由 wt13568089592 于 2015-11-18 12:45 编辑我写了这么一个函数,stc15w408as上运行,我采集2路AD,一路是431的,用来校准,可是算出的ntc——val值很小。Get_ADC10bitResult(2)=445,Get_ADC10bitResult(1)=518;ntc_val=Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1); 这一句算出来的值只有100以下,正常情况下应该算出来是2000++的啊?
求解
void NTC_temperature()
{
unsigned long int ntc_val;
unsigned char a;
ntc_val=Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1);
// TxSend(Get_ADC10bitResult(1));
for(a=0;wendubiao>ntc_val;a++)//查表计算室温
{
if(a>=135)//如果超出表的范围就取允许的最高温度(105度)
break;//并且退出查表
}
shiwen=a;
}
求解啊? Get_ADC10bitResult改为(unsigned long)Get_ADC10bitResult 谢谢啊
你拿16位的变量做大数值的运算,溢出了。可以强转32位:
ntc_val = (u32)Get_ADC10bitResult(2)*2495/Get_ADC10bitResult(1);
另外,NTC是相对测量,不需要测量实际的电压。
页:
[1]