字幕迴圈顯示原理

社會主義接班人就數你最優秀發表於2021-01-05

/* 移動顯示方法 */
核心思想其實就是反過來思考,現將想要顯示的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則表示指標型別所佔空間大小

相關文章