LCD中文字模编译前自动提取的方法

LCD点阵显示直观、灵活,已成为许多嵌入式产品的显示方式。在嵌入式产品的LCD中文显示中,因为成本和存储空间等诸多原因,往往选用不带字库的LCD模块,而是只自己提取需要显示的汉字的字模,编译到程序中。有没有一种方法可以直接在程序设计时输入汉字,然后在编译前自动生成汉字取模后的.c文件呢?
笔者以前就写了一个字模提取软件,可以嵌入到IAR等编译器中,提取文件夹内所有.C文件中双引号中的汉字,并自动跳过注释内容,并生成字模文件。下面详细说一下使用方法,希望对大家有所帮助。
首先,要下载这个小工具然后解压,这个我已经把到上传到百度网盘中了,地址是:
百特驿站http://www.b-tech.com.cn/?p=152
第二步,是配置编译器,让编译前自动执行生成HZK.C,如下图:
   

前面D:\test\hzk.exe是程序的路径,后面的参数D:\test是要搜索包含中文信息C文件的目录,生成的HZK.C文件会在与hzk.exe小工具同级的目录下。
第三步,就是把HZK.C加入到编译工程,这个都知道。
第四步,还要自己写一个HZK.h的头文件,这个文件定义了HZK.C的结构,其内容如下:
#ifndef        _HZK_H_
#define _HZK_H_
typedef struct hz_struct{
        unsigned short internal_code;
        unsigned char dot_matrix_data[32];
}hz_struct;
extern const hz_struct Hzk[];
extern const unsigned short hzk_bytes;
#endif
这样就可以了,这可以直接程序,包含显示的中文信息,而不用管字库了,当然还要设计显示接口,这里就不说了。下面看一下效果吧
我的测试main.c中的内容如下:
char *str="欢迎访问我的博客:百特驿站(www.b-tech.com.cn)";
int main()
{
  return 0;  
}
编译后,自动生成的HZK.C的内容如下:
#include "hzk.h"
const hz_struct Hzk[] =
{
{ 0xB0D9, 0x00, 0x04, 0xFF, 0xFE, 0x01, 0x00, 0x02, 0x00, 0x04, 0x10, 0x1F, 0xF8, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10,},
{ 0xB2A9, 0x20, 0x50, 0x20, 0x48, 0x2F, 0xFE, 0x20, 0x40, 0x27, 0xFC, 0xFC, 0x44, 0x27, 0xFC, 0x24, 0x44, 0x27, 0xFC, 0x24, 0x44, 0x20, 0x10, 0x2F, 0xFE, 0x22, 0x10, 0x21, 0x10, 0x20, 0x50, 0x20, 0x20,},
{ 0xB5C4, 0x10, 0x40, 0x10, 0x40, 0x22, 0x44, 0x7F, 0x7E, 0x42, 0x84, 0x43, 0x04, 0x42, 0x04, 0x42, 0x84, 0x7E, 0x64, 0x42, 0x24, 0x42, 0x04, 0x42, 0x04, 0x42, 0x04, 0x7E, 0x04, 0x42, 0x28, 0x00, 0x10,},
{ 0xB7C3, 0x00, 0x80, 0x20, 0x40, 0x10, 0x40, 0x10, 0x04, 0x07, 0xFE, 0x00, 0x80, 0xF0, 0x88, 0x10, 0xFC, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x10, 0x88, 0x15, 0x08, 0x19, 0x08, 0x12, 0x50, 0x04, 0x20,},
{ 0xBBB6, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x80, 0x04, 0xFC, 0x45, 0x04, 0x46, 0x48, 0x28, 0x40, 0x28, 0x40, 0x10, 0x40, 0x28, 0x40, 0x24, 0xA0, 0x44, 0xA0, 0x81, 0x10, 0x01, 0x08, 0x02, 0x0E, 0x0C, 0x04,},
{ 0xBFCD, 0x02, 0x00, 0x01, 0x00, 0x7F, 0xFE, 0x48, 0x02, 0x8F, 0xF4, 0x08, 0x20, 0x14, 0x40, 0x23, 0x80, 0x0C, 0x60, 0x30, 0x1E, 0xCF, 0xE4, 0x08, 0x20, 0x08, 0x20, 0x08, 0x20, 0x0F, 0xE0, 0x08, 0x20,},
{ 0xCCD8, 0x10, 0x40, 0x10, 0x40, 0x50, 0x48, 0x53, 0xFC, 0x7C, 0x40, 0x90, 0x44, 0x17, 0xFE, 0x18, 0x10, 0x30, 0x14, 0xD7, 0xFE, 0x11, 0x10, 0x10, 0x90, 0x10, 0x90, 0x10, 0x10, 0x10, 0x50, 0x10, 0x20,},
{ 0xCECA, 0x20, 0x04, 0x1B, 0xFE, 0x08, 0x04, 0x40, 0x04, 0x40, 0x24, 0x4F, 0xF4, 0x48, 0x24, 0x48, 0x24, 0x48, 0x24, 0x48, 0x24, 0x48, 0x24, 0x4F, 0xE4, 0x48, 0x24, 0x40, 0x04, 0x40, 0x14, 0x40, 0x08,},
{ 0xCED2, 0x04, 0x80, 0x0E, 0xA0, 0x78, 0x90, 0x08, 0x90, 0x08, 0x84, 0xFF, 0xFE, 0x08, 0x80, 0x08, 0x90, 0x0A, 0x90, 0x0C, 0x60, 0x18, 0x40, 0x68, 0xA0, 0x09, 0x20, 0x0A, 0x14, 0x28, 0x14, 0x10, 0x0C,},
{ 0xD3AD, 0x00, 0x00, 0x41, 0x84, 0x26, 0x7E, 0x14, 0x44, 0x04, 0x44, 0x04, 0x44, 0xF4, 0x44, 0x14, 0xC4, 0x15, 0x44, 0x16, 0x54, 0x14, 0x48, 0x10, 0x40, 0x10, 0x40, 0x28, 0x46, 0x47, 0xFC, 0x00, 0x00,},
{ 0xD5BE, 0x00, 0x40, 0x20, 0x40, 0x10, 0x44, 0x10, 0x7E, 0xFE, 0x40, 0x00, 0x40, 0x44, 0x40, 0x44, 0x44, 0x25, 0xFE, 0x25, 0x04, 0x29, 0x04, 0x09, 0x04, 0x1F, 0x04, 0xE1, 0x04, 0x41, 0xFC, 0x01, 0x04,},
{ 0xE6E4, 0x08, 0x00, 0xFD, 0xFC, 0x08, 0x88, 0x48, 0x50, 0x48, 0x20, 0x48, 0x50, 0x48, 0x8E, 0x4B, 0x24, 0x7C, 0x20, 0x05, 0xFC, 0x04, 0x20, 0x1C, 0x24, 0xE7, 0xFE, 0x04, 0x20, 0x14, 0x20, 0x08, 0x20,},
};

const unsigned short hzk_bytes=sizeof(Hzk)/sizeof(hz_struct);
  

本文出处:百特驿站http://www.b-tech.com.cn/?p=152

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
。打开功能是专门用于对C语言文件自动提取显示所需要的汉字,进行点阵码数据转换的, 在您的C语言程序中,有一点需要特别留意:您的注解中请不要使用双引号,否则会引起 提取错误。 软件包中的文件ee.c作为一个简单例程供提取测试用。 2。提取以后的点阵码可以随意修改点阵数据,使用鼠标的左键为加一点,右键为擦除一点。 修改完毕请按旁边的确认键将数据记录到点阵码中,否则您的修改将自动放弃。 3。点阵码可以随意平移,请谨慎使用。平移之请查看一遍所有的符点阵图,平移有可能 会丢失边界点,移出了边界的点阵将被丢弃,不可恢复。 平移请确认是否有必要进行全体符一起移动。 4。用户自定义特殊符的建立,首先选定点阵数据,在下面的汉字输入窗口输入几个您不使 用的汉字,确认。然后生成了这些汉字的点阵码,再将他们清空(使用平移按钮中间的那 块抹布),就可以用鼠标描绘你的图案了,最后别忘了打“确认”键。 5。ASCII符可以自动提取0x20~0x7f的全部,最后一个0x7f一般都没有用,可以手工将它删 除,也可以利用它做一个简单的特殊符。 汉字库中也包含有ascii符,但是经查对与这三个ascii库基本一样,所以就不再重复。 6。保存文件:C语言格式的默认为.h类型,汇编格式的默认为.inc类型,只要将他们加入到 您的工程中就可以了。 7。新增加了自动添加下划线功能。这项功能在做点阵显示和修改的候并不出现下划线, 设置了以后仅仅在最后的输出文件中出现,以免干扰编辑修改。 8。扩充对windows汉字的直接提取,从16~96范围内可以任意设定选。主要用于制作界面的 开机封面少量标识性汉字。 9。扩充了对ascii小库5x8以及大库20*40/24*48的支持,毕竟库文件比较工整。
1。界面采用新的体,不会再有那种难看的黑色粗体,比以的要漂亮多了。 2。加入全面的提示帮助,尽量减少普通用户的各种疑惑。 3。修正生成文件的扩展名的一些BUG,不会总是加上FON的扩展名了。 4。修正生成字模数据的一些格式BUG,现在生成的C51格式字模数据基本上可以直接粘贴到源程序中使用而不需要修改了 5。加入新的字模数据格式调整项,允许用户更自由的定制自己需要的数据格式 6。最重要的更新:全面支持保存当设置功能,用户设置的字模格式,主窗口状态和库生成窗口选项信息均可保存,下一次打开窗口不用重新设置。 7。修正了新建图象自动跳到图形模式的BUG 8。增加输出紧凑格式数据选项,可以生成不包含空白行的字模数据。 9。完善了每行数据显示个数的功能,可以任意设置每行显示的数据个数,并同可以设置每行索引数据显示个数。 10。修正了模说明的一些错误,并改动了格式。 11。现在当用户选择10进制输出,会自动去掉生成字模数据的“0x",或后面的“H”,选择16进制则会自动加上。 12。对各个窗体重新设计以全面适应最大化的需要,如果您觉得当窗口不够大,可以最大化使用。 13。增加生成英文点阵库功能,可自动生成ASCII码从0-127的任意点阵库,使用方法同生成国标点阵库功能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ytuan

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值