程序实现1206字库的显示问题

2019-07-21 00:27发布

[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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。