弄了个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一次.
求解. 谢谢.
搞个双缓存,缓存大小和屏一样,先控制好刷屏(将缓存数据往屏上刷),保证稳定不闪。
例如用定时器控制DMA往595发数据并切换行扫,这样刷屏就稳定了。然后各种花样的实现就是对内存操作,双缓冲的目的就是为了解决复杂花样计算耗时用的,花样计算完了就切换发送的缓冲区。这样就不会出现你这种错位的现象了,而且速度是好控制的。
如果点阵行数太多,需要分区扫(一次点亮多行,需要硬件支持),建议不超过8扫。
一周热门 更多>