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

发布者:Leishan最新更新时间: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;

}



关键字:单片机  二分法  查找降序 引用地址:【单片机笔记】二分法查找降序最接近的数

上一篇:【单片机笔记】NodeMcu入坑—ESP8266开发环境搭建
下一篇:【单片机笔记】单个按键实现单击、双击、长按的实现

推荐阅读最新更新时间:2024-03-16 16:24

基于51单片机的RS-485的多机通信
//-----------------------函数声明,变量定义--------------------- #include reg51.h sbit RE_DE=P1^0; #define COUNT 10 // 定义接收缓冲区大小 #define Slaver_NUM 10 unsigned char bdata flag; //在可位寻址去定义一个标志变量 sbit time_over_flag =flag^0; //接收超时标志 unsigned char buffer ; //定义缓冲区 unsigned char point; //定义缓冲区位置指示 unsigned char Slave
[单片机]
BF51x DSP处理器超越MCU方案
Blackfin和SHARC处理器是ADI两大DSP产品线,目前一些在工控、测试测量的客户正转向超越MCU的DSP解决方案。例如,以太网(IEEE1588和802.3)/无线连接实现易用性,针对高品质测量的简单连接,系统的可编程灵活性,已从8/16向32位解决方案转移(成为一种必需)。ADI提供多种定点和浮点处理器,在功耗、连接、性能与集成度的关键点上都极具优势。由于具备同时作为DSP和MCU进行无缝连接工作的能力,西门子自动抄表信息系统(AMIS)在其“智能电表”中采用了ADI的Blackfin BF51x处理器,实现极具成本效益的计算性能。 图,BF51χ集成512KB闪存、PWM发生器、IEEE1588    据AD
[嵌入式]
BF51x DSP处理器超越<font color='red'>MCU</font>方案
烧了单片机后续处理
不知不觉半年了,在实验室帮着老师做这个项目也好久了,从最开始的对这个项目不太了解,到现在已经开始对这个有了一定的了解。 8月份就要给厂商看我们的项目了,应该是8月17号左右的时候吧, 我调试另一块暂时不好用的板子的时候,怎么也不通,就是可以下载程序,然而程序却不能正常工作,由于这次的PCB板子质量有点差,贴片单片机的焊盘在焊接的时候就有掉落的了,我先检查了单片机的每根引脚是否都焊好了,用万用表整整检查了4遍都是没有头绪,检查VCC引脚也都没有问题,都是3.3v左右。我又检查了复位,此款单片机C8051F005是低电平复位的,没有问题。检查晶振,这里应该特别说下,此款单片机必须是内部晶振起震后才会带动外部晶振,我想可能是晶振坏了,
[单片机]
基于自编程功能的MCU Bootloader设计
Bootloader是在单片机上电启动时执行的一小段程序。也称作固件,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用应用程序准备好正确的环境。     Boot代码由MCU启动时执行的指令组成。这里的loader指向MCU的Flash中写入新的应用程序。因此,Bootloader是依赖于特定的硬件而实现的,因此,在众多嵌入式产品中目前还不可能实现通用Bootloader。     Bootloader的最大优点是:在不需要外部编程器的情况下,对嵌入式产品的应用代码进行更新升级。它使得通过局域网或者Intemet远程更新程序成为可能。例如,如果有5 000个基于MCU
[嵌入式]
单片机学习记录——LED点阵
硬件连接 如图,16*16的点阵,分为16个POS引脚和16个NEG引脚。其中16个NEG引脚接了74HC595(U16、U17)的并行输出端。我们通过排线把74HC595(U4、U5)的输出端接到J17、J18,使之连到16个POS引脚。所以,点阵的所有32个引脚接了4片74HC595的输出端。4片74HC595又级联起来。相当于只有一个串行输入端P3.4。 74HC595原理分析 https://blog.csdn.net/huangyangquan/article/details/78332246 总结:只需控制SER、SCLK、RCLK就能控制点阵的显示。 软件设计 /************
[单片机]
<font color='red'>单片机</font>学习记录——LED点阵
基于16位单片机的语音电子门锁系统
  生物识别技术是利用人体生物特征进行身份认证的一种技术,是目前公认的最为方便与安全的识别技术。由于每个人的生物特征具有与其他人不同的唯一和在一定时期内不变的稳定性,不易伪造和假冒,所以利用牲识别和技术进行身份认证,安全、准确、可靠。   在生物识别领域中,声纹识别,也称为说话人识别,以其独特的方便性、经济性和准确性等优势受到世人瞩目,并且益成为人们日常生活和工作中重要且普遍的安全认证方式。声纹识别是一种根据说话人语音波形中反映说话人生理和行为特征的语音参数,自动识别说明人身份的技术。   声纹识技术可分为两类,即说话人辨认和说话人确认。前者用以判断某段语音是若干人中的哪一个所说的,是多选一的问题;而后者用以确认某段语音是若干
[安防电子]
基于16位<font color='red'>单片机</font>的语音电子门锁系统
基于单片机的测控系统的抗干扰措施
单片机测控系统的电路较复杂,产生干扰的原因很多。下面几种常用的抗干扰措施。 1、切断干扰的传播途径 1)增加干扰源(如电机、继电器)与敏感器件(如单片机)的距离,用地线把他们隔离或者在敏感器件加上屏蔽罩。 2)电路板合理分区,将强信号、弱信号、数字信号、模拟信号电路合理地分区域布置。 3)单片机和大功率器件的地线要单独接地,以减小互相干扰。大功率器件要尽可能布置在电路板的边缘。 4)在单片机I/O口,电路板连接线等关键地方,使用抗干扰元件可显著提高电路的抗干扰性能。 5)晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。 2、尽量采用抗干扰性能强的单片机 1)、降低单片机内部的电源噪声 在传统
[单片机]
基于<font color='red'>单片机</font>的测控系统的抗干扰措施
基于单片机双CPU构成的复杂系统应用研究
介绍了MC145152-2芯片的特点,并分析了利用该芯片设计1 800 MHz频率合成器的方法。该频率合成器具有较低的相位噪声、很高的频率稳定度,它将在移动通信等领域有广泛的应用。 关键词:频率合成器,锁相环,压控振荡器,相位噪声 1 引 言   介绍了单片机双CPU构成复杂系统的电路以及该系统的几种应用实例。 关键词:单片机,双CPU,总线,数据存储器   单片机以其功能强、体积小、可靠性高及价格低廉等优势,被广泛应用在各种智能化仪器、仪表以及各种小型控制系统中。但其本身结构较为简单,自身资源少,在一些较为复杂的应用系统中就显出其硬件资源不足,速度太慢等缺点。在这种情况下,往往采取双CPU或多CPU的设计
[工业控制]
基于<font color='red'>单片机</font>双CPU构成的复杂系统应用研究
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved