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

📄 calc.c

📁 本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.
💻 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 + -