搜索

单片机,字库文件是怎么调用的

发布网友 发布时间:2022-04-20 15:04

我来回答

1个回答

热心网友 时间:2023-07-13 15:19

您好,以下是单片机实践团为您解答:

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 /*16*16 汉字字模显示数据结构 */
{
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的过程。关于汉字内码参考:http://ke.baidu.com/view/1209513.htm

4、常在线,不明白的hi我。追问首先非常感谢您详细的回答!我已经可以应用内部FLASH法显示汉字了。我看的历程里在从外部FLASH中查找字的时候并非是一个一个搜索的,而是通过一个计算公式直接算出地址的,该公式我现在没法打出来(历程在家里),十分抱歉。类似于:FLASH_read(x1+0x??|(x2+0x??))根据这个地址就读出所需汉字的字码了,其中x1\x2是汉字的高8位和低8位。说明上只是说是根据汉字内码的顺序查找的。.bin文件是他在网上下的。很神奇,神马字里面都有

追答OK,既然解决了那就好,也学习下你的方法,百度知道利人利己啊

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
Top