小弟最近调试TFT,不过我最近遇到一个新的问题~就是我的汉字库(一个数组)里只有175个,但是我又不想把网上的字库下载到Flash里,我用取模软件取了字以后,加到字库里,加一个还好,但是加多了,比如加了两个,如果显示倒数第二个的话,就显示不出来,而是显示最后一个~,下面是我的程序,大家看看~
/*******************************************
* 函数名: LCD_DisplayStringHZ
* 输入参数:
* Xpos : X坐标 0 - 399
* Ypos : Y坐标 0 - 239
* c : 字符串指针
* 返回值: 无
*函数说明:画一个字符串 支持汉字
*********************************************/
void LCD_DisplayStringHZ(uint16_t Xpos, uint16_t Ypos, uint8_t *ptr)
{
uint32_t i = 0;
uint8_t code1=0;
uint8_t code2=0;
uint32_t address=0;
uint32_t k=0;
while ((*ptr != 0) & (i < 40))
{
code1 = *ptr; /* ascii代码 */
if (code1 < 0x80)
{
LCD_DrawCharHZ(Xpos, Ypos, &Ascii16[code1 * 16], 8); /* 16 表示1个字符字模的字节数 */
Xpos += 8; /* 列地址+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;
}
|