[应用相关] LCD的字符显示字库生成

[复制链接]
 楼主| jstgotodo 发表于 2021-7-15 20:55 | 显示全部楼层 |阅读模式
在使用stm32显示文本时,首先要使用字模软件生成字库,如下:

2489460f02fa6594a9.png

这里,使用的是Consolas字体,点阵大小为16*16(汉字),此时英文字体的大小为8*16,宽度为汉字字体的一半,然后设置选项参数(包括阴码、逐行扫描、十六进制等),具体配置如下:

2959260f02fb32552c.png

然后就可以生成字库,首先生成ASCII字库:

8797860f02fb811f27.png

会生成两个文件,即字库 + 索引:
171260f02fbdac818.png


       因为ASCII编码表的0 ~ 31是不可见字符,从32(空格)33(感叹号!)...开始才是文本字符,因此为了节省空间,直接删去前面多余不用的不可见字符,操作如下:

4760360f02fe050716.png

删除后:


8880660f02fe47e25f.png
然后利用PCtoLCD取模软件重新加载txt文件生成字库:

7995960f02fea1bab3.png

       利用WinHex软件打开字库,来看一下数据,如果生成正确的话,第一个16字节(英文为16,中文为32)应该为空格,第二个为感叹号:

8680260f02ff67d473.png

直接验证一下,这个生成的字符图案的正确性:
  1. /* 生成的字模数据 */
  2. uint8_t test_module[] = {
  3.         0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,
  4.         0x18,0x08,0x00,0X08,0X18,0X00,0X00,0X00
  5. };


  6. void Display_char_test(void)
  7. {
  8.         uint8_t i = 0, j = 0, k = 0;
  9.        
  10.         /* 字模数据有16行 */
  11.         for (i = 0; i < 16; i++)
  12.         {
  13.                 /* 每行16列,2字节 */
  14.                 for (j = 0; j < 1; j++)
  15.                 {
  16.                         /* 每个字节8位 */
  17.                         for (k = 0; k < 8; k++)
  18.                         {
  19.                                 /* 对每个数据字节从高位到低位进行遍历 */
  20.                                 if ((test_module[i * 1 + j] & (0X80 >> (k))) != 0)
  21.                                 {
  22.                                         printf("*");
  23.                                 }
  24.                                 else
  25.                                 {
  26.                                         printf(" ");
  27.                                 }
  28.                         }
  29.                 }
  30.                 printf("\n");
  31.         }
  32. }
  33. ————————————————

串口打印结果如下:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

这和取模软件的图案一致:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

接下来,生成中文GB2312 宋体 的字库:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

同样的,看一下生成的字库数据:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

同理,根据生成的数据,尝试打印“顿号”:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Rpbmd5Y19lZQ==,size_16,color_FFFFFF,t_70.jpg

至此,字库数据生成完毕。


版权声明:本文为CSDN博主「小小刘木子」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/dingyc_ee/article/details/102651664


木木guainv 发表于 2021-8-6 18:06 | 显示全部楼层
其他字模软件生成的字库也可以用吗
xiaoqizi 发表于 2021-8-6 18:09 | 显示全部楼层
一般这种生成的字库都多大啊
wowu 发表于 2021-8-6 18:13 | 显示全部楼层
这个工具是st的出品吗
usysm 发表于 2021-8-7 16:35 | 显示全部楼层
ASCII码字库的显示   
usysm 发表于 2021-8-7 16:37 | 显示全部楼层
uCGUI字符串显示吗   
typeof 发表于 2021-8-7 16:37 | 显示全部楼层
字库怎么加载  
yujielun 发表于 2021-8-7 16:38 | 显示全部楼层

谁给个特殊字符的字库
kkzz 发表于 2021-8-7 16:39 | 显示全部楼层
显示多个汉字和字符吗   
pklong 发表于 2021-8-7 16:39 | 显示全部楼层
OLED实验和汉字显示实验修改的吧  
touser 发表于 2021-8-7 16:39 | 显示全部楼层
显示的内容是预先设定的?   
myiclife 发表于 2021-8-7 16:40 | 显示全部楼层
12864带字库显示屏自定义字符显示
uytyu 发表于 2021-8-7 16:40 | 显示全部楼层
STM32自带GB2312字库显示汉字_
iyoum 发表于 2021-8-7 16:41 | 显示全部楼层
带字库12864自定义字符怎样显示?
jkl21 发表于 2021-8-7 16:41 | 显示全部楼层
看看字模点阵字库生成器(FontMaker)  
myiclife 发表于 2021-8-7 16:42 | 显示全部楼层
emwin使用自定义字库显示字母及汉字特殊字符  
touser 发表于 2021-8-7 16:42 | 显示全部楼层
所有只要把所要用到的汉字做成字库  
pklong 发表于 2021-8-7 16:42 | 显示全部楼层
字符显示器的字库中存放着字形的列点阵  
kkzz 发表于 2021-8-7 16:42 | 显示全部楼层

利用LCD602 的自定义字库显示汉字  
yujielun 发表于 2021-8-7 16:42 | 显示全部楼层
如何读取字库(ttf文件)里包含的所有字符  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

2076

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部