C 向左移动缓冲区,滚动LED面板上的字符串?

C 向左移动缓冲区,滚动LED面板上的字符串?,c,arrays,text,scroll,buffer,C,Arrays,Text,Scroll,Buffer,我有一个我不太明白的函数 从0到110有109个地址 该代码如何将文本向左移动 b=0; while(b<109) { Display_Buffer[b] = Display_Buffer[b+1]; b++; } b=0; 而(b它将b位置的字节设置为等于b+1位置的字节 所以字节慢慢地向左移动,一次一个它将b位置的字节设置为等于b+1位置的字节 所以字节慢慢地向左移动,一次一个每个位置都被分配位置的值到它的右边,因此效果是向左滚动

我有一个我不太明白的函数

从0到110有109个地址

该代码如何将文本向左移动

b=0;
while(b<109)
{
  Display_Buffer[b] = Display_Buffer[b+1];
  b++;
}
b=0;

而(b它将
b位置的字节设置为等于
b+1位置的字节


所以字节慢慢地向左移动,一次一个

它将
b位置的字节设置为等于
b+1位置的字节


所以字节慢慢地向左移动,一次一个

每个位置都被分配位置的值到它的右边,因此效果是向左滚动

                           /*  [a|b|c|d|e|f|...]   */
Display[0] = Display[1]    /*  [b|b|c|d|e|f|...]   */
Display[1] = Display[2]    /*  [b|c|c|d|e|f|...]   */
Display[2] = Display[3]    /*  [b|c|d|d|e|f|...]   */
//     ...
                           /*  [b|c|d|e|f|g|...]   */
考虑一下这种令人敬畏的ASCII艺术:

0 1 2 3 4 Before: [h][e][l][l][o] After: [e][l][l][o][ ] 0 1 2 3 4 在[h][e][l][l][o]之前 在[e][l][l][o][之后
位置0处的插槽被设置为插槽1的值,因此“h”变为“e”,依此类推。

每个位置的右侧都分配了该位置的值,因此效果是向左滚动

                           /*  [a|b|c|d|e|f|...]   */
Display[0] = Display[1]    /*  [b|b|c|d|e|f|...]   */
Display[1] = Display[2]    /*  [b|c|c|d|e|f|...]   */
Display[2] = Display[3]    /*  [b|c|d|d|e|f|...]   */
//     ...
                           /*  [b|c|d|e|f|g|...]   */
考虑一下这种令人敬畏的ASCII艺术:

0 1 2 3 4 Before: [h][e][l][l][o] After: [e][l][l][o][ ] 0 1 2 3 4 在[h][e][l][l][o]之前 在[e][l][l][o][之后
位置0处的插槽设置为插槽1的值,因此“h”变为“e”,依此类推。

假设
Display\u Buffer
最初是
的“abcd”
。因此
Display\u Buffer[0]='a',Display\u Buffer[1]='b'
等。现在您要做的是
DisplayBuffer[0]=DisplayBuffer[1]
也就是说,将“a”替换为“b”,类似地,将“b”替换为“c”,将“c”替换为“d”。这会产生文本向左移动的效果。

假设
显示缓冲区
最初是
显示缓冲区
“abcd”
。因此
显示缓冲区[0]=“a”,显示缓冲区[1]=“b”
等等。现在您要做的是
显示缓冲区[0]=显示缓冲区[1] 
即,将“a”替换为“b”,类似地,将“b”替换为“c”,将“c”替换为“d”。这会产生文本向左移动的效果

                           /*  [a|b|c|d|e|f|...]   */
Display[0] = Display[1]    /*  [b|b|c|d|e|f|...]   */
Display[1] = Display[2]    /*  [b|c|c|d|e|f|...]   */
Display[2] = Display[3]    /*  [b|c|d|d|e|f|...]   */
//     ...
                           /*  [b|c|d|e|f|g|...]   */
当你做这种事情时,你必须注意不要从错误的方向覆盖

                           /*  [a|b|c|d|e|f|...]   */
Display[1] = Display[0]    /*  [a|a|c|d|e|f|...]   */
Display[2] = Display[1]    /*  [a|a|a|d|e|f|...]   */
//     ...
                           /*  [a|a|a|a|a|a|...]   */
从最后开始做同样的事情

Display[last] = Display[last-1]    /*  [a|b|c|d|e|f|...]   */
//     ...
Display[2] = Display[1]            /*  [a|b|b|c|d|e|...]   */
Display[1] = Display[0]            /*  [a|a|b|c|d|e|...]   */
Display[0] = ' '                   /*  [ |a|b|c|d|e|...]   */
当你做这种事情时,你必须注意不要从错误的方向覆盖

                           /*  [a|b|c|d|e|f|...]   */
Display[1] = Display[0]    /*  [a|a|c|d|e|f|...]   */
Display[2] = Display[1]    /*  [a|a|a|d|e|f|...]   */
//     ...
                           /*  [a|a|a|a|a|a|...]   */
从最后开始做同样的事情

Display[last] = Display[last-1]    /*  [a|b|c|d|e|f|...]   */
//     ...
Display[2] = Display[1]            /*  [a|b|b|c|d|e|...]   */
Display[1] = Display[0]            /*  [a|a|b|c|d|e|...]   */
Display[0] = ' '                   /*  [ |a|b|c|d|e|...]   */

您只是将元素从
b+1
复制到
b
,即将所有内容向下移动一个元素。您是在向后读取作业。您只是将元素从
b+1
复制到
b
,即将所有内容向下移动一个元素。您是在向后读取作业。谢谢各位!!如果我替换了显示,该怎么办uffer[b+1]和[b-1]…这会逆转过程吗?怎么做?谢谢大家!!如果我用[b-1]替换显示缓冲区[b+1]会怎么样?怎么做?谢谢大家!!如果我用[b-1]替换显示缓冲区[b+1]会怎么样…这会逆转这个过程吗?如何?完美,你回答我的第二个问题就得到了答案:D谢谢谢谢各位!!如果我用[b-1]替换Display\u Buffer[b+1]会怎么样?这会逆转这个过程吗?如何?完美,你回答我的第二个问题就得到了答案:D谢谢各位!!如果我替换Display\u Buffer[b+1]会怎么样使用[b-1]…这会逆转过程吗?如何?谢谢大家!!如果我用[b-1]替换显示缓冲区[b+1]…这会逆转过程吗?如何?