标题: stc15f2k60s2 十位ADC转换结果(高8低2)可以用八位表示吗 [打印本页]

作者: ssswwwzzz    时间: 2015-8-13 18:34
标题: stc15f2k60s2 十位ADC转换结果(高8低2)可以用八位表示吗
如题  急用  好人一生平安

作者: ville95    时间: 2015-8-13 19:38
你可以直接转换成十进制的数字的。
作者: ville95    时间: 2015-8-13 19:38
本帖最后由 ville95 于 2015-8-13 19:41 编辑

void adc()interrupt 5
{
        ADC_CONTR&=!ADC_FLAG;
        t=(ADC_RES*4+ADC_RESL);
        f=t*4.1/1024;
        m=f*10000;
        value_buf[count]=m;
        count++;
        if(count==10)
        {
                count=0;
                sum=0;
        }        
        else
        {
                sum=sum+value_buf[count-1];
                pjs=sum/count;
        }
        ADC_RES=0;
        ADC_RESL=0;
        ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;
        nop;
        nop;
        nop;
        nop;


作者: 无量寿经    时间: 2015-8-13 21:07
舍弃低2位则只8位了
作者: qswcl000    时间: 2015-8-17 11:11
初学C51,来看看!  顶!!!!
作者: chenshui7601    时间: 2018-1-11 16:52
无量寿经 发表于 2015-8-13 21:07
舍弃低2位则只8位了

这样会不会影响ADC结果
作者: chenshui7601    时间: 2018-1-11 16:57
无量寿经 发表于 2015-8-13 21:07
舍弃低2位则只8位了

这样会不会影响对ADC结果的计算

作者: dzbj    时间: 2018-1-11 19:34
stc的内部AD结果分高位和低位 15系你可以设置高位是2位还是低位是2位 所以你要看一下手册 如果高位是最前面2位 给舍了数值就彻底不一样了 低位的2位舍了就是标准的8位AD

8位AD的精度必然不如10位 转换的结果可以计算但会有点不一样 8位用char就可以 10位要用int 计算上当然不一样了
作者: chenshui7601    时间: 2018-1-12 08:13
dzbj 发表于 2018-1-11 19:34
stc的内部AD结果分高位和低位 15系你可以设置高位是2位还是低位是2位 所以你要看一下手册 如果高位是最前面 ...

回答的很详细,谢谢,明白了!
作者: 917106794    时间: 2020-5-21 09:45
兄弟,楼上回答的很详细了,不能直接用8位的表示,你需要一个十位的数字来接受,不然数据会丢失的,你或者直接把运算的东西返回就行了
作者: 666BOY666    时间: 2020-5-21 11:06
直接转换成十进制的数字的就行了
作者: w254489035    时间: 2020-5-21 12:23
影响ADC精度
作者: ZXL666    时间: 2020-5-21 16:04
转换成十进制的数字的就行了
作者: suqianfu    时间: 2022-6-16 11:03
干嘛不用十位呢?精度起码高一点呀。

adcr = ADC_RES<<2|ADC_RESL;  //int adc转换结果读取高8位与低2位。
作者: herui2128    时间: 2022-6-16 11:24
我感觉10位和8位差别不大呀,我的应用场景应该不同




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1