首先是文件大小,167200B 随便一个STM32内部FLASH都可以放,不需要外扩。
我直接烧写的512K的STM32的FLASH最高位置从0x57000处开始的FLASH 还有360K的FLASH可以供应用程序用,应该足够了吧。
#define HZIKU12_START (0x08000000+(0x57000)) //11点汉字库起点地址
#define ASCII57_START (HZIKU12_START+(0x3EE0)) /ASCII57字库起点地址
用STM32带液晶的时候老是为字库头疼,如果板子上准备一个字库又费事半天,
所以想做个超小的字库放FLASH里,GB2312就够用了
找了个11点阵的汉字点阵,把空白部分删除,减少文件体积,不少字模不好看,做了个软件改了改
字的风格类似早期的NOKIA黑白屏手机,说好听就是怀旧点。
另外还做了一个5×7的点阵放在非汉字区的空白的地方,也可以通过指针访问。首地址偏移3EE0的一段
一点不妥就是如果测试的时候会显示几个乱码,基本上没问题,反正那个区也用不到。
用法:
先获得区位码
index=(区-0xA1)*94+(位-0xA1)); //区位
如果区位码大于 831 表示是汉字 需要减一个偏移量578
if(index>831)
index-=578;
*(((INT8U *)HZIKU12_START)+(index*22) 获得字模首地址,接下来的22个字节就是这个字的字模了。第一个字节为8点。第二个字节3点。以此类推。考虑过再进行优化用上浪费的5个点,文件大小可以更小,但是用起来就麻烦了,,理论上可以把字库的大小降到130K,意义不大。。