//******************************************************************** // Ver 1.0 // 2021.11.19 1¡¢Ð½¨Îļþ¡£ //******************************************************************** #include "config.h" #ifdef NTC_10K_B3435 //ͨÓà INT32U const NTC_Tab[NTC_Step] = { 228237, //0,-40¶È, 169591, //1,-35¶È, 127475, //2,-30¶È, 96862, //3,-25¶È, 74353, //4,-20¶È, 57626, //5,-15¶È, 45067, //6,-10¶È, 35548, //7,-5¶È, 28267, //8,0¶È, 22649, //9,5¶È, 18280, //10,10¶È, 14855, //11,15¶È, 12150, //12,20¶È, 10000, //13,25¶È, 8278, //14,30¶È, 6891, //15,35¶È, 5768, //16,40¶È, 4852, //17,45¶È, 4101, //18,50¶È, 3482, //19,55¶È, 2970, //20,60¶È, 2544, //21,65¶È, 2187, //22,70¶È, 1888, //23,75¶È, 1636, //24,80¶È, 1381, //25,85¶È, 1203, //26,90¶È, 1052, //27,95¶È, 922, //28,100¶È, }; #endif //׿ÀÊ΢10K/B3435/1% #ifdef NTC_ZLW_10K_B3435 INT32U const NTC_Tab[NTC_Step] = { 203750, //0,-40¶È, 152664, //1,-35¶È, 116110, //2,-30¶È, 89350, //3,-25¶È, 69434, //4,-20¶È, 54425, //5,-15¶È, 43000, //6,-10¶È, 34226, //7,-5¶È, 27513, //8,0¶È, 22144, //9,5¶È, 18016, //10,10¶È, 14704, //11,15¶È, 12092, //12,20¶È, 10000, //13,25¶È, 8314, //14,30¶È, 6948, //15,35¶È, 5835, //16,40¶È, 4923, //17,45¶È, 4168, //18,50¶È, 3550, //19,55¶È, 3033, //20,60¶È, 2602, //21,65¶È, 2240, //22,70¶È, 1935, //23,75¶È, 1678, //24,80¶È, 1461, //25,85¶È, 1275, //26,90¶È, 1117, //27,95¶È, 983, //28,100¶È, }; #endif #ifdef NTC_100K_B3950 INT32U const NTC_Tab[NTC_Step] = { 3376080, //0,-40¶È, 2390220, //1,-35¶È, 1724780, //2,-30¶È, 1265000, //3,-25¶È, 940885, //4,-20¶È, 708422, //5,-15¶È, 539171, //6,-10¶È, 414316, //7,-5¶È, 321140, //8,0¶È, 250886, //9,5¶È, 198530, //10,10¶È, 156407, //11,15¶È, 124692, //12,20¶È, 100000, //13,25¶È, 80650, //14,30¶È, 65395, //15,35¶È, 53300, //16,40¶È, 43659, //17,45¶È, 35881, //18,50¶È, 29713, //19,55¶È, 24681, //20,60¶È, 20592, //21,65¶È, 17253, //22,70¶È, 14517, //23,75¶È, 12265, //24,80¶È, 10404, //25,85¶È, 8859, //26,90¶È, 7573, //27,95¶È, 6498, //28,100¶È, }; #endif //ζȷµ»Ø·¶Î§-40~100£¬ INT16S NTC_Temperature(INT16U tVol, INT16U VrefSelect) { INT32U tNtcValue, tNtcValueHigh, tNtcValueLow; INT16U tTemp, i; #ifdef __SH367309__H tNtcValue = tVol; #else tNtcValue = (((INT32U)R1_Value * tVol) / (VrefSelect - tVol)); tNtcValue -= ADC_RES_Value; #endif if (tNtcValue > NTC_Tab[0]) { tTemp = 0 * 10; } else if (tNtcValue < NTC_Tab[NTC_Step - 1]) { tTemp = 140 * 10; } else { for (i = 0; i < NTC_Step; i++) { tNtcValueHigh = NTC_Tab[i]; tNtcValueLow = NTC_Tab[i + 1]; if (tNtcValueLow < tNtcValue) { break; } } //tTemp=i*5+(tNtcValueHigh-tNtcValue)*5/(tNtcValueHigh-tNtcValueLow); tTemp = i * 50 + (tNtcValueHigh - tNtcValue) * 50 / (tNtcValueHigh - tNtcValueLow); } return ((INT16S)tTemp - 400); }