在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。
为方便手工编码,加了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. 显示效果
参考文档
- Creating Custom Symbol Fonts for Adafruit GFX Library
https://learn.adafruit.com/creating-custom-symbol-font-for-adafruit-gfx-library/hardware-and-software-requirements - 8 Bit GFXfonts
https://sigmdel.ca/michel/program/misc/gfxfont_8bit_en.html