我正在为Arduino开发一个程序,该程序将数据发送到一些移位寄存器以控制大型点阵显示。我需要滚动文本,这是我遇到问题的地方。例如,假设显示器显示“HI”。整个屏幕上的第一组数据将是“10001 11111”。这将表示第一阶段中点亮的列。如果我把它放在一起并添加一个空格我得到“10001011111”我已经发现二进制数可以通过除以2来移动一列。
所以例如“11111”/ 2 = 01111。下一个分区是00111,然后是00011和00001等。问题是我将数据传递给两个单独的移位寄存器,每个数字一个。所以首先我发送“11111”,然后我转入“10001”。当他们滚动时,数据需要从一个显示器转移到另一个显示器。下面是一个试图更好地理解这一点的图表: 对于作品“HI”
BAD
H | I
10001 0 11111
01000 0 01111
00100 0 00111
00010 0 00011
00001 0 00001
00000 0 00000
我需要什么
H | I
10001 0 11111
01000 1 01111
00100 0 10111
00010 0 01011
00001 0 00101
00000 1 00010
00000 0 10001
00000 0 01000
00000 0 00100
00000 0 00010
00000 0 00001
00000 0 00000
我真的尝试过我能想到的一切。解决方案是什么?
答案 0 :(得分:0)
如果您的生产线适合您可用于存储数据的空间,那么您不能将整条生产线放在那里并转移它吗?不是使用固定的中央分隔符空间,而是将消息编码为单个字母,而不是您尝试显示的矩阵。
10001011111
然后重复除以2.
01000101111
00100010111
在所有其他行上做同样的事情,我敢打赌第二行将是10001000100
而右移除以2的工作方式相同。
答案 1 :(得分:0)
将10001011111转移到第二列。 将00000010001转移到第一个。