字幕迴圈顯示原理
阿新 • • 發佈:2021-01-06
技術標籤:字串
/* 移動顯示方法 */
核心思想其實就是反過來思考,現將想要顯示的buffer填充好,然後移動螢幕,就好像我們小的時候玩的那種比色卡,中間有一段鏤空,螢幕就代表了這個角色。
/* 本例子以Lcd1602舉例,單實現方法通用 如有更好的辦法,歡迎交流討論 */
//首先建立一個數組,陣列的兩邊設定緩衝區,緩衝區大小即為螢幕寬度
char movebuffer[16 + strlen(str) + 16];
char index = 0,i = 0;
char str[] = "Welcome";
//對陣列進行處理,緩衝區清零,並將字串新增進去
for(i = 0; i < 16; i++)
{
movebuffer[i] = 0;
}
for(i = 0; i < strlen(str); i++)
{
movebuffer[i+16] = *str+i;
}
for(i = 16 + strlen(str); i < 32 + str; i++)
{
movebuffer[i] = 0;
}
//移動索引遞增,實現左移
//字元放在中間,逐漸向右移動螢幕,字就逐漸顯示出來
for(index = 0; index < 16 + strlen(str); index++)
{
LcdShowStr(0,0,movebuffer+index,16);
//起始位置達到字串尾部後即返回從頭開始
if(index == 16 + strlen(str))
index = 0;
}
這裡全部使用了不計算結尾‘\0’的strlen ,如果要使用sizeof記得減一
使用strlen 也可以獲取到由指標所指向的的字串,而sizeof則表示指標型別所佔空間大小