STM32 IDE中OLED显示屏如何显示℃符号?求非手动绘制方案
SSD1306 OLED 显示摄氏度(℃)符号的可行方案
方案1:扩展内置字体表添加℃点阵
你提供的源码中font8x8_basic数组是8x8的ASCII字符点阵表,默认仅包含基础ASCII字符。可直接在该数组中添加℃符号的点阵数据,步骤如下:
- 选定一个未被使用的ASCII码(比如
0xDF,避开0x20-0x7F的基础字符范围) - 在
font8x8_basic数组末尾添加℃的8x8点阵数据,示例点阵:
该点阵对应8x8的℃图案:上半部分为C的轮廓,下半部分用两个点模拟度符号。0x0E, 0x11, 0x11, 0x0E, 0x00, 0x11, 0x11, 0x00 - 显示时直接调用
ssd1306_putc(0xDF),和输出普通字符操作一致。
方案2:用现有字符拼接模拟℃
如果不想修改字体表,可通过调整光标位置,用现有字符组合出℃效果:
- 先调用
ssd1306_putc('C')显示字母C - 调用
ssd1306_set_cursor将光标向右偏移2像素、向上偏移4像素(可根据实际字体大小微调) - 调用
ssd1306_putc('o')显示小写o,让它落在C的右上角,模拟℃外观 - 完成后重置光标位置到正常区域,继续显示其他内容
方案3:适配Unicode字符(进阶)
若后续需要支持更多特殊字符,可扩展ssd1306_putc函数,添加Unicode到点阵的映射逻辑:
- 为℃的Unicode码
U+2103分配对应的点阵数据 - 修改字符输出函数,当检测到该Unicode码时,直接输出对应点阵
此方案需要修改驱动的字符处理逻辑,适合有一定开发基础的场景
内容的提问来源于stack exchange,提问作者min_een
相关产品推荐
相关产品推荐

