|
ntc热敏电阻测温,用折半查表法,单片机是stc12c5410ad带10位ad,表的数据ntctab[]=1024*Rm/(Rm+Rntc),显示的结果为00,请各位高手帮帮忙!!程序如下:
void NTCADC(void)
{
WORD ADC_TEMP = 0;//转换后的数据
BYTE i,M= 0,CHBSTART=0,CHBEND=99;//用于折半查表,0-99摄氏度
//主程序中已经打开了adc电源
ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag
ADC_CONTR &= ~ADC_FLAG; //Close ADC
ADC_TEMP = ((ADC_DATA<<2)|(ADC_LOW2&0x03));
for(i=0;i<7;i++) //搜索全表
{
M=CHBSTART+(BYTE)(CHBEND-CHBSTART)/2;
if(NTCTAB[M]
else if(NTCTAB[M]>ADC_TEMP) CHBEND = M;
else //查到相等的节点
DISDGUF[4] = M/10;
DISDGUF[5] = M%10;
}
}
|
|