在OLED上用大于126的ASCII码显示定制符号

在OLED上用大于126的ASCII码显示定制符号

陈拓 2021/07/09-2021/07/09

1. 概述

在做嵌入式开发时我们经常会遇到显示非ASCII码符号的问题,比如摄氏温度符号或者一个充电的电池图标。而通常的字体库只能显示标准ASCII字符集的32-126个可打印字符。

在本文中我们将自定义符号添加到字库中ASCII码大于126的位置。

下面以摄氏温度符号℃为例进行说明。

字库采用Adafruit GFX格式。有关Adafruit GFX格式字库的详细说明见:

Adafruit GFX Library字体规范》

https://zhuanlan.zhihu.com/p/385486474

https://blog.csdn.net/chentuo2000/article/details/118369058

2. 在字库中添加大于126的ASCII码

2.1 准备图标位图数据

我们用.代表二进制0,用x代表二进制1。

扫描二维码关注公众号,回复: 13249536 查看本文章

为方便手工编码,加了2列冗余bit。

2.2 创建新的glyphs

  {  3682,  24,  26,  24,    2,  -25 },   // 0x7F 'Centigrade'

参数的设定方法晴参考Adafruit GFX Library字体规范》。

2.3 将新创建的符号添加到字库中

将新字符添加到《Adafruit GFX字体制作》

https://zhuanlan.zhihu.com/p/387949673

https://blog.csdn.net/chentuo2000/article/details/118609006

一文中创建的字库文件Digital_7_V420pt7b.h中。

  • 添加位图数据

在数组Digital_7_V420pt7bBitmaps[]最后添加位图数据:

  • 添加图形数据

在数Digital_7_V420pt7bGlyphs[]最后添加图形数据:

  • 修改Digital_7_V420pt7b

修改为:

 3. 在C程序中使用大于126的ASCII码

不能用键盘输入的ASCII码字符用转义符\输入,如下所示:

    char *text = (char*)"23.45 \x7F";

4. 显示效果

下图是ESP8266驱动0.96OLED显示屏的效果:

参考文档

  1. Creating Custom Symbol Fonts for Adafruit GFX Library
    https://learn.adafruit.com/creating-custom-symbol-font-for-adafruit-gfx-library/hardware-and-software-requirements
  2. 8 Bit GFXfonts
    https://sigmdel.ca/michel/program/misc/gfxfont_8bit_en.html

猜你喜欢

转载自blog.csdn.net/chentuo2000/article/details/118613380