天嵌 ARM开发社区

 找回密码
 注册
查看: 1328|回复: 0

求助高手!!关于裸奔第五章字库移植的一些问题

[复制链接]
jhw4897168 发表于 2011-8-23 22:19:08 | 显示全部楼层 |阅读模式
void Lcd_printf(unsigned int x,unsigned int y,unsigned int c,unsigned int
bk_c,unsigned int st,char *fmt,...)
{
char __LCD_Printf_Buf[256];
va_list ap;
unsigned char *pStr = (unsigned char *)__LCD_Printf_Buf;
unsigned int i = 0;
va_start(ap,fmt);
vsprintf(__LCD_Printf_Buf,fmt,ap);
va_end(ap);
while(*pStr != 0 )
{
switch(*pStr)
{
case '\n' :
{
break;
}
default:
{
if( *pStr > 0xA0 & *(pStr+1) > 0xA0 )
//中文输出
{
Lcd_PutHZ( x , y , (*pStr - 0xA0)*0x0100 +
*(pStr+1) - 0xA0 , c , bk_c , st);
pStr++;
i++;
x += 16;
}
else //英文输出
{
Lcd_PutASCII( x , y , *pStr , c ,
bk_c , st );
x += 8;
}
break;
}
}
pStr++;
i++;
if( i > 256 ) break;
}
}
第一是,程序中的i有什么作用,为什么大于256要break?








void Lcd_PutHZ(unsigned int x,unsigned int y,unsigned short int QW,unsigned int
c,unsigned int bk_c,unsigned int st)
{
unsigned short int i,j;
unsigned char *pZK,mask,buf;
pZK = &__CHS[ ( ( (QW >> 8) - 1 )*94 + (QW & 0x00FF)- 1 )*32 ];
for( i = 0 ; i < 16 ; i++ )
{
//左
mask = 0x80;
buf = pZK[i*2];
for( j = 0 ; j < 8 ; j++ )
{
if( buf & mask )
{
PutPixel(x+j,y+i,c);
}
else
{
if( !st )
{
PutPixel(x+j,y+i,bk_c);
}
}
mask = mask >> 1;
}
//右
mask = 0x80;
buf = pZK[i*2 + 1];
for( j = 0 ; j < 8 ; j++ )
{
if( buf & mask )
{
PutPixel(x+j + 8,y+i,c);
}
else
{
if( !st )
{
PutPixel(x+j + 8,y+i,bk_c);
}
}
mask = mask >> 1;
}
}
}


第二是,程序中这句话的意思:pZK = &__CHS[ ( ( (QW >> 8) - 1 )*94 + (QW & 0x00FF)- 1 )*32 ];


小弟在此多谢大家了,希望能给我一点帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 11:58 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表