STM32点阵字库-ASII字符集

STM32点阵字库-ASII字符集

  • Fang XS.
  • 1452512966@qq.com
  • 如果有错误,希望被指出

前言

  • STM32使用LCD显示时,使用带字库的LCD可以直接用。但是项目上,可能需要多国语言字库,让产品能销售到不同国家。
  • 大部分的国家使用英语,一般采用ASII编码,常规做法是用不同的数组来存放不同字体的ASII字库。
  • 但是这样有个缺点,就是占RAM内存,STM32跑裸机还好,如果需要RTOS,Fatfs等等,堆内存就受限。如果需要不同字体,不同字号的字库,存在数组里,内存肯定是不够的。

ASII字库

  1. ASII简介
  • ASII字符表可显示的一共有95个字符,其余33个为控制字符或通信专用字符。
  • 在C语言中,每个字符都有其对应的值,例如字符'A' == 0x41
  1. ASII字库制作
  • FontMaker
  • 使用FontMaker软件生成:
    在这里插入图片描述
  • 字体一般选择宋体。
  • 字符集选择标准字库ASII。
  • 扫描方式和比特顺序依照LCD驱动选择。
  • 点击保存字库,命名为ASII16x16.FON即可。
  1. ASII字库偏移计算
  • 在ASII字符集中,由于控制字符占33个,可显示字符从英文空格开始,但是提取的ASII字库都是从英文空格开始。
  • 所以,一个可显示的字符在提取的字库中的位置是c - ' '的。
  • 字符的偏移根据点阵大小和当前字符决定。
  • 在字库中,数据的存放都是按照字节来存放的,一个字符占据一定的空间。
  • 它的偏移就是指,指定的字符在字库中的那个地址开始。
  • 偏移计算:
    offset = 点阵大小宽度 X 点阵大小高度 X (C - ' ' ) / 8
  • 例如:
    第二节ASII字库制作的图片所示的大小计算字符’A’的偏移量:
    offset = 16 X 16 X (‘A’ - ’ ’ ) / 8 = 1056
  1. ASII字库数据获取
  • 依照前面章节,获取了字库和字符的偏移量,现在只需要获取字符的占用的字节数,就可以直接显示出来了。
  • 占用的字节数 = 点阵大小宽度 X 点阵大小高度 / 8
  • 例如第二节ASII字库制作的图片所示的大小来计算:
    占用的字节数 = 16 X 16 / 8 = 32 Bytes
  • 这里的32Bytes,直接画点就能显示在LCD上了。
  1. ASII字库大小计算
  • 字库大小(Bytes) = 高度 X 宽度 X 字符集字符个数 / 8
  • 例如:
    第二节ASII字库制作的图片所示的大小计算:
    字库大小 = 16 X 16 X 96 /8 = 3072 Bytes
    在这里插入图片描述
  1. 常见使用方式
    一般情况下,字库与SD卡或SPI Flash一起用,也就是把字库装SD卡,用文件系统进行管理,比如Fatfs,直接用Fatfs提供的文件操作API,把字库数据获取出来,再显示。

  2. 显示乱码的问题,可能原因如下:

  • 字库生成工具的扫描方式或比推特顺序与实际使用的LCD驱动不一致。
  • 获取字库的偏移计算出错或者获取字库数据的数组溢出等。

  • 支持多国语言操作方式相同,区别在于偏移地址的确定和字库数据的获取。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值