单片机AD采集到的数字量 显示问题!

作者&投稿:典震 (若有异议请与网页底部的电邮联系)
单片机AD采集回来的数值如何能显示为对应的电压值?~

voltage=AD_data*Vref/16777216。
voltage为电压值:AD_data为AD芯片的采集离散数值。
Vref为基准电压:16777216为2^24。
比如是2.5V,ADC转换的电压就是2.5/65535 *nAdc(V)。nAdc就是采集的ADC的值,也就是说,ADC的量程为0~2.5V,最小分辨率为2.5/65535=38uV。
Vref就是AD的参考电压,比如要转换5V的电压~ Vref=10V, GND=0V
那么输出的AD结果就是32768(65536的一半),而如果Vref=5V,GND=0V
那么输出的AD结果就是65536。

扩展资料:
电压表,测电压,电路符号圈中V.
测谁电压跟谁并(联),“+”进“-”出勿接反。
(注:实际上电压表不是开路,有电流流过,但由于电压表电阻在10kΩ以上,因此在初中物理中被视为断路。理想中的电压表电阻无限大,但这种电压表是不存在的)
通常先画连电路,最后添加电压表。
量程选用3V,0.1伏一小格。
量程选用15V,一小格为0.5(V)。
参考资料来源:百度百科-电压

看看我这个 adc0808 测电压 然后串口发送,另一边数码管显示

void main(){ while(1) { display(j); //显示子函数 } }

display函数中有没调用y=filter这个函数?如果没有的话,这个程序将永远没有再次读取y值的时候,所以只显示复位时的值。
第二个程序乱闪,是更新太快了吧?如果你的采样得到的值很不稳定,又用很快的速度更新值,那就肯定乱闪了。根据需要,设定一个更新率,比如让一个值显示1秒,1秒后再y=filter()

多位数码管动态少秒的刷新时间,不能超过人眼的暂留视觉20ms,这说明y=filter();占用的时间资源还是不较多的。如果display(j); 函数中有插入显示保持延时或消隐延时,建议:取消这些延时,将y=filter();插入display(j);函数中替代这些延时,既不影响AD数据采集和滤波,又可以保障数码管的正常显示。

加大延时,乱闪估计是延时短然后显示数据刷新的太快导致。