OLED
1. 简述
现在单色点阵的小显示模块的使用场影逐渐变少,但做为红极一时的显示应用还是有学习的意义。我们以正点原子的OLED模块为对象开展学习。
单色点阵的显示模块主要有5种接口方式:并行的有8080和6800,串行的主要是I2C和三线、四线的SPI。一般的驱动芯片均支持这些模式,但具体芯片可能有差别。
这里我们主要聊8080和四线的SPI,因为正点原子有相应的实例,易于理解,其实其他的思考方式也差不多。
先了解一下正点原子的OLED模块,它使用SSD1306驱动芯片。芯片内部GRAM组成为8页,每页126字节,对应128X64点阵,所以我们显示时只要在对应的点上写0或1来控制对应点是否点亮。
其有很多控制指令,一般应用下列指令就OK,如果有其他使用参见其手册。
第一个命令为0X81,用于设置对比度的,这个命令包含了两个字节,第一个 0X81 为命令,
随后发送的一个字节为要设置的对比度的值。这个值设置得越大屏幕就越亮。
第二个命令为0XAE/0XAF。0XAE 为关闭显示命令; 0XAF 为开启显示命令。
第三个命令为0X8D,该指令也包含2 个字节,第一个为命令字,第二个为设置值,第二
个字节的BIT2 表示电荷泵的开关状态,该位为 1,则开启电荷泵,为 0 则关闭。在模块初始化
的时候,这个必须要开启,否则是看不到屏幕显示的。
第五个指令为0X00~0X0F,该指令用于设置显示时的起始列地址低四位。
第六个指令为0X10~0X1F,该指令用于设置显示时的起始列地址高四位。
操作显示模块主要就是四种通信:写数据、写指令、读数据、读状态。而写数据和写指令仅在DC口的状态不同,其他时序都一样所以只用写一个WR_OLED_BYTE(dat,cmd)函数;同样读操作也可以只用RD_OLED_(dat,cmd)函数实现。
而且每次写入都是按字节写入的,这就存在一个问