// PT1000 分度表放大1000倍数据
const u32_t PT1000[1024]=
{
1000000, 1000391, 1000782, 1001172, 1001563, 1001954, 1002345, 1002736, 1003126, 1003517,
1003908, 1004298, 1004689, 1005080, 1005470, 1005861, 1006252, 1006642, 1007033, 1007424,
1007814, 1008205, 1008595, 1008986, 1009377, 1009767, 1010158, 1010548, 1010939, 1011329,
1011720, 1012110, 1012501, 1012891, 1013282, 1013672, 1014062, 1014453, 1014843, 1015234,
1015624, 1016014, 1016405, 1016795, 1017185, 1017576, 1017966, 1018356, 1018747, 1019137,
1019527, 1019917, 1020308, 1020698, 1021088, 1021478, 1021868, 1022259, 1022649, 1023039,
1023429, 1023819, 1024209, 1024599, 1024989, 1025380, 1025770, 1026160, 1026550, 1026940,
1027330, 1027720, 1028110, 1028500, 1028890, 1029280, 1029670, 1030060, 1030450, 1030840,
1031229, 1031619, 1032009, 1032399, 1032789, 1033179, 1033569, 1033958, 1034348, 1034738,
1035128, 1035518, 1035907, 1036297, 1036687, 1037077, 1037466, 1037856, 1038246, 1038636,
1039025, 1039415, 1039805, 1040194, 1040584, 1040973, 1041363, 1041753, 1042142, 1042532,
1042921, 1043311, 1043701, 1044090, 1044480, 1044869, 1045259, 1045648, 1046038, 1046427,
1046816, 1047206, 1047595, 1047985, 1048374, 1048764, 1049153, 1049542, 1049932, 1050321,
1050710, 1051100, 1051489, 1051878, 1052268, 1052657, 1053046, 1053435, 1053825, 1054214,
1054603, 1054992, 1055381, 1055771, 1056160, 1056549, 1056938, 1057327, 1057716, 1058105,
1058495, 1058884, 1059273, 1059662, 1060051, 1060440, 1060829, 1061218, 1061607, 1061996,
1062385, 1062774, 1063163, 1063552, 1063941, 1064330, 1064719, 1065108, 1065496, 1065885,
1066274, 1066663, 1067052, 1067441, 1067830, 1068218, 1068607, 1068996, 1069385, 1069774,
1070162, 1070551, 1070940, 1071328, 1071717, 1072106, 1072495, 1072883, 1073272, 1073661,
1074049, 1074438, 1074826, 1075215, 1075604, 1075992, 1076381, 1076769, 1077158, 1077546,
1077935, 1078324, 1078712, 1079101, 1079489, 1079877, 1080266, 1080654, 1081043, 1081431,
1018820, 1082208, 1145596, 1208985, 1272373, 1335762, 1399150, 1462538, 1525926, 1589315,
1085703, 1086091, 1086480, 1086868, 1087256, 1087644, 1088033, 1088421, 1088809, 1089197,
1089585, 1089974, 1090362, 1090750, 1091138, 1091526, 1091914, 1092302, 1092690, 1093078,
1093467, 1093855, 1094243, 1094631, 1095019, 1095407, 1095795, 1096183, 1096571, 1096959,
1097347, 1097734, 1098122, 1098510, 1098898, 1099286, 1099674, 1100062, 1100450, 1100838,
1101225, 1101613, 1102001, 1102389, 1102777, 1103164, 1103552, 1103940, 1104328, 1104715,
1105103, 1105491, 1105879, 1106266, 1106654, 1107042, 1107429, 1107817, 1108204, 1108592,
1108980, 1109367, 1109755, 1110142, 1110530, 1110917, 1111305, 1111693, 1112080, 1112468,
1112855, 1113242, 1113630, 1114017, 1114405, 1114792, 1115180, 1115567, 1115954, 1116342,
1116729, 1117117, 1117504, 1117891, 1118279, 1118666, 1119053, 1119441, 1119828, 1120215,
1120602, 1120990, 1121377, 1121764, 1122151, 1122538, 1122926, 1123313, 1123700, 1124087,
1124474, 1124861, 1125248, 1125636, 1126023, 1126410, 1126797, 1127184, 1127571, 1127958,
1139950, 1140337, 1140724, 1141110, 1141497, 1141884, 1142270, 1142657, 1143043, 1143430,
1132215, 1132602, 1132988, 1133375, 1133762, 1134149, 1134536, 1134923, 1135309, 1135696,
1136083, 1136470, 1136857, 1137243, 1137630, 1138017, 1138404, 1138790, 1139177, 1139564,
1139950, 1140337, 1140724, 1141110, 1141497, 1141884, 1142270, 1142657, 1143043, 1143430,
1143817, 1144203, 1144590, 1144976, 1145363, 1145749, 1146136, 1146522, 1146909, 1147295,
1147681, 1148068, 1148454, 1148841, 1149227, 1149614, 1150000, 1150386, 1150773, 1151159,
1151545, 1151932, 1152318, 1152704, 1153091, 1153477, 1153863, 1154249, 1154636, 1155022,
1155408, 1155794, 1156180, 1156567, 1156953, 1157339, 1157725, 1158111, 1158497, 1158883,
1159270, 1159656, 1160042, 1160428, 1160814, 1161200, 1161586, 1161972, 1162358, 1162744,
1163130, 1163516, 1163902, 1164288, 1164674, 1165060, 1165446, 1165831, 1166217, 1166603,
1166989, 1167375, 1167761, 1168147, 1168532, 1168918, 1169304, 1169690, 1170076, 1170461,
1170847, 1171233, 1171619, 1172004, 1172390, 1172776, 1173161, 1173547, 1173933, 1174318,
1174704, 1175090, 1175475, 1175861, 1176247, 1176632, 1177018, 1177403, 1177789, 1178174,
1178560, 1178945, 1179331, 1179716, 1180102, 1180487, 1180873, 1181258, 1181644, 1182029,
118414, 1182800, 1183185, 1183571, 1183956, 1184341, 1184727, 1185112, 1185597, 1185883,
1186268, 1186653, 1187038, 1187424, 1187809, 1188194, 1188579, 1188965, 1189350, 1189735,
1190120, 1190505, 1190890, 1191276, 1191661, 1192046, 1192431, 1192816, 1193201, 1193586,
1193971, 1194356, 1194741, 1195126, 1195511, 1195896, 1196281, 1196666, 1197051, 1197436,
1197821, 1198206, 1198591, 1198976, 1199361, 1199746, 1200131, 1200516, 1200900, 1201285,
1201670, 1202055, 1202440, 1202824, 1203209, 1203594, 1203979, 1204364, 1204748, 1205133,
1205518, 1205902, 1206287, 1206672, 1207056, 1207441, 1207826, 1208210, 1208595, 1208980,
1209364, 1209749, 1210133, 1210518, 1210902, 1211287, 1211672, 1212056, 1212441, 1212825,
1213210, 1213594, 1213978, 1214363, 1214747, 1215120, 1215516, 1215901, 1216285, 1216669,
1217054, 1217438, 1217822, 1218207, 1218591, 1218975, 1219360, 1219744, 1220128, 1220513,
1220897, 1221281, 1221665, 1222049, 1222434, 1222818, 1223202, 1223586, 1223970, 1224355,
1224739, 1225123, 1225507, 1225891, 1226275, 1226659, 1227043, 1227427, 1227811, 1228195,
1228579, 1228963, 1229347, 1229731, 1230115, 1230499, 1230883, 1231267, 1231651, 1232035,
1232419, 1232803, 1233187, 1233571, 1233955, 1234338, 1234722, 1235106, 1235490, 1235874,
1236257, 1236641, 1237025, 1237409, 1237792, 1238176, 1238560, 1238944, 1239327, 1239711,
1240095, 1240478, 1240862, 1241246, 1241629, 1242030, 1242396, 1242780, 1243164, 1243547,
1243931, 1244314, 1244698, 1245081, 1245465, 1245848, 1246232, 1246615, 1246999, 1247382,
1247766, 1248149, 1248533, 1248916, 1249299, 1249683, 1250066, 1250450, 1250833, 1251216,
1251600, 1251983, 1252366, 1252749, 1253133, 1253516, 1253899, 1254283, 1254666, 1255049,
1255432, 1255815, 1256199, 1256582, 1256965, 1257348, 1257731, 1258114, 1258497, 1258881,
1259264, 1259647, 1260030, 1260413, 1260796, 1261179, 1261562, 1261945, 1262328, 1262711,
1263094, 1263477, 1263860, 1264243, 1264626, 1265009, 1265392, 1265775, 1266157, 1266540,
1266923, 1267306, 1267689, 1268072, 1268455, 1268837, 1269220, 1269603, 1269986, 1270368,
1270751, 1271134, 1271517, 1271899, 1272282, 1272665, 1273048, 1273430, 1273813, 1274195,
1274578, 1274691, 1274803, 1274916, 1275029, 1275141, 1275254, 1275366, 1275479, 1275591,
1278404, 1278786, 1279169, 1279551, 1279934, 1280316, 1280699, 1281081, 1281464, 1281846,
1282228, 1282611, 1282993, 1283376, 1283758, 1284140, 1284523, 1284905, 1285287, 1285670,
1286052, 1286434, 1286816, 1287199, 1287581, 1287963, 1288345, 1288728, 1289110, 1289492,
1289874, 1290256, 1290638, 1291021, 1291403, 1291785, 1292167, 1292549, 1292931, 1293313,
1293695, 1294077, 1294459, 1294841, 1295223, 1295605, 1295987, 1296369, 1296751, 1297133,
1297515, 1297897, 1298279, 1298661, 1299043, 1299425, 1299807, 1300188, 1300570, 1300952,
1301334, 1301716, 1302098, 1302479, 1302861, 1303243, 1303625, 1304006, 1304388, 1304770,
1305152, 1305533, 1305915, 1306297, 1306678, 1307060, 1307442, 1307823, 1308205, 1308586,
1308968, 1309350, 1309731, 1310113, 1310494, 1310876, 1311270, 1311639, 1312020, 1312402,
1312783, 1313165, 1313546, 1313928, 1314309, 1314691, 1315072, 1315453, 1315835, 1316216,
1316597, 1316979, 1317360, 1317742, 1318123, 1318504, 1318885, 1319267, 1319648, 1320029,
1320411, 1320792, 1321173, 1321554, 1321935, 1322316, 1322697, 1323079, 1323460, 1323841,
1324222, 1324603, 1324985, 1325366, 1325747, 1326128, 1326509, 1326890, 1327271, 1327652,
1328033, 1328414, 1328795, 1329176, 1329557, 1329938, 1330319, 1330700, 1331081, 1331462,
1331843, 1332224, 1332604, 1332985, 1333366, 1333747, 1334128, 1334509, 1334889, 1335270,
1335651, 1336032, 1336413, 1336793, 1337174, 1337555, 1337935, 1338316, 1338697, 1339078,
1339458, 1335839, 1332220, 1328600, 1324981, 1321361, 1317742, 1314123, 1310503, 1306884,
1343264, 1343645, 1344025, 1344406, 1344786, 1345167, 1345570, 1345928, 1346308, 1346689,
1347069, 1347450, 1347830, 1348211, 1348591, 1348971, 1349352, 1349732, 1350112, 1350493,
1350873, 1351253, 1351634, 1352014, 1352394, 1352774, 1353155, 1353535, 1353915, 1354295,
1354676, 1355056, 1355436, 1355816, 1356196, 1356577, 1356957, 1357337, 1357717, 1358097,
1358477, 1358857, 1359237, 1359617, 1359997, 1360377, 1360757, 1361137, 1361517, 1361897,
1362277, 1362657, 1363037, 1363417, 1363797, 1364177, 1364557, 1364937, 1365317, 1365697,
1366077, 1366456, 1366836, 1367216, 1367596, 1367976, 1368355, 1368735, 1369115, 1369495,
1369875, 1370254, 1370634, 1371014, 1371393, 1371773, 1372153, 1372532, 1372912, 1373292,
1373671, 1374051, 1374431, 1374810, 1375190, 1375569, 1375949, 1376329, 1376708, 1377088,
1377467, 1377847, 1378226, 1378606, 1378985, 1379365, 1379744, 1380123, 1380503, 1380882,
1381262, 1381641, 1382020, 1382400, 1382779, 1383158, 1383538, 1383917, 1384296, 1384676,
1385055, 1385434, 1385814, 1386193, 1386572, 1386951, 1387330, 1387710, 1388089, 1388468,
9999999, 9999999, 9999999, 9999999, 9999999, 9999999, 9999999, 9999999, 9999999, 9999999,
9999999, 9999999, 9999999, 9999999
};
//******************************************************************************
// 函数名 : f_myfunc_find_pt1000()
// 功能 : 查找PT1000阻值对应的数组下标(数组下标即为温度值的十倍)
// 输入参数 : 阻值(1000000 ~ 1388468)
// 返回值 : 正确:数组下标(0 ~ 1009)错误:0xffff
// 作者 : cxt
// 日期 : 2012.8.23
// 版本号 : 1.0.0
//******************************************************************************
u16_t
f_myfunc_find_pt1000(u32_t data)
{
u16_t start, mid, end;
u32_t dat;
start = 0;
end = 1023;
// 1. 检查数据合法性
if ((data > 1388468) || (data < 1000000))
{
return 0xffff;
}
// 2. 开始二分法查找
while (start <= end)
{
mid = (end + start) >> 1;
dat = PT1000[mid];
if (data > dat)
{
start = mid + 1;
}
else if (data < dat)
{
if (mid)
{
end = mid - 1;
}
else
{
break;
}
}
else
{
return (mid);
}
}
return (mid); // 找不到返回值附件的下标
}
//******************************************************************************
// 函数名 : f_myfunc_get_temp()
// 功能 : 计算PT1000阻值对应的温度
// 输入参数 : 阻值
// 返回值 : 正确:温度范围 0~10090(温度放大了100倍) 错误:0xffff
// 作者 : cxt
// 日期 : 2012.8.24
// 版本号 : 1.0.0
//******************************************************************************
u16_t
f_myfunc_get_temp(u32_t data)
{
u16_t index = 0;
u16_t temp = 0;
// 1. 得到下标
index = f_myfunc_find_pt1000(data);
if (0xffff == index) // 数据格式不正确
{
return 0xffff;
}
// 2. 查找范围
if (PT1000[index] == data) // 正好相等
{
// 3. 计算温度
temp = (index * 10);
}
else
{
// 3. 计算温度
if (PT1000[index] > data)
{
temp = 10*(index-1) + 10*(data-PT1000[index-1]) / (PT1000[index]-PT1000[index-1]);
}
else
{
temp = 10*index + 10*(data-PT1000[index]) / (PT1000[index+1]-PT1000[index]);
}
}
return temp;
}