请问大神们,程序中if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);意思

2019-07-21 02:01发布

void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{    
  u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2); //????×???????×?·????????ó???ù????×?????
//?è???°??   
num=num-' ';//?????????ó????,??C????????×?·??????±??????????????????
for(t=0;t<csize;t++)
{   
if(size==12)temp=asc2_1206[num][t]; //?÷??1206×???
else if(size==16)temp=asc2_1608[num][t]; //?÷??1608×???
else if(size==24)temp=asc2_2412[num][t]; //?÷??2412×???
else if(size==50)temp=asc2_5025[num][t];  //?÷??5025×???
else return; //??????×???
for(t1=0;t1<8;t1++)
{    
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
y++;
if(x>=lcddev.width)return; //?????ò??
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)return; //?????ò??
break;
}
}    
}  
}

请问大神们,程序中if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);这句话的意思,看了好久看不大明白
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
guset_03
2019-07-21 04:55
哎。。首先以1206字体为例,首先一个字符有12字节,而且高为12,宽是6,但是处理器最小处理单位是字节(8bit)所以6后面补两个空bit即为一个字节(8bit),所以这个字体的字模大小共为(12*1=12byte),既有了csize=12的由来。。。所以要把一个字符显示出来,就是在空的地方花底 {MOD}(即打点),或则显示的地方画前 {MOD}(即打点)。。。表现在代码上就是,把每一个字节的每一位进行处理判断在执行相应底层。。。。。
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);//判断每一位
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);//是否使用叠加方式
temp<<=1;//对前一位丢掉,后一位提前给她::if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);

一周热门 更多>