显示汉字程序段
void LCD_Char_O2(u16 x, u16 y,u16 Color)
{
#define MAX_CHAR_POSX (320-16)
#define MAX_CHAR_POSY (240-16)
u8 temp, t, pos,i;
u16 Num;
u8 X=x ,Y=y;
if(x > MAX_CHAR_POSX || y > MAX_CHAR_POSY)
return;
Set_direction(0); //横屏扫描
LCD_open_windows(x,y,16,16);
for(i=0;i<4;i++)
{
for (pos=0;pos<32;pos+=2)//一个汉字32个字节
{
temp=ucsFNT1616[i][pos];
Num=temp<<8|ucsFNT1616[i][pos+1];//合并
for(t=0; t<16; t++)
{
if(Num&0x8000>>t)
{
LCD_ColorPoint(X++,Y,Color);
}
else
{
LCD_ColorPoint(X++,Y,BLACK);
}
}
X=x;
LCD_open_windows(X,Y++,1,1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void DrawPicture(u16 StartX, u16 StartY,u16 EndX,u16 EndY,unsigned char *pic)
{
u32 i,t,j,k=0;
u8 x,y;
u16 temp,Num;
Set_direction(0); //横屏扫描
LCD_open_windows(StartX,StartY,EndX-StartX,EndY-StartY);
//LCD_Point(StartX,StartY);//设置坐标
t=(EndY-StartY)*(EndX-StartX);
x=StartX;
y=StartY;
for(i=0;i<t/2;i++)
{
temp=*pic;
Num=temp<<8|(*pic+1);//合并
pic+=2;
if(((i/(EndX-StartX))>0)&&(i%(EndX-StartX))==0)//一行结束 列号+1 /*图片取模50*50的16位真彩 {MOD} ,那么一行100个数据,两个数据一个颜 {MOD},一行是50个颜 {MOD}*/
{
LCD_ColorPoint(x,y++,Num);
x=StartX;//回到开头
}
else
{
LCD_ColorPoint(x++,y,Num); //没结束 行号+1
}
}
}
一周热门 更多>