Arduino中的二进制移位寄存器操作

时间:2011-09-15 17:52:37

标签: arduino bit-shift

我正在为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

我真的尝试过我能想到的一切。解决方案是什么?

2 个答案:

答案 0 :(得分:0)

如果您的生产线适合您可用于存储数据的空间,那么您不能将整条生产线放在那里并转移它吗?不是使用固定的中央分隔符空间,而是将消息编码为单个字母,而不是您尝试显示的矩阵。

10001011111
然后重复除以2.

01000101111
00100010111

在所有其他行上做同样的事情,我敢打赌第二行将是10001000100而右移除以2的工作方式相同。

答案 1 :(得分:0)

将10001011111转移到第二列。 将00000010001转移到第一个。