屏幕参数:
尺寸:0.96寸
分辨率:128*64
通信方式:I2C
模块内部驱动芯片:SSD1315
管脚定义:GND、VCC、SCK、SDA
SSD1315 MCU 接口包含 8 个数据引脚和 5 个控制引脚。 下表总结了不同接口模式下的引脚分配。 可以通过BS [2:0]引脚上的硬件选择来设置不同的MCU模式。
I2C对应的BS [2:0]=010。
I2C 通信接口
- 从机地址位 SA0
- I2C 总线数据信号 SDA(用于输出的 SDAOUT / D2 和用于输入的 SDAIN / D1)
- I2C 总线时钟信号SCL组成。
RES用于设备初始化。
1. 从机地址位 SA0
"SA0"为从机地址扩展位,SS1315可以选择“ 0111100”或“ 0111101”作为从地址。D / C#引脚用作从机地址选择的 SA0。
“ R / W#”位用于确定 I2C 总线接口的操作模式。 R / W#= 1,读模式。 R / W#= 0,写模式。
2. I2C 总线数据信号 SDA
3. I2C 总线时钟信号 SCL
初始化
OLED的分辨率为12864可以看做由12864个LED组成,每行有128个LED共64行,控制LED的显示内容其实就是控制第几行第几列的LED是亮还是灭。一定会有“一段空间”来控制LED是亮还是灭,我们将LED人为的拆成两部分:
- 128*64个LED构成的画面
- 128*64的表格
表格里的数填1代表LED亮,0代表LED灭。
无论想要在OLED上显示字符、汉字还是图像,它们本质上都是由点阵组成的,那就可以通过点阵的亮暗来显示任何内容。
从左到右:
S:START
Slave Address:b7_b0中的写模式:0111100(0x78)
ACK:回复一个应答信号
control bite:(CO为0代表后面发送的是数据,D/C取0代表后面发送的是命令,取1表示后面发送的是数据。我们这里要写命令∴后面发送的CO=0,DC=0)
写命令:0 0 000000
写数据:0 1 000000
ACK:回复一个应答信号
data_byte_cmd:发送命令具体是什么
ACK:回复一个应答信号
STOP:停止信号
PAGE0-PAGE8:8bit*8page=64bit
col0-col127:128bit
一个page刚好对于一个字节,第D0位数据写入最上面一行,第D7位数据写入最下面一行。举例:ox08→bit7-bit0:0000_1000对应在屏幕上的大致分区:
如果接下去再写一个0x08是填到PAGE1_col0上,还是填到PAGE0_col1上呢?这个由SSD1315的寻址模式决定。SSD1315有3种寻址模式:水平寻址、垂直寻址、页寻址
(这里选用页寻址模式)
水平寻址:
垂直寻址:
页寻址:
在页寻址模式,在RAM进行读写后会自动移向下一个COL,用户必须设置新PAGE和COL地址才能访问下一个PAGE的内容。移动方向如图所示。先确定PAGE,再确定COL,最后写入数据。
(写命令下:)
设置寻址模式:
设置初始PAGE:
设置初始COL:(起始地址低四位和高四位)
(写数据下:)
在确定要写入的行列以后,按照要显示的图样控制oled亮灭,0X00全亮 0xff全灭。