
一、汉字取模工具 嵌入式LCD屏显示无非就是不间断刷新LCD宽度*LCD高度的像素矩阵,并为每个像素指定特定颜色。对于LCD屏幕显示汉字,无非就是将字体形状转换为字体宽度*字体高度的像素矩阵,及指定每个字体像素的颜色,然后在LCD屏幕指定位置按字体宽度*字体高度的像素矩阵进行刷新渲染。; [0 i0 F0 g) x r/ B' J 0 M% E6 V: u, Y 汉字取模工具可以设置汉字显示的行、列像素大小,设置字体类型等信息,将输入的每个字符转换成指定行宽、列宽的二进制矩阵,在该矩阵中,字体覆盖区域采用1标记、字体不覆盖区域采用0标记。9 C/ S$ @8 D& P( X3 U ) d& ~6 Z: b1 b7 `# ]2 _% y) P5 W ' f5 Y; ?! ?5 Q5 z; B5 ^: P 二、汉字取模配置 我们双击LcmZimo.exe打开,取模工具界面如下,红框部分是字体相关参数设置,篮框部分是图片参数设置(通常用于各种艺术字体、图片像素等): ![]() 现在来制作24*24矩阵的“嵌入式开发测试!”的字体编码表,如下图进行设置。1 B& j* Q+ Z6 x, A- q ![]() 最终得到字符编码表:7 p, R7 N% j: l S5 @5 s9 q% o ![]() 1 Q& F" {( d+ G L# ] 点击保存,将字符编码表输出为头文件“pytest.h”,如下图:; g8 c6 D5 r; x 3 v& W+ i0 _4 y4 ? ![]() 三、创建工程 本文基于STM32L496VGT3的MCU创建一个新工程,并提前实现了lpusart串口驱动、三个按键及三个LED灯驱动、以及OLED屏幕驱动(SPI引脚)% L+ z- y7 h, L1 o+ K5 T Z : n9 K7 \$ c) T% o' e 假定已经实现了这些基本功能,在此基础上实现OLED屏幕显示刚刚定义汉字“嵌入式开发测试!”。 + A' m6 ` H$ Z4 q" D 四、汉字LCD显示设计 将刚才取模软件保存输出的pytest.h头文件拷贝到ICore/oled目录下,本文对pytest.h做了细微调整(去除一些不规范编程告警,不调整无影响): ![]() & u% ~& j5 l8 L3 ~ N. S 取模软件针对每个字符输出了一个72字节的8bit的数值,也就是72字节*8bit=576bit=24*24像素,目前该字符编码在取模软件上设置是横向取模左高位,数据排列:从左到右从上到下,就意味着,每3个字节*8bit=24bit表示一行的像素,如前三个字符0X00 0X18 0X00->0000 0000 0001 1000 0000 0000,作为“嵌”字第一行像素标记,位数值为1的填充前景色,为0的填充背景色。具体代码如下:
上述代码中,每个汉字72字节编码表,3个字节表示一行(列宽3*8bit=24),共24行(72字节/3=24),构成24*24的二进制矩阵,然后根据该二进制矩阵,为1的给与前景色,为0的给与背景色,从而得到24*24的颜色矩阵,然后在渲染时在24*24像素的LCD区域渲染对应的颜色,形成屏幕显示输出。+ K6 d6 K& c% f( |' s ; r/ i" d7 n( q 然后逐个字符绘制输出,完成前面输入字段“嵌入式开发测试!”的全部输出:
五、汉字输出测试7 z5 q: f& X3 ]3 b$ Z) J: g' Y 在主循环函数中,按键KEY0时,屏幕输出显示“嵌入式开发测试!”字段:, k! ?; m$ V+ K/ m& M5 ^4 f, q* Z, } 4 z5 D M- u7 V5 G5 q ![]() + B9 o( H$ c$ ~* r# p+ e5 O 编译及下载: ![]() 8 I5 r) I0 A' E# I; `6 m0 v3 N. r 按键KEY0,屏幕输出显示如下:6 B8 l8 q) n$ ~ * s% i) p5 [" o# |. J3 m ![]() 7 l$ B( k6 y" K$ ]$ ~& `2 z ————————————————; v. [5 E; a+ }) w' o4 f 版权声明:py_free-物联智能 如有侵权请联系删除 |
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
新版STM32Cube for Visual Studio Code开发体验
【STM32N6570-DK评测】摄像头video encoder
实战经验 | STM32CubeIDE实用技巧之工程联调
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
【下载问题解决】关于ST官网下载软件问题解决
【STM32N6570-DK评测】开发环境及LED debug
实战经验 | 基于STM32CubeIDE下载TouchGFX GUI应用的出错分析
实战经验 | 如何修改STM32Cube固件包的存储位置
兔哥的杂谈【002】——如何性价比更高地去编译STM32