分享一段汉字寻址示范程序

2020-01-12 17:20发布

struct typFNT_GB162
{
    unsigned char Index[3];
    char Msk[32];
};

#define hz16_num  3
const struct typFNT_GB162 hz16[] =
{
#if USE_ONCHIP_FLASH_FONT
    "电", 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0xF0, 0x42, 0x10, 0x42, 0x10, 0x7F, 0xF0, 0x42, 0x10, 0x42, 0x10, 0x7F, 0xF0, 0x42, 0x00, 0x02, 0x08, 0x02, 0x08, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00,
    "子", 0x7F, 0xF0, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0xFF, 0xF8, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
    "全", 0x01, 0x00, 0x01, 0x00, 0x02, 0x80, 0x04, 0x40, 0x08, 0x20, 0x10, 0x10, 0x2F, 0xE8, 0xC1, 0x06, 0x01, 0x00, 0x01, 0x00, 0x1F, 0xF0, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0xFC, 0x00, 0x00,
#endif
}
void show_One_Chinese(u8 x,u8 y,char *HZ)
{                                  
        u8 t;
        u16 HZK_POS,i=0;
        while((*HZ++!=hz16[i].Index[0])||(*HZ!=hz16[i].Index[1])&& i<hz16_num  ){
                i++;
        }
        HZK_POS = i;
        set_pos(x,y);       
    for(t=0;t<16;t++)
    {
        write_data(hz16[HZK_POS].Msk[t]);
     }       
    set_pos(x,y+1);       
    for(t=0;t<16;t++)
    {       
        write_data(hz16[HZK_POS].Msk[t+16]);
    }                                       
}
show_One_Chinese(0,0,"电")
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
WillFeng
2020-01-13 19:21
我是一个大白菜 发表于 2019-9-19 09:21
楼主你好,有个地方不是特别明白,结构体typFNT_GB162里面的Index[3],为什么要定义3个空间,在后面的使用 ...

其实小琦工作室字模软件生成的代码就是Index[2]
// ------------------  汉字字模的数据结构定义 ------------------------ //
typedef struct typFNT_GB16                 // 汉字字模数据结构
{
       signed char Index[2];               // 汉字内码索引
       char Msk[32];                       // 点阵码数据
};

一周热门 更多>