转载博客:http://blog.youkuaiyun.com/abap_brave/article/details/53022540
一,OLED简介
OLED,即有机发光二极管,采用非常薄的有机材料图层和玻璃基板制成
当有电流通过时,有机材料会发光,OLED屏幕可视角度大,节省电能
优点:分辨率高,自发光,不需背光源,对比度高,厚度薄,视角广,反应速度快,温度范围广,制造及制程简单
缺点:价格贵,尺寸难以大型化(价钱随尺寸几何倍数增长)
用途:可穿戴智能设备显示,MP3显示灯
OLED分为两部分:原理,时序和操作 + OLED显示实验
二,ALINETEK 0.96寸OLED模块参数
1)双色:1/4黄色 + 3/4蓝色
2)尺寸:0.96存.模块尺寸:27mm*26mm
3)分辨率:128*64
4)支持接口方式4种(通信方式)
1:6800,8080并行接口
2:4线串行SPI
3:2线IIC
5)模块工作电压3.3V
三,OLED模块原理图
如图:
BS1和BS2与OLED的连接方式
BS1与BS2各有上中下三个引脚,LP与GND相连,HP与VCC相连
OLED的13-25引脚为外接引脚,对应开发板的排针组P1
OLED其他引脚暂不介绍,如图连接处理即可
四.OLED工作模式选择
通过模块BS1/BS2设置OLED工作模式,关系如下:
由OLED模块图片背部焊点可以看到,默认TP引脚与VCC焊接
即BS1=1,BS2=1,为8080并口通信方式
五,8080并口读写时序
并口写时序:
因为要写数据,由WR控制,所以RD设置为高电平
DC: 1,写数据 0 写命令
CS:要操作OLED前,先进行片选,拉低CS引脚,操作完成后拉高
WR:写数据,在WR的上升沿,使数据写入到SSD1306控制器内
并口读时序:
因为要读数据,由RD控制,所以WR设置为高电平
DC: 1,读数据 0 读命令
CS:要操作OLED前,先进行片选,拉低CS引脚,操作完成后拉高
RD:读数据,在RD的上升沿,使数据锁存到数据线D[7:0]上
总结:
无论读操作还是写操作:
DC=1 数据操作 , DC=0 命令操作
操作OLED前拉低片选CS引脚
都是在上升沿进行数据采集
写操作:
WR的上升沿,数据/命令写入SSD1306
读操作:
RD的上升沿,数据/命令锁存到数据线D[7:0]
六,OLED模块显存
SSD1306显存为128*64bit大小, SSD1306将全部显存分为8页,每页128字节
OLED相当于64行128列点阵,每个像素点,0点亮,1熄灭
OLED将纵向64行分为8页,每页8行
七,程序实现
采用每次全量更新的策略
基于OLED128*64bit的分布,程序内部建立一个缓存数组128*8字节
每次修改时,先修改缓存对应的值,修改完成后,一次性写入OLED的GRAM刷新显示
八,SSD1306命令
0:OLED设置对比度
发送两个字节
第一个字节为命令-0x81
第二个字节为设置对比度值,值越大屏幕越亮(0X00-0XFF)
1:关闭/开启OLED显示
发送一个命令字节,高七位固定,最低位X0=0关闭显示,X0=1开启显示
0xAE:关闭显示
0xAF:开启显示
2:关闭/开启电荷泵
发送两个字节
第一个字节为命令-0x8D
第二个字节为设置电荷泵开关
位0,1,4,5,6固定,位6位7随意,位2控制电荷泵开关
A2=0关闭电荷泵
A2=1开启电荷泵
注意:在模块初始化时,必须开启,否则看不到屏幕显示
3:0xB0-0xB7 设置页地址
发送一个字节,高5位固定
位0-位2 , X[2:0]共3位, 值范围0-7对应页0-7地址(共8页)
4:0x00-0x0F设置列地址起始低四位
高四位固定
低四位设置列地址起始低四位
5:0x10-0x1F设置列地址起始高四位
高四位固定
低四位设置列地址起始高四位
九,OLED初始化过程
1,SSD1306复位 - 硬复位RST(RES)引脚
2,驱动IC初始化-代码由OLED供应商提供
3,开启显示-设置显示命令
4,清0显示-点阵全灭复位显示
5,开始显示-将要显示的内容写入GRAM
实例驱动代码讲解:--参考原子程序
1)代码初始化:--一般芯片参考手册有
注意:
竖向显示取模方式:
显示字符串水平显示: