回复【26楼】 ricefat :
---------------------------------
我试了一个晚上,这个东西我还是做不出来。。。先吐槽下自己:菜啊。。。。还请大师给写一下吧~sorry
void LCD_DisplayStringHZ(uint16_t Xpos, uint16_t Ypos, uint8_t *ptr)
{
uint32_t i = 0;
uint16_t j=0;
uint8_t code1=0;
uint8_t code2=0;
uint32_t address=0;
uint32_t k=0;
while ((*ptr != 0) & (i < 40)) // "---40
{
code1 = *ptr; /* ascii代码 */
if (code1 < 0x80) //0-127
{
if(Xpos>320) {Xpos=j-320;Ypos=10;} //这一段是我写的,可以实现换行。。。(未完。。。 )
LCD_DrawCharHZ(Xpos, Ypos, &Ascii16[code1 * 16], 8); /* 16 表示1个字符字模的字节数 */
Xpos += 8; /* 列地址+8 */
j=j+8;
}
else /* 汉字内码 */
{
code2 = *(++ptr);
if(code2 == 0) break;
for(k = 0; k < HZ_COUNT; k++)
{
address=k*34;
if ((code1 == g_Hz16[address + 0]) && (code2 == g_Hz16[address + 1]))
{
address += 2;
break;
}
}
address = (uint32_t)&g_Hz16[address];
LCD_DrawCharHZ(Xpos, Ypos, (const uint8_t *)address, 16);
Xpos += 16; /* 列地址+16 */
}
ptr++; /* 指向下一个字符 */
i++;
}
i = 0;code1=0;code2=0;address=0;k=0;
}
先就实现全屏的换行吧~窗口的再议~
我的换行是这个:就是说只可以将一行的字符进行换行,或是说截断吧~不知道能不能理解。。。
LCD_DisplayStringHZ(0,0,"abcdefghijklmnopqrstuvwxyzaotykangxiaolongjiayou");
也就是说我的字符只可以显示到。。lo这里,后面的无法显示出来,哎。。。求大师解决下~
|