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

我有一个问题想请教一下: 我在单片机C语言中,数码管显示AD采集到的数字量时,对数字量进行滤波,之后送数码管显示,我把滤波子程序和显示程序一起放到主循环中,显示的值就是一直在乱闪烁。我把滤波程序调到主循环之外。采集到的新值不能显示 只有在复位时的值。请问这两子程序该如何处理。才能及时的显示实时的AD值
void main(){ while(1) { display(j); //显示子函数 } }这样的话,采集到的新值不能显示 只有在复位时的值。void main(){ y=filter(); //AD读到的数字量 数字滤波之后 while(1) { display(j); //显示子函数 y=filter(); //AD读到的数字量 数字滤波之后 } }这样显示值的就是一直在乱闪烁!请教高手帮忙 。新手学习,跪求!

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

display函数中有没调用y=filter这个函数?如果没有的话,这个程序将永远没有再次读取y值的时候,所以只显示复位时的值。
第二个程序乱闪,是更新太快了吧?如果你的采样得到的值很不稳定,又用很快的速度更新值,那就肯定乱闪了。根据需要,设定一个更新率,比如让一个值显示1秒,1秒后再y=filter()
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-08
多位数码管动态少秒的刷新时间,不能超过人眼的暂留视觉20ms,这说明y=filter();占用的时间资源还是不较多的。如果display(j); 函数中有插入显示保持延时或消隐延时,建议:取消这些延时,将y=filter();插入display(j);函数中替代这些延时,既不影响AD数据采集和滤波,又可以保障数码管的正常显示。本回答被网友采纳
第2个回答  2013-04-10
加大延时,乱闪估计是延时短然后显示数据刷新的太快导致。