C 向左移动缓冲区,滚动LED面板上的字符串?
我有一个我不太明白的函数 从0到110有109个地址 该代码如何将文本向左移动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位置的字节 所以字节慢慢地向左移动,一次一个每个位置都被分配位置的值到它的右边,因此效果是向左滚动
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]…这会逆转过程吗?如何?