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)
在指定位置写入字符串
| 参数 | 类型 | 注释 |
|---|---|---|
| str | char * | 想要OLED显示的字符串 |
| x | uint8_t | 绘制字符串x方向上的起始坐标 |
| y | uint8_t | 绘制字符串y方向上的起始坐标 |
| clear | bool | 是否清空屏幕 |
| refresh | uint8_t | 是否立即屏幕 |
| 绘制完成后需要调用刷新方法才能显示 | ||
void OLED_Draw_Line(char *str, uint8_t line, bool clear, bool refresh)
在指定行写入字符串 /* 写入一行字符 */
| 参数 | 类型 | 注释 |
|---|---|---|
| str | char * | 想要OLED显示的字符串 |
| line | uint8_t | 在第几行显示字符串 |
| clear | bool | 是否清空屏幕 |
| refresh | uint8_t | 是否立即屏幕 |
| 默认行高为10 | ||
下述方法为驱动芯片SSD1306提供,可以进行更细致的绘制操作
SSD1306_UpdateScreen()
单位更新OLED显示屏内容
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_ToggleInvert()
切换OLED显示的颜色反转
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_Fill(SSD1306_COLOR_t Color)
填充屏幕的颜色
| 参数 | 类型 | 注释 |
|---|---|---|
| Color | SSD1306_COLOR_t | 填充颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_DrawPixel(uint16_t x, uint16_t y, SSD1306_COLOR_t color)
在指定坐标绘制一个像素
| 参数 | 类型 | 注释 |
|---|---|---|
| x | uint16_t | x坐标 |
| y | uint16_t | y坐标 |
| color | SSD1306_COLOR_t | 像素颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_GotoXY(uint16_t x, uint16_t y)
设置下一个字符的绘制坐标
| 参数 | 类型 | 注释 |
|---|---|---|
| x | uint16_t | x坐标 |
| y | uint16_t | y坐标 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_Putc(char ch, FontDef_t *Font, SSD1306_COLOR_t color)
绘制单个字符
| 参数 | 类型 | 注释 |
|---|---|---|
| ch | char | 要绘制的字符 |
| Font | FontDef_t* | 使用的字体结构体 |
| color | SSD1306_COLOR_t | 字符颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | char |
SSD1306_Puts(char *str, FontDef_t *Font, SSD1306_COLOR_t color)
绘制字符串
| 参数 | 类型 | 注释 |
|---|---|---|
| str | char* | 要绘制的字符串 |
| Font | FontDef_t* | 使用的字体结构体 |
| color | SSD1306_COLOR_t | 字符串颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | char |
SSD1306_DrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, SSD1306_COLOR_t c)
绘制一条线
| 参数 | 类型 | 注释 |
|---|---|---|
| x0 | uint16_t | 起始点x坐标 |
| y0 | uint16_t | 起始点y坐标 |
| x1 | uint16_t | 结束点x坐标 |
| y1 | uint16_t | 结束点y坐标 |
| c | SSD1306_COLOR_t | 线条颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_DrawRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c)
绘制矩形
| 参数 | 类型 | 注释 |
|---|---|---|
| x | uint16_t | 左上角x坐标 |
| y | uint16_t | 左上角y坐标 |
| w | uint16_t | 矩形宽度 |
| h | uint16_t | 矩形高度 |
| c | SSD1306_COLOR_t | 矩形颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_DrawFilledRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, SSD1306_COLOR_t c)
绘制填充矩形
| 参数 | 类型 | 注释 |
|---|---|---|
| x | uint16_t | 左上角x坐标 |
| y | uint16_t | 左上角y坐标 |
| w | uint16_t | 矩形宽度 |
| h | uint16_t | 矩形高度 |
| c | SSD1306_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)
绘制三角形
| 参数 | 类型 | 注释 |
|---|---|---|
| x1 | uint16_t | 第一点x坐标 |
| y1 | uint16_t | 第一点y坐标 |
| x2 | uint16_t | 第二点x坐标 |
| y2 | uint16_t | 第二点y坐标 |
| x3 | uint16_t | 第三点x坐标 |
| y3 | uint16_t | 第三点y坐标 |
| color | SSD1306_COLOR_t | 三角形颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_DrawCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c)
绘制圆形
| 参数 | 类型 | 注释 |
|---|---|---|
| x0 | int16_t | 圆心x坐标 |
| y0 | int16_t | 圆心y坐标 |
| r | int16_t | 半径 |
| c | SSD1306_COLOR_t | 圆形颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
SSD1306_DrawFilledCircle(int16_t x0, int16_t y0, int16_t r, SSD1306_COLOR_t c)
绘制填充圆形
| 参数 | 类型 | 注释 |
|---|---|---|
| x0 | int16_t | 圆心x坐标 |
| y0 | int16_t | 圆心y坐标 |
| r | int16_t | 半径 |
| c | SSD1306_COLOR_t | 填充圆形颜色 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
ssd1306_I2C_Init()
初始化I2C接口
| 返回值 | 类型 |
|---|---|
| 无 | void |
ssd1306_I2C_Write(uint8_t address, uint8_t reg, uint8_t data)
向指定地址和寄存器写入数据
| 参数 | 类型 | 注释 |
|---|---|---|
| address | uint8_t | I2C设备地址 |
| reg | uint8_t | 寄存器地址 |
| data | uint8_t | 要写入的数据 |
| 返回值 | 类型 |
|---|---|
| 无 | void |
ssd1306_I2C_WriteMulti(uint8_t address, uint8_t reg, uint8_t *data, uint16_t count)
向指定地址和寄存器写入多个数据
| 参数 | 类型 | 注释 |
|---|---|---|
| address | uint8_t | I2C设备地址 |
| reg | uint8_t | 寄存器地址 |
| data | uint8_t* | 指向数据的指针 |
| count | uint16_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;
}