RT,本菜鸡最近一段时间自己娱乐了几块可级联的点阵屏。
想法是每块点阵屏由4块8*8的点阵组成,每块都有一片STC15w404AS来控制,并由74HC573来锁存输出。
由两根线统一对点阵屏组进行控制,一根为数据线,另外一根用于判断数据线是否有更新。由每块板上单片机解析并输出。
但我经实践后发现,若刷新频率过高,很有可能在输出过程中数据有更新,造成类似于马达缺步一样的问题。
请问各位dalao,如何提高这个程序的效率,减少缺步的可能性。
代码直接贴上来就太乱了,我放在ubuntu剪切板里
单片机上的C代码
另:本程序在48*32的点阵组下,以最高频率运行,每秒只能刷新10次左右,不符合我的需求。
多谢各位的帮助!
此帖出自
小平头技术问答
如果有时钟线就用spi来实现,能实现很高的速率,你这个没有时钟,用单工的串口就行了.com2的作用是多余的,串口会检测数据线的跳变作为起始信号和你那个作用是一样的,用串口实现已经包含这部分了.
另外你说的"数据是否有变化"是什么意思?没变化就不发送就行了呗.
还有我看你是打算四个方向公用数据总线,那么通讯的速率你最好核算一下能否满足最坏情况的需要.
我又去查了一轮资料,才刚刚知道我的COM2就是时钟线(我一开始的想法就是让它成为时钟线,但是不知道它的技术名称)。
为了防止我理解错误,我还是说明一下我COM2的意思以及这个项目的整体想法吧。
整个点阵屏我是打算一主多从机的结构。
我为了让从机界定数据接线,就制定了一个规则:
然后COM1就是那个数据线了,1表示当前点亮,0则反之。
COM2用于让判断COM1的数据是否有更新(即是否切换至下一个点更新) (应该就是类似时间信号了吧)
我的单片机代码是有新的数据才会更新新数据的所在的点的,这样基本上可以保证在刷新的时候不会闪屏,也可以减少静止时的数据传输量。
至于主机上的代码,为了切合我的那个规则,我专门写了一个c++的.h头文件来实现数据的发送。
然后我今天惊讶的发现,COM2线正好接的是单片机的INT2口。所以说我大概就可以不用更新硬件,更新一下软件就可以解决问题了。
但是我还是不是很懂您的只需要一根线来传输是什么意思,能说一下吗?
多谢万分!
一周热门 更多>