📄 calc.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 + -