32行点阵led滚动错位

2019-12-12 18:25发布

弄了个led点阵屏驱动程序, 16行滚动的时候没事, 大于16行, 比如显示24点的或32点的时候滚动较快的时候上16行(r1, r2)和下16行(r3, r4)会错一位, 静止不滚或者滚动较慢时, 则看起来不会错位是正常的.

错位如下(显示的是24点字)
2016-06-02_165845.png (41.89 KB, 下载次数: 0) 下载附件 2016-6-2 17:19 上传

速度控制
每次 row == 0 的时候为一个循环, N个循环offset + 1 来移动一列, 通过N的大小来控制速度,  扫屏是1ms一次.

求解. 谢谢.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
qq854149876
2019-12-13 03:23
感觉这种思路不好,用这种方法去控制速度、花样之类的会有短板。例如换种单片机,或者单片机频率变了,速度就变了之类的。

搞个双缓存,缓存大小和屏一样,先控制好刷屏(将缓存数据往屏上刷),保证稳定不闪。
例如用定时器控制DMA往595发数据并切换行扫,这样刷屏就稳定了。然后各种花样的实现就是对内存操作,双缓冲的目的就是为了解决复杂花样计算耗时用的,花样计算完了就切换发送的缓冲区。这样就不会出现你这种错位的现象了,而且速度是好控制的。

如果点阵行数太多,需要分区扫(一次点亮多行,需要硬件支持),建议不超过8扫。

一周热门 更多>