外观介绍
作为单片机常用显示设备oled具有体积小巧,方便移植,成本低等优点,特别是在需要显示一些参数字符时小oled往往 非常合适。
0.96寸oled支持串行(IIC或SPI)和8080并行通信,由于其本身像素点只有128*64串行通信也不会占用太多的传输时间切串行更方便硬件连接与移植,故我们接下来主要介绍串行方式.这是常见的七脚oled包含电源引脚 VCC地引脚GND以及串行时钟引脚和数据引脚,命令数据选择引脚 DC,片选引脚CS和复位引脚RST
模块显存
0.96寸oled内部集成了一个SSD1306的显存总共为128*64bit大小,SSD1306将这些显存分为了8页。每页包含了128个字节,总共8页,这样刚好是128*64的点阵大小。
我们在修改oled的显示内容时通常会先在单片机内部开辟一块128*64的缓存,将该缓存中的对应数据进行修改后,刷新一次屏幕(将单片机内部缓存的数据传输到oled的缓存空间并刷新显示)。
SSD1306的常用命令
命令0X81:设置对比度。包含两个字节,第一个0X81为命令,随后发送的一个字节为要设置的对比度的值。这个值设置得越大屏幕就越亮。
命令0XAE/0XAF:0XAE为关闭显示命令;0XAF为开启显示命令。
命令0X8D:包含2个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1,则开启电荷泵,为0则关闭。在模块初始化的时候,这个必须要开启,否则是看不到屏幕显示的。
命令0XB0~B7:用于设置页地址,其低三位的值对应着GRAM的页地址。
命令0X00~0X0F:用于设置显示时的起始列地址低四位。
命令0X10~0X1F:用于设置显示时的起始列地址高四位。
oled初始化过程
OLED刷新过程
移植 工作
对该驱动的移植主要就是对写命令/数据函数的修改
//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd);
其他最复杂的缓冲区数据的计算修改对于任意平台都适用