目录

1.HAL库配置

2. 代码驱动与移植

3.中文显示

3.1 汉字取模

3.2 编码格式

3.实战操练

3.1 字模载入

3.1.1直接粘贴

3.1.1.1正常情况

3.1.1.2重名问题

3.1.2融入大家庭

结果呈现


1.HAL库配置

基本配置可以看我往期的文章STM32烧录必看:STLink接线与供电详解(含用 JTAG 连 ST-Link),讲解得很到位了,主要是配置一下I2C。


对于要开启哪个I2C通道,可以先下载例程代码,看看它使用的是哪个。以下图为例,就是使用的I2C2.


基本上不需要修改就可以使用了,如果你需要更快的传输,可以将速度改快一点

2. 代码驱动与移植

打开波特律动LED字模生成器网站,根据自己的OLED芯片选择对应的驱动进行下载。


解压之后在Core->Inc路径下找到font.holed.h


在Core->Src路径下font.coled.c


将其添加到自己的工程当中,你可以像我一样创建一个OLED的文件来存放与之相关的文件。
显示结果就是这样


PS:如果你创建了OLED文件夹,记得在CMakeLists.txt文件里面声明一下

3.中文显示

3.1 汉字取模

打开波特律动LED字模生成器网站


第一步:对汉字大小进行定制
第二步:输入汉字
第三步:获取到对应汉字的字模
第四步:复制到工程文件里面

3.2 编码格式

所有文件都应该以UTF-8的格式进行编码。
这里以clion为例,将第三步里的三个编码全部改成UTF-8的格式


如果在这里显示UTF-8,则说明编码格式是正确的。


如果这里没有显示UTF-8,如GBK编码等,可以在编码器中点击+号,添加文件。


如果显示了下图的情况,果断选择转化


PS:我这里是为了演示才显示的UTF-16,实际应该为UTF-8
最后在CMakelists.txt文件中添加以下代码

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -finput-charset=UTF-8 -fexec-charset=UTF-8")  
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finput-charset=UTF-8 -fexec-charset=UTF-8")

3.实战操练

3.1 字模载入

打开font.c文件,粘贴获得的字模。
以下介绍两种载入的方法

3.1.1直接粘贴

3.1.1.1正常情况

font.c文件的底部进行粘贴


font.h文件里面进行声明。注意要写extern关键词,因为main.c文件里面要使用

3.1.1.2重名问题

由于每次生成的字模默认是存储在zh16x16[][36]数组里面的,难免会遇到重名问题。此时只需要修改一下数组的名称,再重复上述操作即可。主要关注以下几个点
font.c文件里面,1与2的名称不能一样。
注意后面的数组引用,也要进行相应的修改。


font.h文件里面,声明的是结构体,而不是数组。这点要注意


最后,在main.c文件里面,使用的也是结构体

3.1.2融入大家庭

直接在原有的字模数组里面添加,注意长度方面也要做出修改。如果你不知道或者懒得计算有多少个字,可以使用sizeof(zh16x16)
优点:

  1. 可以避免记忆数组名,直接以长宽为标准记忆。
  2. 可以避免重名现象。
  3. 也可以减少对数组的声明等。

缺点:操作繁琐了一点,对于一些小型项目不是很方便

结果呈现


最后非常感谢keysking这些大佬的高质量教学,以及开源软件,让我能更深入了解OLED的相关知识。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐