⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calc.c

📁 2分法查表
💻 C
字号:
//**********************************************************************
//功能		: 二分法查表程序
//作者		: lihj
//创建日期	: 2004-06-20
//版本		: V1.0
//修改记录	:
//***********************************************************************
#define TMP_STEP	10	//温度放大倍数

//电阻值放大100倍
//PT100阻值--温度表;
code unsigned int PT100[501]=
{
	//1852,1938,2025,2111,2197,		//pt100,table from -200to 0
	//2283,2368,2454,2539,2624,
	//2710,2795,2880,2964,3049,
	//3134,3218,3302,3386,3470,
	//3554,3638,3722,3805,3889,
	3972,4056,4139,4222,4305,
	4388,4470,4553,4636,4718,
	4800,4883,4965,5047,5129,
	5211,5293,5375,5456,5538,
	5619,5701,5782,5863,5944,
	6026,6107,6188,6268,6349,
	6430,6511,6591,6672,6752,
	6833,6913,6993,7073,7153,
	7233,7313,7393,7473,7553,
	7633,7712,7792,7872,7951,
	8031,8110,8189,8269,8348,
	8427,8506,8585,8664,8743,
	8822,8901,8980,9059,9137,
	9216,9295,9373,9452,9530,
	9609,9687,9765,9844,9922,
	
	10000,10078,10156,10234,10312, 	//pt100,table from 0to 850
	10390,10468,10546,10624,10702,
	10779,10857,10935,11012,11090,
	11167,11245,11322,11400,11477,
	11554,11631,11708,11786,11863,
	11940,12017,12094,12171,12247,
	12324,12401,12478,12554,12631,
	12708,12784,12861,12937,13013,
	13090,13166,13242,13318,13395,
	13471,13547,13623,13699,13775,
	13851,13926,14002,14078,14154,
	14229,14305,14380,14456,14531,
	14607,14682,14757,14833,14908,
	14983,15058,15133,15208,15283,
	15358,15433,15508,15583,15658,
	15733,15807,15882,15956,16031,
	16105,16180,16254,16329,16403,
	16477,16551,16626,16700,16774,
	16848,16922,16996,17070,17143,
	17217,17291,17365,17438,17512,
	17586,17659,17733,17806,17879,
	17953,18026,18099,18172,18246,
	18319,18392,18465,18538,18611,
	18684,18756,18829,18902,18975,
	19047,19120,19192,19265,19337,
	19410,19482,19555,19627,19699,
	19771,19843,19915,19987,20059,
	20131,20203,20275,20347,20419,
	20490,20562,20634,20705,20777,
	20848,20920,20991,21063,21134,
	21205,21276,21348,21419,21490,
	21561,21632,21703,21774,21844,
	21915,21986,22057,22127,22198,
	22268,22339,22409,22480,22550,
	22621,22691,22761,22831,22902,
	22972,23042,23112,23182,23252,
	23321,23391,23461,23531,23600,
	23670,23740,23809,23879,23948,
	24018,24087,24156,24226,24295,
	24364,24433,24502,24571,24640,
	24709,24778,24847,24916,24985,
	25053,25122,25191,25259,25328,
	25396,25465,25533,25601,25670,
	25738,25806,25874,25942,26010,
	26078,26146,26214,26282,26350,
	26418,26486,26553,26621,26689,
	26756,26824,26891,26959,27026,
	27093,27161,27228,27295,27362,
	27429,27496,27563,27630,27697,
	27764,27831,27898,27964,28031,
	28098,28164,28231,28297,28364,
	28430,28497,28563,28629,28695,
	28762,28828,28894,28960,29026,
	29092,29158,29224,29289,29355,
	29421,29486,29552,29618,29683,
	29749,29814,29880,29945,30010,
	30075,30141,30206,30271,30336,
	30401,30466,30531,30596,30661,
	30725,30790,30855,30920,30984,
	31049,31113,31178,31242,31306,
	31371,31435,31499,31564,31628,
	31692,31756,31820,31884,31948,
	32012,32075,32139,32203,32267,
	32330,32394,32457,32521,32584,
	32648,32711,32774,32838,32901,
	32964,33027,33090,33153,33216,
	33279,33342,33405,33468,33530,
	33593,33656,33718,33781,33844,
	33906,33969,34031,34093,34156,
	34218,34280,34342,34404,34466,
	34528,34590,34652,34714,34776,
	34838,34899,34961,35023,35084,
	35146,35208,35269,35330,35392,
	35453,35514,35576,35637,35698,
	35759,35820,35881,35942,36003,
	36064,36125,36185,36246,36307,
	36367,36428,36489,36549,36610,
	36670,36730,36791,36851,36911,
	36971,37031,37091,37151,37211,
	37271,37331,37391,37451,37511,
	37570,37630,37690,37749,37809,
	37868,37928,37987,38046,38106,
	38165,38224,38283,38342,38401,
	38460,38519,38578,38637,38696,
	38755,38814,38872,38931,38990,
	39048
};
	 
//Cu-50
//温度范围:-50~150
code unsigned int Rcu[101]=				
{
	3924,3967,4010,4054,4097,
	4140,4183,4227,4269,4312,
	4355,4398,4441,4484,4527,
	4570,4613,4656,4699,4742,
	4785,4828,4871,4914,4957,
	5000,5043,5086,5128,5171,
	5214,5257,5300,5343,5386,
	5428,5471,5514,5557,5600,
	5642,5685,5728,5771,5814,
	5856,5899,5942,5985,6027,
	6070,6113,6156,6198,6241,
	6284,6327,6370,6412,6455,
	6498,6541,6583,6626,6669,
	6712,6754,6797,6840,6883,
	6926,6968,7011,7054,7097,
	7140,7183,7225,7268,7311,
	7354,7397,7440,7483,7526,
	7568,7611,7654,7697,7740,
	7783,7826,7869,7912,7955,
	7998,8041,8084,8127,8170,
	8213
};

//函数功能:通过查表计算温度值
//输入参数:<r_value>	:电阻值,放大100倍
//	    <pTable>	:温度-电阻值表格(ITS-90)指针
//	    <length>	: 表格大小
//	    <down_lim>	:温度量程下限
//	    <up_lim>	:温度量程上限
//输出参数:温度值,放大10倍
int CacTemp(unsigned int r_value, unsigned int *pTable, unsigned int length, int down_lim,int up_lim)
{
	int temp,j=0;
	unsigned int k1,k2;
	unsigned char k;

	//电阻值限幅
	if(r_value <= *pTable)
	{
		return down_lim*TMP_STEP;
	}
	else if(r_value >= *(pTable+length-1))
	{
		return up_lim*TMP_STEP;
	}
	
	//二分法查表
	k1 = length;
	k2 = 0;
   	for(k=0;k<12;k++)
	{
		j = (k1 + k2)>>1;
		if(r_value < *(pTable+j))
		{
			k1 = j;			//修改上限
			if(r_value >= *(pTable + j - 1)) 
			{
				pTable = pTable + j;
				j --;
				break;	
			}
		}
		else
		{
			k2 = j;			//修改下限
			if(r_value < *(pTable + j + 1))
			{
				pTable = pTable + j + 1;
				break;
			}
		}
    	}

	j = j*2 + down_lim;
	temp = j*TMP_STEP + (unsigned long)(r_value - *(pTable-1))*2*TMP_STEP/(*pTable - *(pTable-1));
	
	return temp;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -