OLED(OLED)

驱动库使用通用性更好的软件(模拟)IIC的方式驱动OLED,但是亚博智能STM32平衡小车V2在硬件电路上是支持硬件IIC的

本章节内容仅介绍OLED相关方法,不介绍软件IIC的实现

方法

void OLED_I2C_Init()

初始化OLED模块

void OLED_Clear()

清空屏幕

void OLED_Refresh()

刷新屏幕

void OLED_Draw_Stringg(char *str, uint8_t x, uint8_t y, bool clear, bool refresh)

在指定位置写入字符串

参数类型注释
strchar *想要OLED显示的字符串
xuint8_t绘制字符串x方向上的起始坐标
yuint8_t绘制字符串y方向上的起始坐标
clearbool是否清空屏幕
refreshuint8_t是否立即屏幕
绘制完成后需要调用刷新方法才能显示

void OLED_Draw_Line(char *str, uint8_t line, bool clear, bool refresh)

在指定行写入字符串 /* 写入一行字符 */

参数类型注释
strchar *想要OLED显示的字符串
lineuint8_t在第几行显示字符串
clearbool是否清空屏幕
refreshuint8_t是否立即屏幕
默认行高为10

下述方法为驱动芯片SSD1306提供,可以进行更细致的绘制操作

SSD1306_UpdateScreen()

单位更新OLED显示屏内容

返回值类型
void

SSD1306_ToggleInvert()

切换OLED显示的颜色反转

返回值类型
void

SSD1306_Fill(SSD1306_COLOR_t Color)

填充屏幕的颜色

参数类型注释
ColorSSD1306_COLOR_t填充颜色
返回值类型
void

SSD1306_DrawPixel(uint16_t x, uint16_t y, SSD1306_COLOR_t color)

在指定坐标绘制一个像素

参数类型注释
xuint16_tx坐标
yuint16_ty坐标
colorSSD1306_COLOR_t像素颜色
返回值类型
void

SSD1306_GotoXY(uint16_t x, uint16_t y)

设置下一个字符的绘制坐标

参数类型注释
xuint16_tx坐标
yuint16_ty坐标
返回值类型
void

SSD1306_Putc(char ch, FontDef_t *Font, SSD1306_COLOR_t color)

绘制单个字符

参数类型注释
chchar要绘制的字符
FontFontDef_t*使用的字体结构体
colorSSD1306_COLOR_t字符颜色
返回值类型
char

SSD1306_Puts(char *str, FontDef_t *Font, SSD1306_COLOR_t color)

绘制字符串

参数类型注释
strchar*要绘制的字符串
FontFontDef_t*使用的字体结构体
colorSSD1306_COLOR_t字符串颜色
返回值类型
char

SSD1306_DrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, SSD1306_COLOR_t c)

绘制一条线

参数类型注释
x0uint16_t起始点x坐标
y0uint16_t起始点y坐标
x1uint16_t结束点x坐标
y1uint16_t结束点y坐标
cSSD1306_COLOR_t线条颜色
返回值类型
void

SSD1306_DrawRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c)

绘制矩形

参数类型注释
xuint16_t左上角x坐标
yuint16_t左上角y坐标
wuint16_t矩形宽度
huint16_t矩形高度
cSSD1306_COLOR_t矩形颜色
返回值类型
void

SSD1306_DrawFilledRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c)

绘制填充矩形

参数类型注释
xuint16_t左上角x坐标
yuint16_t左上角y坐标
wuint16_t矩形宽度
huint16_t矩形高度
cSSD1306_COLOR_t矩形颜色
返回值类型
void

SSD1306_DrawTriangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, SSD1306_COLOR_t color)

绘制三角形

参数类型注释
x1uint16_t第一点x坐标
y1uint16_t第一点y坐标
x2uint16_t第二点x坐标
y2uint16_t第二点y坐标
x3uint16_t第三点x坐标
y3uint16_t第三点y坐标
colorSSD1306_COLOR_t三角形颜色
返回值类型
void

SSD1306_DrawCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c)

绘制圆形

参数类型注释
x0int16_t圆心x坐标
y0int16_t圆心y坐标
rint16_t半径
cSSD1306_COLOR_t圆形颜色
返回值类型
void

SSD1306_DrawFilledCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c)

绘制填充圆形

参数类型注释
x0int16_t圆心x坐标
y0int16_t圆心y坐标
rint16_t半径
cSSD1306_COLOR_t填充圆形颜色
返回值类型
void

ssd1306_I2C_Init()

初始化I2C接口

返回值类型
void

ssd1306_I2C_Write(uint8_t address, uint8_t reg, uint8_t data)

向指定地址和寄存器写入数据

参数类型注释
addressuint8_tI2C设备地址
reguint8_t寄存器地址
datauint8_t要写入的数据
返回值类型
void

ssd1306_I2C_WriteMulti(uint8_t address, uint8_t reg, uint8_t *data, uint16_t count)

向指定地址和寄存器写入多个数据

参数类型注释
addressuint8_tI2C设备地址
reguint8_t寄存器地址
datauint8_t*指向数据的指针
countuint16_t要写入的数据数量
返回值类型
void

使用示例


#include "bsp_oled_i2c.h"
#include "bsp_oled.h"
int main() {
    OLED_I2C_Init();
    OLED_Clear();
    while(1) {
        OLED_DrawLine("Hello Yahboom!",1, 0, true, true);
    }
    return 0;
}