完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
没分了,发个帖赚分
//ad值最大4096 //下偏rntc=(4096*上偏电阻)/4096-ad //上偏ntc=(4096-ad)*上偏电阻/ad 查表法 放阻值表 tmp[50]={,,,,,10000,,,,,,};//0~49度 //1000对应25度 //输人电阻值返回温度 //返回值为三位整数,方便数码管显示 u16 get_Temperature(u16 ntc) { u16 i,tmpL,tmpH; u16 t,ftmp; //温度整数和小数 if(ntc<10000)//如果小于25度向前查 for(i=25;i>0;i--)//25是数组下标表示25度 { if(ntc>tmp[i]) { tmpL=tmp[i];//实测阻值的前后温度 tmpH=tmp[i+1];//用于计算小数点位 t=i; //得到对应温度 i=0;//退出循环否则i--为0 } // ftmp=(ntc- tmpL) *10/( tmpH- tmpL); } else //向后查 for(i=25;i<50;i++) { if( ntc tmpH=tmp[i];//注意哪个是高 tmpL=tmp[i-1]; t=i; i=50;//退出循环 } } //计算小数 *10取整数 ftmp=(ntc- tmpL) *10/( tmpH- tmpL); t=t*10+ftmp; return t; } 没有电脑的日子太难过了,纯手机端手打代码,看资料来灵感就写一 段,查表从中间向两头查,效率肯定高一点,欢迎测试! |
|
相关推荐
|
|
二分查表法比你这个效率要高。
uint8 Fine_data_position(u16 *a,u8 ArrayLong,u16 data)//binary searching,表中数据从大到小,入口参数:表地址、表长度、要查找的数据 { u16 begin,end,middle ; u8 i ; begin = 0 ; end = ArrayLong-1 ; i = 0 ; if(data >= a[begin]) return begin ; else if(data <= a[end]) return end ; while(begin < end) { middle = (begin+end)/2 ; if(data == a[middle] ) break ; if(data < a[middle] && data > a[middle+1]) break ; if(data > a[middle]) end = middle ; else begin = middle ; if(i++ > ArrayLong) break ; } if(begin > end ) return 0 ; return middle ; } |
|
|
|
|
|
ljhtao 发表于 2017-5-11 16:24 有没有资料分享下?想学习NTC不知道从哪入手好。。 |
|
|
|
|
|
|
|
|
|
|
|
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 10:33 , Processed in 0.735812 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号