34af9uc的个人空间 https://bbs.21ic.com/?818997 [收藏] [复制] [RSS]

日志

ntc测温算法_06

已有 884 次阅读2021-9-19 18:31 |系统分类:兴趣爱好| ntc测温算法

ntc测温,采集回来的ad值,网上的公式很多,但是看不懂,自己做了一个仅作抛砖引玉给大家提供点思路,不喜勿喷!!!
/**************************************************/
void                wendu_jisuan()                        //温度计算
{
unsigned int js_a1;
temp_a1                =0;                //温度整数
temp_a2                =0;                //温度小数
js_a1                =0;

//ntc_neibu();                        //切换到内部ntc(ad通道8)
//adc_start;                                //启动ADC
//while(!adc_eoc){;;}                //等待转换完成

js_a1                =ADCVH;
js_a1                <<=4;
js_a1                |=ADCVL>>4;

if(js_a1 <343)                //小于-10无法显示
{temp_a1                =-10;}

if(js_a1 <555)                //-1--9℃,每度2.1
        {
        js_a1                -=343;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/210;                        //整数
        temp_a1                =~temp_a1;                        //取反变负数
        temp_a2                =(js_a1%210)/21;        //小数
        return;
        }

if(js_a1 <831)                        //0-9.9℃,每度2.8
        {
        js_a1                -=555;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/280;                        //整数
        temp_a1                +=0;                                //补偿
        temp_a2                =(js_a1%280)/28;        //小数
        return;
        }
if(js_a1 <1179)                //10-19.9℃,每度3.5
        {
        js_a1                -=831;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/350;                        //整数
        temp_a1                +=10;                                //补偿
        temp_a2                =(js_a1%350)/35;        //小数
        return;
        }
if(js_a1 <1587)                //20-29.9℃,每度4
        {
        js_a1                -=1179;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/400;                        //整数
        temp_a1                +=20;                                //补偿
        temp_a2                =(js_a1%400)/40;        //小数
        return;
        }
if(js_a1 <2005)                //30-39.9℃,每度4.1
        {
        js_a1                -=1587;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/410;                        //整数
        temp_a1                +=30;                                //补偿
        temp_a2                =(js_a1%410)/41;        //小数
        return;
        }
if(js_a1 <2405)                //40-49.9℃,每度4
        {
        js_a1                -=2005;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/400;                        //整数
        temp_a1                +=40;                                //补偿
        temp_a2                =(js_a1%400)/40;        //小数
        return;
        }
if(js_a1 <2760)                //50-59.9℃,每度3.5
        {
        js_a1                -=2405;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/350;                        //整数
        temp_a1                +=50;                                //补偿
        temp_a2                =(js_a1%350)/35;        //小数
        return;
        }
if(js_a1 <3072)                //60-69.9℃,每度3.1
        {
        js_a1                -=2760;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/310;                        //整数
        temp_a1                +=60;                                //补偿
        temp_a2                =(js_a1%310)/31;        //小数
        return;
        }
if(js_a1 <3305)                //70-79.9℃,每度2.3
        {
        js_a1                -=3072;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/230;                        //整数
        temp_a1                +=70;                                //补偿
        temp_a2                =(js_a1%230)/23;        //小数
        return;
        }
if(js_a1 <3483)                //80-89.9℃,每度1.8
        {
        js_a1                -=3305;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/180;                        //整数
        temp_a1                +=80;                                //补偿
        temp_a2                =(js_a1%180)/18;        //小数
        return;
        }
if(js_a1 <3627)                //90-99.9℃,每度1.4
        {
        js_a1                -=3483;
        js_a1                *=10;                                //放大10倍
        temp_a1                =js_a1/140;                        //整数
        temp_a1                +=90;                                //补偿
        temp_a2                =(js_a1%140)/14;        //小数
        return;
        }
if(js_a1 >=3627)                //大于100℃无法显示
        {
        temp_a1                =100;
        temp_a2                =0;
        }

}
/**************************************************/                //内部ntc

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)