✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇
一、引言
OLED(Organic Light - Emitting Diode)显示屏因其自发光、高对比度、视角广、响应速度快等优点,在各类嵌入式系统中得到了广泛应用。0.96寸的OLED显示屏通常采用IIC(Inter - Integrated Circuit)协议进行通信,它体积小巧、功耗低,非常适合与STM32微控制器搭配使用,实现信息的显示功能。本文将详细介绍基于STM32使用IIC协议驱动0.96寸OLED显示屏的相关知识,包括OLED显示屏的工作原理、硬件连接、软件编程等内容,并给出相应的代码示例。
二、OLED显示屏工作原理
2.1 OLED发光原理
OLED是基于有机材料的电致发光现象,当在有机材料两端施加电压时,电子和空穴分别从阴极和阳极注入到有机材料中,它们在有机材料中复合并释放出能量,以光的形式表现出来。这种自发光的特性使得OLED显示屏无需背光源,从而具有更高的对比度和更薄的厚度。
2.2 IIC通信协议
IIC协议是一种串行通信协议,使用两根线(SCL时钟线和SDA数据线)进行数据传输。在IIC通信中,主设备(如STM32)通过SCL线提供时钟信号,通过SDA线发送和接收数据。通信过程包括起始信号、地址帧、数据帧和停止信号等部分。
三、硬件连接
3.1 引脚定义
0.96寸IIC接口的OLED显示屏通常有4个引脚,分别为:
- VCC:电源正极,一般接3.3V。
- GND:电源负极,接地。
- SCL:IIC时钟线,连接到STM32的IIC时钟引脚。
- SDA:IIC数据线,连接到STM32的IIC数据引脚。
3.2 STM32与OLED连接示例
以STM32F103C8T6为例,将OLED的SCL连接到PB6,SDA连接到PB7,VCC接3.3V,GND接地。
四、软件编程
4.1 IIC通信初始化
使用STM32 HAL库初始化IIC接口,以下是初始化代码示例:
#include "stm32f1xx_hal.h"
I2C_HandleTypeDef hi2c1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
while (1)
{
// 主循环
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {
0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {
0};
RCC_OscInitStruct.OscillatorTyp