初级会员

- 积分
- 115
- 金钱
- 115
- 注册时间
- 2015-7-25
- 在线时间
- 9 小时
|
5金钱
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);这句话的意思,看了好久看不大明白 |
最佳答案
查看完整内容[请看2#楼]
哎。。首先以1206字体为例,首先一个字符有12字节,而且高为12,宽是6,但是处理器最小处理单位是字节(8bit)所以6后面补两个空bit即为一个字节(8bit),所以这个字体的字模大小共为(12*1=12byte),既有了csize=12的由来。。。所以要把一个字符显示出来,就是在空的地方花底色(即打点),或则显示的地方画前色(即打点)。。。表现在代码上就是,把每一个字节的每一位进行处理判断在执行相应底层。。。。。
if(temp&0x80)LCD_F ...
|