MF55 103F3950热敏-查表

.c

#include "ntc.h"
#include "main.h"
static float NTCTAB[70]=
{ 
	 2.489,2.580,2.677,2.776,2.880,2.988,3.101,3.219,3.342,3.471, //51~60℃
	 3.601,3.745,3.892,4.045,4.204,4.371,4.546,4.729,4.920,5.120, //50~41℃
		5.329,5.549,5.778,6.019,6.271,6.534,6.810,7.100,7.405,7.724, //40~31℃
		8.058,8.409,8.778,9.166,9.572,10.000,10.450,10.921,11.418,11.941, //30~21℃
		12.491,13.068,13.676,14.317,14.992,15.704,16.452,17.242,18.074,18.953, //20~11℃
		19.880,20.858,21.892,22.984,24.138,25.357,26.645,28.007,29.448,30.974, //10~1℃
	 32.590,34.298,36.107,38.025,40.057,42.215,44.500,46.924,49.499,52.235 //0~-9℃
};
																																																																																																																								
uint8 FineTab(float dat)//表中数据从小到大  
{  
		uint8 st,ed,m ;  
		uint8 i ;     
	
		st = 0 ;  
		ed = 70-1 ;  //和元素下标对应
		i = 0  ;        
	
		if(dat >= NTCTAB[ed]) return ed ;  
		else if(dat <= NTCTAB[st]) return st ;    
	
		while(st < ed)  
		{  
				m = (st+ed)/2 ;        
			
				if(dat == NTCTAB[m] ) break ;  
				if(dat < NTCTAB[m+1] && dat > NTCTAB[m]) 
				{
						if(NTCTAB[m+1]-dat < dat-NTCTAB[m]) 
						{
								m=m+1;
								break ; 
						}
						break ;
				}
				
			
				if(dat > NTCTAB[m]) st = m ;  //ed = m ;                    
				else ed = m ;//st = m ;          
			
				if(i++ > 71) break ;  
		}       
		
		if(st > ed ) return 0 ;     
		
		return m ;    
		
}

.h

#ifndef __BLUE_H_
#define __BLUE_H_

static float NTCTAB[70];
unsigned char FineTab(float dat);

#endif

调用(分压电阻10k)

float AD_NTC1=0;
float V_R25=0;
int8_t temp_1=0;
uint16_t AD_DMA[5]={0,0,0,0,0};


AD_NTC1=AD_DMA[1];
V_R25=4096-AD_DMA[1];
AD_NTC1=10*AD_NTC1/V_R25;
						
temp_1=FineTab(AD_NTC1);
temp_1=60-temp_1;	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值