0.96寸IIC单色屏
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-23284685151.19.1ffe61919S9gQy&id=40809409804
资料下载链接:
https://pan.baidu.com/s/1xy2zH8-hs-S8-_AcVtBP_g
资料提取码:0jhj
规格参数
工作电压:3.3V
工作电流:9MA
模块尺寸:27.3 x 27.8 MM
像素大小:128(H) x 64(V)RGB
驱动芯片:SSD1306
通信协议:IIC
管脚数量:4 Pin(2.54mm间距排针)
原理解析
IIC总线只需要两条数据线,分别是串行数据线(SDA)和串行时钟线(SCL),这使得它成为一种非常简单的接口。
在IIC协议中,总线上有一个主设备和多个从设备。主设备掌控着总线上的通信过程,负责发起、控制、停止通信。而从设备则需要等待主设备的请求,接收或发送数据。主设备和从设备之间的数据交换采用帧格式,每个帧通常包含地址、数据和控制信息。主设备根据从设备的地址来选中要通信的设备,从设备则根据控制信息进行相应的操作。
而本模块是使用IIC通讯,一般只需要进行数据的发送和ACK相应的接收。
I2C通信流程按照以下步骤进行:
- 主控向总线发送开始信号。
- 主控将要通信的设备地址和读写位(R/W)发送到总线上。
- 设备接收到地址后发送应答信号,主控接收到应答信号后发送数据或继续发送地址。
- 设备接收到数据后发送应答信号,主控接收到应答信号后可以继续发送数据或者停止通信。
- 主控向总线发送停止信号。
WARNING
📌 注意:在立创开发板ESP32-S3中只要是开发板引出的GPIO引脚都可以作为IIC硬件引脚。
在芯片控制规格手册中我们可以了解到 IIC总线数据帧格式
模块的地址是 0x78
屏幕有128列(Column ),64行(Row),共128*64像素点,每8行为1页,共有8页。
用第二页举个例子,每列都用一个字节存储,一页就需要128个bytes,注意高位在下。
移植过程
我们的目标是将例程移植至ESP32-S3开发板上。已经为大家提供了完整的驱动代码,按照以下步骤,即可完成移植。
软件IIC移植
该屏幕需要设置4个接口,具体接口说明见 表1.4.1-1 各引脚说明。
模块为IIC通信协议的从机,SCL为IIC信号线,SDA为IIC数据线。
这里选择的引脚见表1.4.1-2 软件IIC接线
为大家准备的【OLED】文件夹,复制到自己工程中的main文件夹中。
软件IIC_OLED驱动代码(已适配):
打开自己的工程,将我们刚刚复制过来的文件导入.c和.h文件路径。
- 在VSCode中打开main文件夹下的CMakeLists.txt文件
- 添加这两个路径
到这里软件IIC就移植完成了,请移步到 1.5 进行移植验证。
硬件IIC移植
该屏幕需要设置4个接口,具体接口说明见 表1.4.2-1 各引脚说明。
模块为IIC通信协议的从机,SCL为IIC信号线,SDA为IIC数据线。
这里选择的引脚见表1.4.2-1 硬件IIC接线
为大家准备的【OLED】文件夹,复制到自己工程中的main文件夹中。
硬件IIC驱动代码:
打开自己的工程,将我们刚刚复制过来的文件导入.c和.h文件路径。
- 在VSCode中打开CMakeLists.txt文件
- 添加这两个路径
到这里硬件IIC就移植完成了,请移步到 最后一节 进行移植验证。
移植验证
在main.c中输入代码如下
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "oled.h"
#include "esp_timer.h"
void app_main(void)
{
OLED_Init(); //初始化OLED
OLED_Clear();
while(1)
{
OLED_ShowString(0,0,(unsigned char*)"ABC",8,1);//6*8 “ABC”
OLED_ShowString(0,8,(unsigned char *)"ABC",12,1);//6*12 “ABC”
OLED_ShowString(0,20,(unsigned char *)"ABC",16,1);//8*16 “ABC”
OLED_ShowString(0,36,(unsigned char *)"ABC",24,1);//12*24 “ABC”
OLED_ShowChinese(54,0,3,16,1);//电
OLED_ShowChinese(72,0,4,16,1);//子
OLED_ShowChinese(90,0,5,16,1);//技
OLED_ShowChinese(108,0,6,16,1);//术
OLED_Refresh();
delay_ms(500);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
上电效果: