1、我们先分析使用内部flash的情况:
1)DrawSingle16Hz(30,100, "汽", Red,White,1);
2)函数:void DrawSingle16Hz(u16 x, u16 y, u8 pHz, u16 LineColor,u16 FillColor, u8 Mod)
3)
typedef struct typFNT_GB16 /1616 汉字字模显示数据结构 /
{
char Msk[32];
char Index[2];
}gb16;
4)
gb16 const HzLib[] =
{
0x42,0x00,0x22,0x00,0x23,0xFC,0x04,0x00,0x97,0xF8,0x58,0x00,0x57,0xF0,0x10,0x10,
0x10,0x10,0x20,0x10,0xE0,0x10,0x20,0x10,0x20,0x0A,0x20,0x0A,0x20,0x06,0x20,0x02,
"汽",
0x02,0x00,0x02,0x00,0x7F,0xFC,0x04,0x00,0x04,0x80,0x08,0x80,0x10,0x80,0x3F,0xFC,
0x00,0x80,0x00,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
"车",
}
5)关于字库就是3)&4)里面的东西,写好API函数后直接调用1)即可显示汉字,这是我STM32的处理思路。
2、接下来说说你的外部flash,其实也是一样的,只是有一些变化,内部flash的话编译生成的是程序的一部分,他会自己执行。外部的需要一个读取的过程,也就是读取3)&4)的内容。
我想问您的bin格式字库是怎么生成的,应该也是c的数组编译生成的吧,查找的时候并不是直接安照bin文件的flash地址进行一一对应的,而是通过c的逻辑查找的,不管是什么形式。至于你说的汉字内码这种方式是标准汉字库的做法,就比如3)中的Index或者4)中的具体汉字,只不过他是使用统一的内码来实现汉字表示的。
3、关于片外flash一般做字库都是使用spi型的flash来做的,这个涉及的过程就是查找并读取的过程,建议先搞清楚内部flash的过程。关于汉字内码参考:>你使用的东西,不对,bin是2进制的文件,一般使用16位进制的编辑器东西打开的(一般没有正确的软件是无法编辑的,也就是使用这个16进制的查看是否有其他软件制作的痕迹而已) 。看样子你没有玩过汉化的东西。看你问的是C51还是MDK?
C51,你可以去网上下一个Hex2Binexe(也可以自己写一个,非常简单的小程序),添加到项目的User
Command里,每次编译后将生成的hex文件转换为bin文件。
MDK自身带有fromelfexe,可以将输出的axf文件直接生成bin文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)