功率監(jiān)測與控制系統(tǒng)DIY——實現(xiàn)OLED屏幕顯示信息
1 任務(wù)目標(biāo)
2 OLED介紹
此款OLED是Seeed Studio 出品的Grove 接口的0.96英寸OLED 顯示屏,驅(qū)動IC 為SSD1315.
OLEDDisplay 0.96” SSSD1315 V1.1分辨率為128×64。
供電為3.3 V 或者5 V,通信接口為I2C。
考慮到電流表INA219也是I2C通信接口,在STM32開發(fā)板上使用同一組I2C 硬件,OLED和INA219配置不同的器件地址,就可以一個I2C控制器驅(qū)動兩個I2C器件。
此開發(fā)板有Arduino接口,恰好把Seeed Base Shield擴(kuò)展板接上。
3 STM32 I2C配置
3.1 選用I2C1
Nucleo-F411RE管腳分配
3.2 STM32CubeMX工程配置
● 在Connecity 中選擇I2C1
● 在右側(cè)使能I2C
● 配置I2C 參數(shù)為Standard Mode,速率100 KHz,地址為7 比特,主要的從器件地址為0×78
3.3 PB8配置為SCL
3.4 PB9配置為SDA
4 PCtoLCD漢字取模軟件
此次任務(wù)在OLED 上展示中文字符如下:
所有取模的文字:
PCtoLCD2002軟件配置如下:
● 點陣格式:陰碼
● 取模方式:列行式
● 取模走向:逆向(低位在前)
● 自定義格式:C51 格式,且行前綴、行后綴都為空。
在輸入框輸入文字后點擊“生成字模”,拷貝到工程中即可。
5 流程圖
6 關(guān)鍵代碼
6.1 主函數(shù)
● HAL庫初始化
● 時鐘初始化
● 硬件初始化,如GPIO,TIM,UART,I2C 等
● OLED 初始化,清屏
● 顯示界面,界面切換,死循環(huán)
6.2 I2C 初始化
這里的初始化代碼是STM32CubeMX生成的,初始化參數(shù)來自界面配置的參數(shù)。
● 函數(shù)MX_I2C1_Init() 先保存I2C 參數(shù)到hi2c1 結(jié)構(gòu)體上,調(diào)用HAL_I2C_Init() 初始化硬件
● 函數(shù)HAL_I2C_MspInit() 由HAL_I2C_Init() 函數(shù)調(diào)用,初始化I2C1 管腳,配置為復(fù)用功能
6.3 OLED接口函數(shù)
OLED接口層,主要實現(xiàn)兩個函數(shù),其他的OLED API都是依賴這兩個函數(shù)
● Oled_Write_Data() 發(fā)送數(shù)據(jù)到OLED IC
● Oled_Write_Cmd() 發(fā)送命令到OLED I
6.3.1 Oled_Write_Data() 實現(xiàn)
這里直接調(diào)用HAL API 往OLED 發(fā)送數(shù)據(jù)
6.3.2 Oled_Write_Cmd()實現(xiàn)
這里直接調(diào)用HAL API往OLED發(fā)送命令
6.4 OLED API
這里僅列舉幾個常用的API 實現(xiàn)。
6.4.1 OLED_Init()初始化
OLED 上電后需要發(fā)送命令配置參數(shù)
6.4.2 OLED_Fill()刷屏
m表示page地址,數(shù)值0~7,n 表示列地址,數(shù)值0~127。
填充的數(shù)據(jù)fill_data,設(shè)置為0,則屏幕為黑色;設(shè)置為1,則屏幕白色;設(shè)置為其他值,屏幕顯示條紋。
6.4.3 OLED_ShowStr()
這里支持兩種字體大小,分別是6×8 和8×16 大小。
6.4.4 OLED_ShowCN()
這里只支持一種中文字體大小,16×16。
7 實操演示
顯示中文歡迎界面
顯示英文歡迎界面
顯示功率檢測界面,其中的電壓、電流和功率數(shù)值是預(yù)設(shè)值,并非實際測量的。
(本文來源于《EEPW》202507)
評論