接线如下:

IIC协议:IIC全称Inter-Integrated Circuit (集成电路总线)

由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双工同步通信方式。

 特点:

·简单性和有效性。

由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件

·多主控(multimastering)

其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

构成

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

传输数据:

IIC总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。

时序图如下:

发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线(sda = 1),由接收器反馈一个应答信号。

①应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;

②应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

IIC数据发送时序:

OLED写入命令或数据 

OLED初始化:向OLDE写入下面指令

display off (0xae)

set low column address (0x00)

set high column address (0x10)

set start line address (0x40)

set page address (0xb0)

contract control (0x81)

send 0xff (多字节指令)

set segment remap (0xa1)

set normal/reverse (0xa6)

set multiplex ratio (1 to 64) (0xa8 )

set duty 1/32 (0x3f)

com scan direction (0xc8)

set display offset (0xd3)

send 0x00

set osc division (0xd5)

send 0x80

set area color mode off (0xd8)

send 0x05

set pre-charge period (0xd9)

send 0xf1

set com pin configuration (0xda)

send 0x12

set Vcomh (0xdb)

send 0x30

set charge pump enable (0x8d)

send 0x14

turn on oled panel(0xaf)

OLED屏行列分布:

OLED显示屏是一个128列*64行的点阵,垂直方向由8个PAGE控制,每个PAGE控制8个点阵。

选择PAGE时,向OLED写入指令0xBx(b1011 0xxx); 

列寻址:

由两个bit控制128列点阵

在头部显示:向OLED写入指令0x00

            向OLED写入指令0x10

在尾部显示:向OLED写入指令0x0F

            向OLED写入指令0x17

数据:(显示一个点)

 OLED的三种地址模式:

OLED清屏函数,解决雪花屏问题:

 附上源码和效果图