温度指示器问题

[复制链接]
639|30
手机看帖
扫描二维码
随时随地手机跟帖
llia|  楼主 | 2020-2-15 11:32 | 显示全部楼层 |阅读模式
PIC16F1786
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;

}

使用特权

评论回复
huwr| | 2020-2-15 11:35 | 显示全部楼层

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
llia|  楼主 | 2020-2-15 11:38 | 显示全部楼层
采集到的Vt计算后得到1.5V,不在1333手册温度电压的关系之内。求大家帮我分析一下。

使用特权

评论回复
happy_10| | 2020-2-15 11:41 | 显示全部楼层

你测一下其他通道对不对

使用特权

评论回复
houcs| | 2020-2-15 11:43 | 显示全部楼层
这个没用过,为什么结果要右移4位?

使用特权

评论回复
ousj| | 2020-2-15 11:51 | 显示全部楼层
是否对齐方式为高位对齐?

使用特权

评论回复
xxmmi| | 2020-2-15 11:54 | 显示全部楼层
本来有低位对齐的

使用特权

评论回复
llia|  楼主 | 2020-2-15 11:56 | 显示全部楼层
12位的AD,函数输出时,直接是(ADRESH<<8)|ADRESL,所以右移四位,进行12位的计算。

使用特权

评论回复
tian111| | 2020-2-15 12:00 | 显示全部楼层
接VREF,这个实际接的什么?

使用特权

评论回复
llia|  楼主 | 2020-2-15 12:08 | 显示全部楼层
VREF这个是实接3.3V

使用特权

评论回复
tian111| | 2020-2-15 12:11 | 显示全部楼层
为什么要用浮点?

使用特权

评论回复
tian111| | 2020-2-15 12:13 | 显示全部楼层
8位芯片上轻易不要选择开浮点

使用特权

评论回复
wenfen| | 2020-2-15 12:15 | 显示全部楼层
看了一下你的代码,完全可以很容易的转换为整数运算,完全没必要用浮点。

使用特权

评论回复
zhuww| | 2020-2-15 12:18 | 显示全部楼层
开启ADC转换模块后,为何要__delay_us(1000)?

使用特权

评论回复
tian111| | 2020-2-15 12:23 | 显示全部楼层
对啊,此处最多放几个NOP指令即可

使用特权

评论回复
zhuhuis| | 2020-2-15 12:25 | 显示全部楼层
对啊,为何要1000us ?

使用特权

评论回复
llia|  楼主 | 2020-2-15 12:29 | 显示全部楼层
由于是测试工程,对空间和运算要求不是很高,单独对片内温度指示器进行采集的小程序。

使用特权

评论回复
wenfen| | 2020-2-15 12:32 | 显示全部楼层
试试改成: temp=(ADRESH<<8)+ADRESL

使用特权

评论回复
songqian17| | 2020-2-15 12:37 | 显示全部楼层
temp=(temp>>4);  此代码没看懂你想干啥?

使用特权

评论回复
zwll| | 2020-2-15 12:39 | 显示全部楼层
该代码使用了大量delay,不清楚你产品中有无开启定时或者其他中断,如果开启了,你这代码基本就是‘麻烦代码’!!!如果没开启,绝对没有高手这么构建代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

961

主题

8893

帖子

4

粉丝