1. 为什么选择u8g2库驱动LCD显示中文?
第一次接触嵌入式显示开发时,我对着淘宝买来的OLED屏幕发愁——官方示例代码只能显示英文,而我的项目需要显示中文菜单。试过各种库之后,发现u8g2简直是嵌入式显示的瑞士军刀。这个开源库不仅支持130+种LCD驱动芯片,还能通过自定义字库实现中文显示,最关键的是内存占用极小,在RT-Thread这类资源受限的系统中也能流畅运行。
u8g2最大的优势在于它的分层架构。底层用u8x8处理硬件驱动,上层用u8g2实现图形绘制,这种设计让开发者可以专注业务逻辑。我实测过在STM32F103(仅有20KB RAM)上同时驱动SPI接口的SSD1306和I2C接口的SH1106双屏,依然能稳定显示12x12像素的中文字体。
提示:选择u8g2而非其他图形库的关键在于三点——跨平台兼容性、内存效率和字体工具链完整。特别是最后一点,它的bdf字体转换工具能完美支持中文生成。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与库集成
2.1 开发环境准备
在RT-Thread Studio中新建工程时,遇到过最坑的问题就是路径包含中文或空格。建议直接在D盘根目录创建rt-thread文件夹,所有工程都放在这个目录下。需要提前安装的工具有:
- Git(版本控制必备)
- Env工具(RT-Thread的包管理器)
- arm-none-eabi-gcc交叉编译器
安装Env后,记得在命令行执行:
bash复制$ pkgs --upgrade
这个命令会更新软件包索引,避免后续找不到u8g2库。我遇到过因为索引过期导致menuconfig里不显示最新版本的情况,折腾了半天才发现是这个原因。
2.2 集成u8g2库的两种方式
官方推荐通过menuconfig配置,但实际开发中发现更灵活的方式是手动集成:
- 从GitHub下载u8g2源码
- 将
csrc目录下所有.c文件添加到工程 - 保留
sys/rt-thread目录下的移植层代码
手动集成的优势是可以精简代码量。比如只用I2C驱动时,可以删除u8x8_d_ssd1306_128x64_noname.c这类SPI专用驱动文件。实测显示"Hello World"时,编译后的代码体积能减少15%左右。
