功率监测与控制系统DIY——实现OLED屏幕显示信息
1 任务目标
实现OLED 屏幕显示信息
2 OLED介绍
此款OLED是Seeed Studio 出品的Grove 接口的0.96英寸OLED 显示屏,驱动IC 为SSD1315.
OLEDDisplay 0.96” SSSD1315 V1.1分辨率为128×64。
供电为3.3 V 或者5 V,通信接口为I2C。
考虑到电流表INA219也是I2C通信接口,在STM32开发板上使用同一组I2C 硬件,OLED和INA219配置不同的器件地址,就可以一个I2C控制器驱动两个I2C器件。
此开发板有Arduino接口,恰好把Seeed Base Shield扩展板接上。
3 STM32 I2C配置
3.1 选用I2C1
Nucleo-F411RE管脚分配
3.2 STM32CubeMX工程配置
● 在Connecity 中选择I2C1
● 在右侧使能I2C
● 配置I2C 参数为Standard Mode,速率100 KHz,地址为7 比特,主要的从器件地址为0×78
3.3 PB8配置为SCL
3.4 PB9配置为SDA
4 PCtoLCD汉字取模软件
此次任务在OLED 上展示中文字符如下:
所有取模的文字:
PCtoLCD2002软件配置如下:
● 点阵格式:阴码
● 取模方式:列行式
● 取模走向:逆向(低位在前)
● 自定义格式:C51 格式,且行前缀、行后缀都为空。
在输入框输入文字后点击“生成字模”,拷贝到工程中即可。
5 流程图
6 关键代码
6.1 主函数
● HAL库初始化
● 时钟初始化
● 硬件初始化,如GPIO,TIM,UART,I2C 等
● OLED 初始化,清屏
● 显示界面,界面切换,死循环
6.2 I2C 初始化
这里的初始化代码是STM32CubeMX生成的,初始化参数来自界面配置的参数。
● 函数MX_I2C1_Init() 先保存I2C 参数到hi2c1 结构体上,调用HAL_I2C_Init() 初始化硬件
● 函数HAL_I2C_MspInit() 由HAL_I2C_Init() 函数调用,初始化I2C1 管脚,配置为复用功能
6.3 OLED接口函数
OLED接口层,主要实现两个函数,其他的OLED API都是依赖这两个函数
● Oled_Write_Data() 发送数据到OLED IC
● Oled_Write_Cmd() 发送命令到OLED I
6.3.1 Oled_Write_Data() 实现
这里直接调用HAL API 往OLED 发送数据
6.3.2 Oled_Write_Cmd()实现
这里直接调用HAL API往OLED发送命令
6.4 OLED API
这里仅列举几个常用的API 实现。
6.4.1 OLED_Init()初始化
OLED 上电后需要发送命令配置参数
6.4.2 OLED_Fill()刷屏
m表示page地址,数值0~7,n 表示列地址,数值0~127。
填充的数据fill_data,设置为0,则屏幕为黑色;设置为1,则屏幕白色;设置为其他值,屏幕显示条纹。
6.4.3 OLED_ShowStr()
这里支持两种字体大小,分别是6×8 和8×16 大小。
6.4.4 OLED_ShowCN()
这里只支持一种中文字体大小,16×16。
7 实操演示
显示中文欢迎界面
显示英文欢迎界面
显示功率检测界面,其中的电压、电流和功率数值是预设值,并非实际测量的。
(本文来源于《EEPW》202507)

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码