主要毛病为:

写好的驱动 数码管动态刷新 和LED刷新 的俩个函数模块 分别单独简单用基本没毛病。

但放在定时器一起用时 两方人马都乱套了。

LED会胡乱有规律跳闪(总之不是人想要的效果,程序也没规定它这么跑)。

数码管会有鬼影重重现象鬼影现象主要体现为:在某个位选 位置确实在显示自己想要的段选数字或符号,亮度也稍大,但却在其他位选也有显示该段选,该显示亮度也稍微欠佳

我本人遇到的情况为以下有规律的鬼影:

我想让数码管从0~1000刷新计数发现只有 7号位选有稳定显示,其他位选都是鬼影

以下为7号位选0~10变化显示过程:

(表示无显示;  红字表示高亮的位选和段选显示正确的地方;  灰色表示鬼影显示)

位选: 0  1  2  3  4  5  6  7    

— — — — — —  0  0

1  — —  1  1  1  1  1

— —  2  — — 2   2

— —  — — 3  3   3

4  —  — 4  4  — — 4

  5  — — 5  — — 5

 6  — — — — — 6

— —  — 7  7  7  7  7

— —  — — — — — 8

— —  — — 9  — — 9

问题代码截取(工程中有修正后的源码):

数码管和LED都在定时器服务函数里刷新,定时器同时也提供了计数条件:

 定时器0中断服务函数截图:

解决方案:

数码管和LED都应该放在定时器中刷新,

数码管刷新P0口段码传输的太快,超过了74hc573锁存的速度,上一次数据还没处理完

就传来了新的数据。

所以应该要加250us延时,

为何为250us ?

因为八个数码管动态扫描结束刚好8*250=2000us=2ms。

调试好的原始工程在此处下载:

https://download.csdn.net/download/qq_64257614/87776747?spm=1001.2014.3001.5503

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐