PIC 16f877 中关于10位AD转换问题

2019-03-25 19:09发布

很奇怪,我转换出来的数字线性度很差,有一直上扬的趋势,我只用到了AD0,时钟是Fosc/32,单片机晶振4M, 为什么我得到的转换结果差这么多,直接加1V电压,转换的结果将近1.5V左右,请问是我哪里没用好?当我用其它Fosc/8时,转换结果更差?搞不明白?? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
cinderella_lh
2019-03-26 19:59
unsigned short ConvertAnalog(char ChannelNo)
{
    switch(ChannelNo)
    {
     case 0:
        ADCON0&=0xc7;
     break;
     case 1:
        ADCON0|=0x08 ;
     break;
     case 2:
     break;
     case 3:
     break;
     case 4:
     break;
   default:
    break;

    }
    ADON=1;
    DelayUs(50);
    ADGO=1;
    while(ADGO);
    return((unsigned short)((ADRESH&0x03)<<8)|ADRESL);//右对齐

}

还有就是我没用VREF+,和VREF-功能,用的是VDD,和VSS,当这个VDD不是5V,或有些偏差时,是不是会对结果有影响?



一周热门 更多>