TFT显示汉字,但每个汉字只显示一半,这是什么问题?
时间:10-02
整理:3721RD
点击:
请教各位大侠,我用STM32控制TFT显示汉字,以下为汉字显示函数,但是只能显示汉字的右半边,左半边不显示,这是什么问题呢?我估计不会是大问题,指令应该成功写进寄存器了,是不是汉字显示函数有什么问题啊?求指教!感激不尽!
//显示一个汉字48*48的(需取字模)
void ILI9325_DisplayHanZi_48(unsigned short x,unsigned short y,const unsigned char *pHz,u16 WordColor,u16 BackColor)
{unsigned char i,j,k;
unsigned int str;
for (i=0;i<48;i++)//因为一个字符的高度为48
{
ili9320_SetCursor(x,y+i);
for(k=0;k<6;k=k+2)//48=3*16
{
str = ((unsigned int)(*(pHz + i*6+k)<<8))|(*(pHz+i*6+1+k));
for (j=0;j<16;j++)
{
if ( str & (0x8000>>j) )//0x80>>j,选择字符颜色(根据调色板)
{
ili9320_SetPoint(x+j,y+i,WordColor);
}
else
{
ili9320_SetPoint(x+j,y+i,BackColor);
}
}
}
}
}
其中,void ili9320_SetPoint(u16 x,u16 y,u16 point)
{
if ( (x>320)||(y>240) ) return;
ili9320_SetCursor(x,y);
LCD_WriteRAM_Prepare();
LCD_WriteRAM(point);
}
//显示一个汉字48*48的(需取字模)
void ILI9325_DisplayHanZi_48(unsigned short x,unsigned short y,const unsigned char *pHz,u16 WordColor,u16 BackColor)
{unsigned char i,j,k;
unsigned int str;
for (i=0;i<48;i++)//因为一个字符的高度为48
{
ili9320_SetCursor(x,y+i);
for(k=0;k<6;k=k+2)//48=3*16
{
str = ((unsigned int)(*(pHz + i*6+k)<<8))|(*(pHz+i*6+1+k));
for (j=0;j<16;j++)
{
if ( str & (0x8000>>j) )//0x80>>j,选择字符颜色(根据调色板)
{
ili9320_SetPoint(x+j,y+i,WordColor);
}
else
{
ili9320_SetPoint(x+j,y+i,BackColor);
}
}
}
}
}
其中,void ili9320_SetPoint(u16 x,u16 y,u16 point)
{
if ( (x>320)||(y>240) ) return;
ili9320_SetCursor(x,y);
LCD_WriteRAM_Prepare();
LCD_WriteRAM(point);
}
自己先顶一下,请高手指教!非常感谢!
现在使用以上函数可以实现16*16的汉字,但是48*48的不行,这是怎么回事呢?
顶一下
您好,请问你TFT显示48*48的字体,只显示一半的问题解决了吗?请教您一下,我的也出现这样的问题了。
显示汉字的数组是什么样的啊?求解,,,
也遇到这种情况