找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4608|回复: 0
收起左侧

C语言二分值查表程序,单片机+NTC测温度

[复制链接]
ID:450849 发表于 2020-7-10 16:45 | 显示全部楼层 |阅读模式
再来发一个驱动代码,希望对大家有帮助,

  1. //NTC_TAB_SIZE
  2. //当查找值 不等于表格中在值时,返回序列号小于下一个值, 例如  表中相邻 120,130, 输入125 则返回  130的序列号;
  3. /**********二分法查表求温度值*********/
  4.   
  5. unsigned char get_ntc_temp(unsigned int value)
  6. {
  7.         
  8.         unsigned char index,middle,min,max=0;         

  9.         min = 0;
  10.         max = NTC_TAB_SIZE-1;

  11.     if((value <= NTC10K_TAB[0])&&(value >= NTC10K_TAB[NTC_TAB_SIZE-1]))
  12.     {
  13.                 if(value == NTC10K_TAB[0])
  14.                 {
  15.                         return 0;
  16.                 }
  17.                 if(value == NTC10K_TAB[NTC_TAB_SIZE-1])
  18.                 {
  19.                         return NTC_TAB_SIZE-1;
  20.                 }
  21.                
  22.                 while(min <= max)
  23.                 {
  24.                         middle = (max + min) >>1;
  25.                         
  26.                         if(value == NTC10K_TAB[middle])
  27.                         {
  28.                                 index = middle;     // TestCnt++;
  29.                                 return index;
  30.                         }
  31.                         else if(value > NTC10K_TAB[middle] )
  32.                         {
  33.                                 max = middle;//TestCnt++;
  34.                         }
  35.                         else if( value <= NTC10K_TAB[middle] )
  36.                         {
  37.                                 min  = middle;//TestCnt++;
  38.                                 if((max - min)==1)
  39.                                 {
  40.                                         return min;
  41.                                 }
  42.                         }
  43.                 }
  44.     }
  45.     else
  46.     {
  47.         index = 0xff;          // 温度超出数组范围,就返回0度
  48.     }
  49.     return index;
  50. }

  51. //        aa = get_ntc_temp(3674);

复制代码

ntc.zip

1.37 KB, 下载次数: 139, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表