
在硬件系统内,英文的字模信息一般固化在ROM里,中文的字模信息一般记录在汉字库文件HZK16里。
采用汉字字模点阵数据批量生成工具(下载)汉字字模工具 产生的随意字模 如何在点阵LED或LCD中显示汉字?
假设你采用16x16点阵汉字,水平扫描。
显示汉字为“模”,用产生如下字模
unsigned char mo[]={
0x00,0x00, 0x10,0x90, 0x10,0x94, 0x13,0xFE,
0x7C,0x90, 0x11,0xFC, 0x19,0x04, 0x35,0xFC,
0x35,0x04, 0x51,0xFC, 0x50,0x40, 0x17,0xFE,
0x10,0x90, 0x11,0x08, 0x16,0x06, 0x00,0x00
};
代码如下:
unsigned char cmp_w[8]={128,64,32,16,8,4,2,1};
void FontDisplay(int x, int y, unsigned char * FontModule)
{
for(int row=0;row<16;row++)
{
for(int c=0;c<8;c++)
if((FontModule[row*2]&cmp_w[c])!=0)
putpixel(c+x,row+y,15);
for(c=0;c<8;c++)
if((FontModule[row*2+1]&cmp_w[c])!=0)
putpixel(c+8+x,row+y,15);
}
main(){
FontDisplay(5,10,mo);
}
24x24点阵代码示例(水平扫描):
unsigned char mo[]={
0x00,0x00,0x00, 0x00,0x00,0x00, 0x07,0x0C,0xC0, 0x06,0x0C,0xC0,
0x06,0x0C,0xDC, 0x06,0x7F,0xF0, 0x06,0xCC,0xC0, 0x1F,0xF0,0x70,
0x06,0x3F,0xF0, 0x07,0x30,0x70, 0x0F,0xBF,0xF0, 0x0E,0xF0,0x70,
0x1E,0xF0,0x70, 0x1E,0x3F,0xF0, 0x36,0x06,0x18, 0x06,0xFF,0xFC,
0x06,0x07,0x00, 0x06,0x0F,0x80, 0x06,0x0C,0xE0, 0x06,0x38,0x7C,
0x06,0xE0,0x18, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00
};
unsigned char cmp_w[8]={128,64,32,16,8,4,2,1};
void FontDisplay(int x, int y, unsigned char * FontModule)
{
for(int row=0;row<24;row++)
{
for(int c=0;c<8;c++)
if((FontModule[row*3]&cmp_w[c])!=0)
putpixel(c+x,row+y,15);
for(c=0;c<8;c++)
if((FontModule[row*3+1]&cmp_w[c])!=0)
putpixel(c+8+x,row+y,15);
for(c=0;c<8;c++)
if((FontModule[row*3+2]&cmp_w[c])!=0)
putpixel(c+16+x,row+y,15);
}
}
main(){
FontDisplay(5,10,mo);
}
putpixel函数:
putpixel(int x,int y,int color)
x,y为坐标,color为颜色值.该函数在(x,y)点设定象素的颜色.由于硬件的不同,也许提供的函数不同,用户可把此函数作为参考,必要时用硬件提供的函数取而代之.