标题: 单片机AD转换出来的数值,到底怎么显示在数码管上? [打印本页]

作者: 教教我单片机把    时间: 2019-3-12 19:14
标题: 单片机AD转换出来的数值,到底怎么显示在数码管上?
关于AD转换我还是不懂啊
作者: wulin    时间: 2019-3-13 09:47
以8位AD转换为例,AD转换得到的数值是0x00~0xff,也就是0~255。其对应的电压值是0~VCC,需要换算:
输入电压=转换结果*VCC/256。例如用2位数码管显示测量电压,假设转换结果是0xA6,
data=(0xA6*5/256*100+5)/10,放大100倍+5是小数四舍五入,得到整数结果data=32,显示时在十位数加小数点即可显示成3.2 。
作者: sheng7533967    时间: 2019-3-13 10:52
wulin 发表于 2019-3-13 09:47
以8位AD转换为例,AD转换得到的数值是0x00~0xff,也就是0~255。其对应的电压值是0~VCC,需要换算:
输入电 ...

很好,写的很详细!解疑释惑就要这样!very good!

作者: 教教我单片机把    时间: 2019-4-30 20:00
wulin 发表于 2019-3-13 09:47
以8位AD转换为例,AD转换得到的数值是0x00~0xff,也就是0~255。其对应的电压值是0~VCC,需要换算:
输入电 ...

老哥,我我用ADC0832如果要做一个0-10V的电压表,是不是把你写的vcc改成10就可以了?
作者: mhwgonx    时间: 2019-9-4 20:23
wulin 发表于 2019-3-13 09:47
以8位AD转换为例,AD转换得到的数值是0x00~0xff,也就是0~255。其对应的电压值是0~VCC,需要换算:
输入电 ...

方法讲解的很详细,使人很快就懂了。暂时不知道怎么评分。
作者: cheney03    时间: 2020-12-29 11:08
一楼讲解通俗易懂,转换懂了,显示就是工具的事了,数码管,LCD,TFT,OLED都可以显示
作者: 苯氯乙酮    时间: 2020-12-29 12:29
数码管的编码也要知道啊
作者: 湖南    时间: 2020-12-29 14:51
采集的数据值转变成 百位  十位 个位 然后依次显示在数码管就行
作者: liuhailan5757    时间: 2020-12-30 17:44
教教我单片机把 发表于 2019-4-30 20:00
老哥,我我用ADC0832如果要做一个0-10V的电压表,是不是把你写的vcc改成10就可以了?

单片机和AD类的IC只能检测5V以下的电压。你要检测10V,就得把10V缩小到5V以内。转换完了在等比放大就行了。
作者: rayin    时间: 2020-12-30 19:45
void display_temp(unsigned char add, unsigned short dat)//ÏòLCDD′ζèêy¾Y,2¢Ö¸¶¨ÏÔê¾Î»ÖÃ
{        unsigned char gw,sw,xw,a,sign;
        if(dat&0xf800)
        {  sign=1;
           dat=~dat;
                 dat+=1;
        }       
        else sign=0;
       
        a=dat&0x0f;
        xw=ditab[a];
        dat>>=4;
        gw=dat%10;//è¡μøöλêy×Ö
        sw=(dat/10)%10;//è¡μÃê®Î»êy×Ö
  write_1602com(add);       
        if(sw)        write_1602dat(0x30+sw);//10μÃμ½¸Ãêy×ÖμÄLCD1602ÏÔê¾Âë
        else write_1602dat(' ');
        if(sign)
        {        write_1602com(add);               
                write_1602dat('-');
        }
        if(sw&&sign)
        { write_1602com(add-1);               
                write_1602dat('-');
                write_1602dat(0x30+sw);
        }
        write_1602dat(0x30+gw);//μÃμ½¸Ãêy×ÖμÄLCD1602ÏÔê¾Âë
  write_1602dat('.'); //
        write_1602dat(0x30+xw); //xiaoshuwei
  write_1602dat(0xdf);//ÏÔê¾Î¶èμÄD¡Ô2è|·ûoÅ£¬0xdfêÇòo¾§Æá×Ö·û¿aμĸ÷ûoÅμØÖ·Âë
  write_1602dat('C');        //ÏÔê¾"C"·ûoÅ£¬0x43êÇòo¾§Æá×Ö·û¿aàï′óD′CμÄμØÖ·Âë               
}

以上18b20的代码在LCD1602上显示数值可以供参考,




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