①NTC B值100K 3950,客户需要温度范围0 - 120℃
②二分法查表。
③运行时间50us内,时间短,一致好,不影响188数码管扫描。
④方便移植到应广其他单片机。
void NTC_UpperByte_table()
{
A += 1;
_Pcadd
{
ret 0x0C;//0 3138
ret 0x0C;//1 3099
ret 0x0B;//2 3061
ret 0x0B;//3 3020
ret 0x0B;//4 2982
ret 0x0B;//5 2939
ret 0x0B;//6 2898
ret 0x0B;//7 2854
ret 0x0A;//8 2811
ret 0x0A;//9 2769
ret 0x0A;//10 2726
ret 0x0A;//11 2682
ret 0x0A;//12 2638
ret 0x0A;//13 2590
ret 0x09;//14 2544
ret 0x09;//15 2502
ret 0x09;//16 2457
ret 0x09;//17 2410
ret 0x09;//18 2360
ret 0x09;//19 2315
ret 0x08;//20 2275
ret 0x08;//21 2225
ret 0x08;//22 2181
ret 0x08;//23 2136
ret 0x08;//24 2088
ret 0x08;//25 2048
ret 0x07;//26 1995
ret 0x07;//27 1951
ret 0x07;//28 1905
ret 0x07;//29 1869
ret 0x07;//30 1820
ret 0x06;//31 1781
ret 0x06;//32 1728
ret 0x06;//33 1686
ret 0x06;//34 1657
ret 0x06;//35 1613
ret 0x06;//36 1567
ret 0x06;//37 1536
ret 0x05;//38 1487
ret 0x05;//39 1453
ret 0x05;//40 1418
ret 0x05;//41 1383
ret 0x05;//42 1347
ret 0x05;//43 1309
ret 0x04;//44 1271
ret 0x04;//45 1231
ret 0x04;//46 1191
ret 0x04;//47 1170
ret 0x04;//48 1127
ret 0x04;//49 1106
ret 0x04;//50 1061
ret 0x04;//51 1039
ret 0x03;//52 1016
ret 0x03;//53 992
ret 0x03;//54 945
ret 0x03;//55 920
ret 0x03;//56 896
ret 0x03;//57 870
ret 0x03;//58 845
ret 0x03;//59 819
ret 0x03;//60 792
ret 0x03;//61 780
ret 0x02;//62 765
ret 0x02;//63 744
ret 0x02;//64 723
ret 0x02;//65 702
ret 0x02;//66 682
ret 0x02;//67 660
ret 0x02;//68 644
ret 0x02;//69 624
ret 0x02;//70 607
ret 0x02;//71 589
ret 0x02;//72 573
ret 0x02;//73 555
ret 0x02;//74 540
ret 0x02;//75 524
ret 0x01;//76 510
ret 0x01;//77 495
ret 0x01;//78 480
ret 0x01;//79 468
ret 0x01;//80 451
ret 0x01;//81 441
ret 0x01;//82 429
ret 0x01;//83 417
ret 0x01;//84 405
ret 0x01;//85 393
ret 0x01;//86 382
ret 0x01;//87 372
ret 0x01;//88 361
ret 0x01;//89 351
ret 0x01;//90 341
ret 0x01;//91 332
ret 0x01;//92 323
ret 0x01;//93 314
ret 0x01;//94 305
ret 0x01;//95 297
ret 0x01;//96 288
ret 0x01;//97 280
ret 0x01;//98 273
ret 0x01;//99 265
ret 0x01;//100 258
ret 0x00;//101 251
ret 0x00;//102 244
ret 0x00;//103 237
ret 0x00;//104 231
ret 0x00;//105 225
ret 0x00;//106 219
ret 0x00;//107 213
ret 0x00;//108 207
ret 0x00;//109 202
ret 0x00;//110 196
ret 0x00;//111 191
ret 0x00;//112 186
ret 0x00;//113 181
ret 0x00;//114 176
ret 0x00;//115 172
ret 0x00;//116 167
ret 0x00;//117 163
ret 0x00;//118 159
ret 0x00;//119 155
ret 0x00;//120 151
}
}
void NTC_LowerByte_table()
{
A += 1;
_Pcadd
{
ret 0x42;//0 3138
ret 0x25;//1 3099
ret 0xF5;//2
ret 0xCC;//3
ret 0xA6;//4 2982
ret 0x7B;//5 2939
ret 0x52;//6 2898
ret 0x54;//7 2854
ret 0xFB;//8 2811
ret 0xD1;//9 2769
ret 0xA6;//10 2726
ret 0x7A;//11 2682
ret 0x4E;//12 2638
ret 0x1E;//13 2590
ret 0xF0;//14 2544
ret 0xC6;//15 2502
ret 0x99;//16 2457
ret 0x6A;//17 2410
ret 0x38;//18 2360
ret 0x0B;//19 2315
ret 0xE3;//20 2275
ret 0xB1;//21 2225
ret 0x85;//22 2181
ret 0x58;//23 2136
ret 0x28;//24 2088
ret 0x00;//25 2048
ret 0xCB;//26 1995
ret 0x9F;//27 1951
ret 0x71;//28 1905
ret 0x4D;//29 1869
ret 0x1C;//30 1820
ret 0xF5;//31 1781
ret 0xC0;//32 1728
ret 0x96;//33 1686
ret 0x79;//34 1657
ret 0x4D;//35 1613
ret 0x1F;//36 1567
ret 0x00;//37 1536
ret 0xCF;//38 1487
ret 0xAD;//39 1453
ret 0x8A;//40 1418
ret 0x67;//41 1383
ret 0x43;//42 1347
ret 0x1D;//43 1309
ret 0xF7;//44 1271
ret 0xCF;//45 1231
ret 0xA7;//46 1191
ret 0x92;//47 1170
ret 0x67;//48 1127
ret 0x52;//49 1106
ret 0x25;//50 1061
ret 0x0F;//51 1039
ret 0xF8;//52 1016
ret 0xE0;//53 992
ret 0xB1;//54 945
ret 0x98;//55 920
ret 0x80;//56 896
ret 0x66;//57 870
ret 0x4D;//58 845
ret 0x33;//59 819
ret 0x13;//60 792
ret 0x0C;//61 780
ret 0xFD;//62 765
ret 0xE8;//63 744
ret 0xD3;//64 723
ret 0xBE;//65 702
ret 0xAA;//66 682
ret 0x94;//67 660
ret 0x84;//68 644
ret 0x70;//69 624
ret 0x5F;//70 607
ret 0x4D;//71 589
ret 0x3D;//72 573
ret 0x2B;//73 555
ret 0x1C;//74 540
ret 0x0C;//75 524
ret 0xFE;//76 510
ret 0xEF;//77 495
ret 0xE0;//78 480
ret 0xD4;//79 468
ret 0xC3;//80 451
ret 0xB9;//81 441
ret 0xAD;//82 429
ret 0xA1;//83 417
ret 0x95;//84 405
ret 0x89;//85 393
ret 0x7E;//86 382
ret 0x74;//87 372
ret 0x69;//88 361
ret 0x5F;//89 351
ret 0x55;//90 341
ret 0x4C;//91 332
ret 0x43;//92 323
ret 0x3A;//93 314
ret 0x31;//94 305
ret 0x29;//95 297
ret 0x20;//96 288
ret 0x18;//97 280
ret 0x11;//98 273
ret 0x07;//99 265
ret 0x02;//100 258
ret 0xFB;//101 251
ret 0xF4;//102 244
ret 0xED;//103 237
ret 0xE7;//104 231
ret 0xE1;//105 225
ret 0xDB;//106 219
ret 0xD5;//107 213
ret 0xCF;//108 207
ret 0xCA;//109 202
ret 0xC4;//110 196
ret 0xBF;//111 191
ret 0xBA;//112 186
ret 0xB5;//113 181
ret 0xB0;//114 176
ret 0xAC;//115 172
ret 0xA7;//116 167
ret 0xA3;//117 163
ret 0x9F;//118 159
ret 0x9B;//119 155
ret 0x97;//120 151
}
}
byte NTC_Lookup(word adc_data)//50us完成查表,并返回温度值。
{
byte k=2;
byte inL=0,inR=119,inM=0;
word temp=0;
if(adc_data>0xC42)
return 0;
if(adc_data<0x097)
return 120;
while(k>1)
{
k=inR-inL;
inM=(inL+inR)>>1;
A = inM;
NTC_UpperByte_table();
temp $1 = A;
A = inM;
NTC_LowerByte_table();
temp $0 = A;
if(adc_data==temp)
return inM;
else if(adc_data>temp)
inR=inM;
else if(adc_data<temp)
inL=inM;
}
return inL;
}