0.91寸OLED驱动

2022-02-11 11:21:04 浏览数 (1)

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);
  • 图片显示函数 图片开始、结束显示位置,图片显示指针地址。图片取模方式:阴码,逆向,列行式,十六进制
代码语言:javascript复制
	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的汉字。
代码语言:javascript复制
	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是保留小数点的位数
代码语言:javascript复制
	void OLED_ShowFloat(uint8_t x, uint8_t y, float num, uint8_t accuracy, uint8_t fontsize);
  • 显示整数,length是显示位数
代码语言:javascript复制
	void OLED_ShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t length, uint8_t fontsize);
  • 显示字符,字符串,fontsize可以是8或者16,分别显示6x8,8x16大小的ASCII字符
代码语言:javascript复制
	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);
  • 全部填充函数,使用该函数后屏幕全部亮起
代码语言:javascript复制
void OLED_Allfill(void);
  • 设置坐标,函数库文件内部使用
代码语言:javascript复制
void OLED_Set_Position(uint8_t x, uint8_t y);
  • 清屏,清除所有像素
代码语言:javascript复制
	void OLED_Clear(void);
  • OLED初始化,在使用以上函数前调用,该函数会将一些液晶控制字发送到驱动,使能显示器,必须首先调用
代码语言:javascript复制
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好像有问题

0 人点赞