【单片机笔记】二分法查找降序最接近的数

最近用到的ntc热敏电阻比较多,测温度精度还可以,最主要的是还很廉价,原理是不同温度环境下热敏电阻的阻值不同,利用这个搭建一个电路用ADC测出来再转换得到热敏的电阻值就可以用查表就可以得到温度了。一般的温度阻值表多是降序的,而且非线性,这样的话就需要查找一个最接近的值去粗略的得到温度,也还是能精确到1度的。至于如何制把厂家给的pdf或者excel制作成程里面的数组,之前的笔记也有专门提到:

代码中非线性表快速转换成数组的实用方法

最后贴上查找代码:

static u8 Find_Num(const unsigned int code *tab,u16 SIZE, u16 num)
{
	u8 left = 0,right = SIZE-1;	
	
	u8 middle;
	
	u8 res;
	while(left abs(tab[middle] - num)) ? middle : middle+1;

	res = (abs(tab[middle-1] - num) > abs(res - num)) ? res : middle-1;	
	
	return res;
}
By Urien 2018年6月7日 12:10:46 

你可能感兴趣的:(单片机)