各位大师,最近在写2.8寸TFT_LCD 240*320RGB液晶屏显示,显示ASCII 大小为宽X高=16x32,我在液晶屏上显示的字符都是一半?ASCII大小宽X高=8x16 显示正常,ASCII大小宽X高=16x32只显示一半(详见附件),是我自己按照显示8x16大小的函数修改的,请大家帮忙给指导一下,谢谢!
此函数是显示 宽X高=8x16 显示正常:
void LCD_ShowChar(unsigned int x,unsigned int y,unsigned char num,unsigned char mode)
{
unsigned char temp;
unsigned char pos,t;
unsigned int x0=x;
unsigned int colortemp=Point_Color;
if(x>LCD_W-16||y>LCD_H-16)return;
/* 设置窗口 */
num=num-' '; /* 得到偏移后的值 */
Address_set(x,y,x+8-1,y+16-1); /* 设置光标位置 */
if(!mode) /* 非叠加方式 */
{
for(pos=0;pos<16;pos++)
{
temp=asc2_1608[(unsigned int)num*16+pos]; /* 调用1608字体 */
for(t=0;t<8;t++)
{
if(temp&0x01)Point_Color=colortemp;
else Point_Color=Back_Color;
LCD_WR_DATA(Point_Color);
temp>>=1;
x++;
}
x=x0;
y++;
}
}
此函数是ASCII大小宽X高=16x32只显示一半(详见附件),是我自己按照显示8x16大小的函数修改的:
void LCD_ShowChar_32(unsigned int x,unsigned int y,unsigned char num,unsigned char mode)
{
unsigned int temp;
unsigned char pos,t;
unsigned int x0=x;
unsigned int colortemp=Point_Color;
if(x>LCD_W-16||y>LCD_H-32) return;
/* 设置窗口 */
num=num-' '; /* 得到偏移后的值 */
Address_set(x,y,x+16-1,y+32-1); /* 设置光标位置 */
if(!mode) /* 非叠加方式 */
{
for(pos=0;pos<64;pos++)
{
temp=ascii_table_16x32[(unsigned int)num*64+pos]; /* 调用 */
for(t=0;t<16;t++)
{
if(temp&0x01) Point_Color=colortemp;
else Point_Color=Back_Color;
LCD_WR_DATA(Point_Color);
temp>>=1;
x++;
}
x=x0;
y++;
}
}
|