历史上的今天
今天是:2025年02月15日(星期六)
2019年02月15日 | 【单片机笔记】二分法查找降序最接近的数
2019-02-15 来源:eefocus
最近用到的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 { middle = (left + right)/2; if(num else right = middle; } res = (abs(tab[middle+1] - num) > abs(tab[middle] - num)) ? middle : middle+1; res = (abs(tab[middle-1] - num) > abs(res - num)) ? res : middle-1; return res; }
史海拾趣
|
怎样画CCeCommandBar的背景图,又怎样才能把button放到指定位置? 想做过CCeCommandBar的派生类,各位高人能不能提供个例子啊,谢谢!… 查看全部问答> |
|
我做了一个子过程 while(1)死循环 做监控用的 不停的去发送和接收数据 现在想form loda的时候 运行exe文件后 自动运行程序 打开主窗口 进入这个循环 该如何创建线程呢 我在pc调试能通过的 放到wince ...… 查看全部问答> |
|
有一个方案: BANK0中存放应用程序, BANK1存放BOOTLOADER(或系统程序), BANK0应用程序如果需要更新, 则调用BANK1中的相应代码执行更新操作. 请教各位这样是否可行? 如果可行, 那么BANK1中的相应代码应该才 ...… 查看全部问答> |
|
1. 步进电机简介 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进 ...… 查看全部问答> |
|
大神,低通滤波器可以做解调用吗?? 将80KHZ左右的方波载波加载到10KHZ左右的源信号上,解调输出时,直接用低通滤波器将高于10Khz的信号过滤掉,不知道原理上有没有错误? 我仿真时,直接将80KHZ的方波作为低通滤波器的输入端,但输出为正弦信号 ...… 查看全部问答> |




