Bootstrap

关于OLED的I2C手册记录

首先我们从淘宝上面找到对应OLED 4pin iic驱动的ssd1306手册,它有多种的驱动方式,我们只需要看看他这个i2c模式。

我们可以从中看到 Slave address   R/W后面的#代表低电平是W。 SA0是它的一个 slave address bit 可以使用  这两个都可以作为OLED的 设备地址 我们可以通过这个东西 来呼叫OLED 一般我们使用的是 0X78 (0111 1000) 写(  0X79(0111 1001)读 )根据上面的描述 我们可以把 0X78-> 0X7A(0111 1000) 写.

      现在我们知道了 设备的呼叫地址是什么,现在我们需要找一些关于 oled_iic的一些协议。

我们可以从上面的图中看到,我们需要先发送 iic开始,下来就是 发送一帧数据

如果我们要写则发送0X78,然后发送一阵4控制数据-> 这帧数据是为了判断你是写数据还是写命令。

我们可以看到 如果是写命令 则发送 0x00,如果是写数据发送 0x40.

如果我们发送的一帧数据是data的话,那么它将会被写到oled的ram中 如果它是cmd的话,它会被写入 寄存器中。

从上图可知,我们可以通过 命令 0XD5 来改变 DCLK 实现低功耗 或者 提高帧数。

通过命令0xA8来调节多路复用率

 

从上图可知,我们的显示器像素点为128*64个 通过控制这些位来实现点亮oled,每一个page有8个bit从上到下数。​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

从上图可知,我们可以通过命令OX81来调节对比度,默认的对比度是8,调节范围在0-255.同时调节对比的时候,会影响到电流大小。

POWER ON AND OFF SEQUENCE 上电和下电的顺序

可知我们上电只需要在通电的时候等待3us或者不等待,直接发送显示命令 0XAF在之后的100ms,oled才能够正常显示 字符

关闭显示我们只需要发送命令 0XAE.

下列的内容就是ssd1306手册中得COMMAND TABLE 命令表

0X81设置对比度控制  0x7F(初始) 设置对比度值的数据1-256

双字节命令需要连续发 。

0xA4 0XA5 开启全屏显示,A4是输出RAM内容  A5输出 忽略RAM内容

0XA6 0XA7 设置正常显示还是反转显示 6是正常 7是反转

0xAE AF    设置显示的开关  AE是关闭(sleep mode)  AF是开启

硬件配置 Hardware Configuration(panel resolution & layout related) command table

0X40-7F 设置显示起始行 

0xA0/A1 设置seg的映射地址 A0是将0列地址对应到SEG0 A1是将127列地址对应到SEG0

0XA8  0X[5:0](只有五个位来设置mux ratio) 设置多路复用比率

0XC0/C8 设置COM输出的扫描方向 0是从com0->com[n-1] 1是从COM[n-1] -> com0

0XD3 0x[5:0] 设置显示的偏移 设置垂直偏移 从COM0-COM63

0XDA 0x[5:4] ( 0 0 (a5) (a4) 0 0 1 0) 

 a4=0 顺序com配置  1 替代com配置 

 a5=0 关闭Com的左右映射 1开启

时钟和驱动方法设定 TIming &driving scheme setting command table

0XD5 0XA[7:0]  设置显示时钟分频或者震荡频率 

 A[3:0] 是设置分频 D=A[3:0] +1

A[7:4] 是设置震荡频率 值越大频率越高

0xD9 0xA[7:0] 设置预充电周期  

A[3:0] 设置第一个周期 最多15个DCLK 时钟无效时进入

A[7:4] 设置第二个周期 最多15个DCLK 时钟无效时进入

读取指令表

可以用这个来读第七个位来判断是否开启显示

滚动命令表格 scolling command table

地址设置命令 Addressing setting command table

没有写入的指令需要大家去手册里面看。

下次博客更新的是手册中的 命令说明章节,

;