|
发表于 2009-5-16 12:07:53
|
显示全部楼层
/*********显示一个汉字 从字库提取 ************/
#define HZ_column 16 //汉字字体大小
void LCD_DisplayStringWord(u16 x,u16 y, unsigned char length, unsigned char high,unsigned int boardcolor,unsigned int wordcolor, unsigned char __flash *word)
{
u16 j=0,i=0,k=0;
u16 str,len;
//---------------------------统计是否在字库中出现
len = sizeof(HzLib)/sizeof(HzLib[0]);
for(j=0;len;j++)
{
if((uchar)HzLib[j].Index[0]==word[0]&&(uchar)HzLib[j].Index[1]==word[1])
break;
}
//--------------------------
if(j<len)
{
LCD_Set_Window(x,y,x+length-1,y+high-1);
LCD_Write_Start();
for (i=0; i<HZ_column; i++)
{
str = (uchar)HzLib[j].Msk[i*2]<<8|(uchar)HzLib[j].Msk[i*2+1];
for (k=0; k<HZ_column; k++)
{
if ( str & (0x8000>>k) ) //0x8000>>k
{
LCD_Write_Data(wordcolor);
}
else
{
LCD_Write_Data(boardcolor);
}
}
}
LCD_Write_End();
}
}
typedef struct /*12*16 汉字字模显示数据结构 */
{
char Index[2];
char Msk[32];
} typFNT_GB16;
__flash typFNT_GB16 HzLib[] =
{
"夜",0x00,0x40,0x00,0x80,0x7F,0xFF,0x01,0x10,0x01,0x10,0x1F,0x08,0x10,0x88,0x12,0x8C,
0x14,0x4A,0x08,0xA9,0x08,0x88,0x05,0x08,0x02,0x08,0x05,0x08,0x18,0x88,0x60,0x68,//夜0
"饼",0x20,0x84,0x21,0x04,0x11,0x04,0x00,0x1C,0x7F,0xD2,0x11,0x0A,0x11,0x01,0x11,0x04,
0x11,0x04,0x7F,0xE4,0x11,0x04,0x11,0x04,0x10,0x94,0x10,0x8C,0x10,0x44,0x10,0x20,//饼1
};
我也贴个显示汉字的 |
|