请问大神们,程序中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
1楼-- · 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);
北极圈的黄昏
2楼-- · 2019-07-21 06:52
 精彩回答 2  元偷偷看……
guset_03
3楼-- · 2019-07-21 06:54
首先你前面看的明白吗。。。如果明白,请说明。。这样才能按照你的思路告诉你应该用哪种方式去理解。。。
stm32灬菜鸟
4楼-- · 2019-07-21 10:50
 精彩回答 2  元偷偷看……
stm32灬菜鸟
5楼-- · 2019-07-21 11:10
回复【3楼】guset_03:
---------------------------------
我知道是判断画点啊,但是我不知道if(temp&0x80)是如何判断的,
stm32灬菜鸟
6楼-- · 2019-07-21 13:29
回复【6楼】guset_03:
---------------------------------
谢谢大神指点

一周热门 更多>