我这个是用AD转换达到热敏电阻测温的程序 里面是用到一个 热敏电阻B值个阻值的计算 里面的ln()这个对数函数编译时会报错
#include "stm8l15x.h" //STM8L051/151公用库函数
#include "usart1.h"
#include "adc.h"
void Delay(__IO uint16_t nCount)
{
while (nCount != 0)
{
nCount--;
}
}
u16 value;
double u_value; //电压
float i_value;//电流
float r_value; //电阻
float t_value; //k度 绝度温度+摄氏度
float T_value; //摄氏度
float adc_value=3.14;
void main(void)
{
usart1_init();
adc_init();
while(1)
{
ADC_SoftwareStartConv( ADC1);//开始转换
while( !ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//等待转换完成
ADC_ClearFlag( ADC1, ADC_FLAG_EOC);
value=ADC_GetConversionValue( ADC1);
u_value=(double)value*3300UL/4095UL/1000;
i_value=(float)(3.3-u_value)/20000;
r_value=(float)value/1000/i_value;
t_value=(1297*309.65)/ln(r_value/7724); // 这个ln()这里怎样去表达
//1297为B值 求K度 T0是309.65 R0是7724
T_value=t_value-273.15; //摄氏 度
Delay(60000);
printf("adc_value=%f
",adc_value);
Delay(60000);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原来要用到log10() 刚试过 没报错了
还笑,还笑,快设置已解决。
下次用到数学计算,记得包含math.h,函数拿不准就打开math.h看看。
一周热门 更多>