[mw_shl_code=c,true]程序是TFTLCD显示实验中lcd.c文件中的一个显示字符的函数。里面有一个for循环嵌套,外层for循环用于累加字符的八位数据个数,内层for循环通过&0x80得到八位数据的每一位。
那么问题来了:现在提供了两个字库:1206的和1608的。1206的字库只需要内层的for循环得到六位数据就行了,为什么也要取八位?
【我理解的是1206的字库每个字由高12个像素,宽6个像素的12*6个像素点构成,外层for循环负责行数的扫描(12行),内层for循环负责列数的扫描(每行有6列),
难道是我理解错了?】
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{
u8 temp,t1,t;
u16 y0=y;
u16 colortemp=POINT_COLOR;
num=num-' ';
if(!mode)
{
for(t=0;t<size;t++)
{
if(size==12)
temp=asc2_1206[num][t];
else
temp=asc2_1608[num][t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)
POINT_COLOR=colortemp;
else
POINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);
temp<<=1;
y++;
if(x>=lcddev.width)
{
POINT_COLOR=colortemp;
return;
}
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)
{
POINT_COLOR=colortemp;
return;
}
break;
}
}
}
}else
{
for(t=0;t<size;t++)
{
if(size==12)
temp=asc2_1206[num][t];
else
temp=asc2_1608[num][t];
for(t1=0;t1<8;t1++)
{
if(temp&0x80)
LCD_DrawPoint(x,y);
temp<<=1;
y++;
if(x>=lcddev.height)
{
POINT_COLOR=colortemp;
return;
}
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)
{
POINT_COLOR=colortemp;
return;
}
break;
}
}
}
}
POINT_COLOR=colortemp;
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>