基于 stm32 的12864 OLED 驱动模板代码:
移植方便,底层接口配置方便(SPI 和 IIC 可选)
字体大小等配置采用表驱动模式,添加/修改/删除方便快捷,支持中英文混合输入显示 (中文编码 GB2312)
支持多种取模方式,可根据字体字宽比选择不同的取模方式用来减少点阵数据所占的内存空间
支持 ASCII 字符集裁剪,可根据具体需求设置只保留部分 ASCII 字符集的点阵数据,用来减少点阵数据所占的内存空间
OLED 采用双缓冲机制,实现 OLED 的画面操作和显示功能分离,缩短画面操作的耗时,定时同步画面(以人眼可接受的频率刷新)
仿照函数 printf,实现格式化输出,支持窗口 printf 功能(支持回车换行操作),实现滚动式输出(窗口大小、字体可配置)
代码注释丰富,风格统一,便于阅读和使用
oled.c 和 oled.h
实现具体功能,对外提供的 API 接口函数
oledio.c 和 oledio.h
硬件接口功能,实现 SPI 或 IIC 通信函数;移植需要修改
oledconf.c 和 oledconf.h
字体配置、图形配置和功能配置等
fontxxx.h 和 bmp.h
用来存放字体和图形BMP的点阵数据
移植需修改 oledio.c 相关硬件接口函数; 通过宏定义 "_DRIVE_INTERFACE_TYPE" 选择接口类型
使用前初始化函数 OLED_Init, 同时可以使用 OLED_Clear 立即清屏
周期调用函数 OLED_ShowTask, 用来同步画面内容(即缓冲同步到 OLED 上显示)
可定义宏定义 "_USE_OLED_PRINTF" 使能OLED 的式样化输出功能, 即类似 printf 的功能
下列代码在源文件可配置需要字体,需要同步修改头文件的枚举定义 efontSize
/** 字体大小配置表 */
static fontConfig_t sg_tFontCfgTable[FONT_MAX_NUM] =
{
{FONT_MODE_COLUMN_BY_ROW, 6, 12, 12, ' ', '~', ASCII_6X12_DATA, FONT_12X12_IDX, FONT_12X12_DATA},
{FONT_MODE_COLUMN_BY_ROW, 8, 16, 16, ' ', '~', ASCII_8X16_DATA, FONT_16X16_IDX, FONT_16X16_DATA},
{FONT_MODE_COLUMN_BY_ROW, 12, 24, 24, ' ', '~', ASCII_12X24_DATA, FONT_24X24_IDX, FONT_24X24_DATA},
{FONT_MODE_COLUMN_BY_ROW, 16, 32, 32, ' ', '~', ASCII_16X32_DATA, FONT_32X32_IDX, FONT_32X32_DATA},
};
efontSize
/** 图形配置表 */
static graphicConfig_t sg_tGraphicTable[OLED_GRAPHIC_NUM] =
{
{FONT_MODE_PROGRESSIVE, 86, 64, "bootLog", LOG_BMP},
};
const_zpc@163.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )