发布时间:2023-08-07 13:30
四针OLED
如图
STM32F407VE核心板
ST-Link
STM32Cubemx 版本 6.0.1
Keil 版本 5.31
0.96 寸 OLED 有黄蓝,白,蓝三种颜色可选;其中黄蓝是屏上 1/4 部分为黄光,下 3/4 为蓝;而且是固定区域显示固定颜色,颜色和显示区域均不能修改;白光则为纯白,也就是黑底白字;蓝色则为纯蓝,也就是黑底蓝字。四针OLED仅支持IIC通信,七针OLED可支持SPI通信和IIC通信。
IIC:两线式串行总线,它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbs以上。
IIC通信仅需要两条线:
时钟线SCL:在通信过程起到控制作用。
数据线SDA:用来一位一位的传送数据。
IIC分为软件IIC和硬件IIC
软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。
硬件IIC:一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器。
IIC是半双工通信方式,硬件IIC效率要远高于软件IIC。我们本教程使用硬件IIC通信。
比如我使用的是STM32F407VE,那么我就修改为stm32f4xx_hal.h,并且我开启的IIC管脚是PB6和PB7那么我就修改为这两个管脚。
(1)首先引入库
/* USER CODE BEGIN Includes */
#include "oled.h"
/* USER CODE END Includes */
(2)初始化
/* USER CODE BEGIN 2 */
OLED_Init();
OLED_Clear();
/* USER CODE END 2 */
(3)显示一个数字试试
/* USER CODE BEGIN 3 */
OLED_ShowNum(0,0,20,2,16);
}
/* USER CODE END 3 */
(4)将生成数组存入Keil内
打开oledfont.h文件,将内容复制进入Hzk[][32]数组内,如下
(5)主函数打印出汉字
/* USER CODE BEGIN 3 */
OLED_ShowNum(0,0,20,2,16);
OLED_ShowCHinese(0,2,0); //打印平
OLED_ShowCHinese(16,2,1);//打印陆
OLED_ShowCHinese(32,2,2);//打印成
OLED_ShowCHinese(48,2,3);//打印江
OLED_ShowCHinese(64,2,4);//打印,
//此OLED为128*64,x取值为0-128,y取值为0,1,2,3,4,5,6,7一共分八页,一个汉字需要16*16的位置,
//即x需要加16,y需要加2才能不重叠,一个尺寸为16的数字占的位置为8*16
}
/* USER CODE END 3 */
若需显示其他汉字,需要从取模软件内得到数组存入程序才可。
效果如图
链接:https://pan.baidu.com/s/150M1XtDEUoWVOzNvKhwrYQ
提取码:bst4