本帖最后由 yuhouwuyun 于 2017-1-13 09:33 编辑
float Get_Tempself(void)
{
uint16_t temp;
float Vt=0,count=0;
FVRCONbits.TSEN=1; //使能温度指示
FVRCONbits.TSRNG=0; //2个二极管
ADCON0bits.CHS=0x1D; //温度指示器通道
__delay_us(1000);
ADCON0bits.ADRMD=0; //12位温度格式
ADCON1=0B00100001; //符号数值结果形式,FOSC/32,ADC负参考接地,ADC正参考接VREF
ADCON2=0B00001111; //不使用触发,负参考参考ADCREF负参考
ADCON0bits.ADON=1; //开启ADC转换模块
__delay_us(1000);
ADCON0bits.GO=1; //开始转换
while(ADCON0bits.GO);
temp=(ADRESH<<8)|ADRESL; //读取2进制值
temp>>=4;
count=((temp*2.5)/4095);
Vt=((3.3-count)/2);
return Vt;
} |