128×32 0.91寸OLED驱动,基于STM32 HAL库
github链接
硬件参数
驱动:SSD1306 接口:I2C 分辨率:128×32 尺寸:0.91寸
数据手册
0.91寸OLED开发手册 提取码:12f1
SSD1306 Datasheet
How to use
使用STM32CubeMX生成工程 打开i2c
将oled.c添加到Src文件夹 将oledfont.h,oledpic.h添加到Inc文件夹
将以上文件添加到工程中
主函数编写顺序
main.c中要添加
#include "oledpic.h"
(如果你使用OLED_ShowPic
函数来显示图片)oledfont.h已经包含在oled.c中所以不用再引用
初始化I2C MX_I2C2_Init();
初始化OLED屏幕 OLED_Init();
接下来就可以调用OLED显示函数了。
函数使用说明
- OLED写命令,写数据函数,如果想移植到其他开发板上可以更改这个两个函数的内容
例如:我使用了i2c2接口,那么你只需要将&hi2c1改成&hi2c2就可以了。
代码语言:javascript复制 void OLED_Write_cmd(uint8_t cmd);
void OLED_Write_data(uint8_t data);
- 图片显示函数 图片开始、结束显示位置,图片显示指针地址。图片取模方式:阴码,逆向,列行式,十六进制
void OLED_ShowPic(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t BMP[]);
- 16x16汉字显示,no是该汉字在oledfont.h文件中Hzk[]数组中的序号。OLED_ShowHzbig是显示32x32的汉字。
void OLED_ShowHanzi(uint8_t x, uint8_t y, uint8_t no);
void OLED_ShowHzbig(uint8_t x, uint8_t y, uint8_t n);
- 显示浮点数,accuracy是保留小数点的位数
void OLED_ShowFloat(uint8_t x, uint8_t y, float num, uint8_t accuracy, uint8_t fontsize);
- 显示整数,length是显示位数
void OLED_ShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t length, uint8_t fontsize);
- 显示字符,字符串,fontsize可以是8或者16,分别显示6x8,8x16大小的ASCII字符
void OLED_ShowStr(uint8_t x, uint8_t y, char *ch, uint8_t fontsize);
void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t ch, uint8_t fontsize);
- 全部填充函数,使用该函数后屏幕全部亮起
void OLED_Allfill(void);
- 设置坐标,函数库文件内部使用
void OLED_Set_Position(uint8_t x, uint8_t y);
- 清屏,清除所有像素
void OLED_Clear(void);
- OLED初始化,在使用以上函数前调用,该函数会将一些液晶控制字发送到驱动,使能显示器,必须首先调用
void OLED_Init(void);
示例
使用STM32F334R8 HAL库 ARM-MDK
使用硬件I2C1,SDA接PB7,SCL接PA15
具体配置可以看example-F334R8-0.91OLED.ioc
文件(使用STM32CubeMX打开)
example-F334R8-0.91OLED
使用STM32F103R8T6 HAL库 ARM-MDK
使用硬件I2C2,SCL->PB10 SDA->PB11 (我的I2C1好像有问题