应广PFS122计算NTC温度值

①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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值