51单片机做模数实验时,让数码管显示出AD芯片输出对应的值,可是为什么数码管显示会不稳定,比如这个

51单片机做模数实验时,让数码管显示出AD芯片输出对应的值,可是为什么数码管显示会不稳定,比如这个图,180却少了一竖,,而且不调节电位器时数码管也会自己变化数学,怎么解决啊,后来我改了一下,把输出的八位数据输到led上,结果不拧电位器时还是有的灯会闪烁,会变化,求解决

A/D转换电路的转换结果的最低位是会变化的,很正常,一是模拟电压不够稳定,要求非常稳定才能,可实际上做不到的,二是转换电压工作时会有点误差的,导致转换后的数字量的是低位是不稳定的,你用过,数字万能表吗,就是这种现象,不论测什么,最低位的数是不停在变化的,这是这个原因的。因为,你追问时,肯定程序没有错,那大概就是这个原因了。追问

那要怎么解决?

追答

看你的数码管是前面的一位闪烁,这可不是最低,这可能是因为程序的问题,确实需要查下程序,或者显示的数据位颠倒了,闪烁那位是最低。对于最低位显示是变化的,一种方法是在ADC0804的模拟电压输入端并一个电解电容,可以得到改善。

追问

在输入端??为啥不是输出端?

我也不知道,数码管那个代码检查过了,应该没问题,

追答

在ADC0804的模拟电压输入端并一个电解电容,是为了防止输入的模拟电压变化,可以防止转换后的数字不稳定。而输出端是转换后的数字量,是与单片机相连的8位数据线,并联想把数据都过滤掉啊?
数码管的代码没有问题,那就是读取ADC0804转换数据的程序有问题,还有ADC0804的数据线与单片机是怎么连接的,高低位是不是弄反了。

追问

应该不会,我用的是买的单片机开发版来学的,

谢谢你,我基本知道了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-09
AD多采样几次,然后滤波,可以取平均值,中值滤波或者平滑滤波。你直接读然后显示肯定不稳定的。追问

那怎么办?

追答

上面已经说了方法了啊

取平均值,平滑或者中值滤波。加点代码处理就好啦

追问

不懂就不要乱说了,切,你以为我不会说大道理么?

追答

靠!没用过我会跟你说?!跟你说方法你还不屑,浪费我的时间。你还要我帮你把代码敲上去?!

靠!没用过我会跟你说?!跟你说方法你还不屑,浪费我的时间。你还要我帮你把代码敲上去?!

第2个回答  2014-02-09
会变化很正常,一般都会有几个LSB的变化。追问

呃呃,但是它这个我觉得,差别有点大,

追答

变化多少?

追问

哎呀,很大,数字会变来边去

第3个回答  2014-02-09
你看看你的数码管段选的16进制数对不?追问

这个肯定对

已经检验过了

追答

数码管如果显示不清或是有闪烁,应该是每一个数码管段位选之后大概要有3ms的延迟,再操作下一个数码管

追问

不是啊,我的意思是数码管会变,过了好多秒了还是会变,我没调电位器了,过了好久,数码管显示还是会变,输出数据放到led上也有类似情况

我的程序是让数码管显示,暂时一秒,检测AD输出值,赋值给数码管,暂时一秒,检测AD..循环下去

延时,发错了,

追答

你的AD芯片是什么型号?

追问

ADC0804

相似回答