前言
先上效果图
这类屏幕大部分是由SSD1306来驱动的,datasheet在这:SSD1306Z
英语好的直接看这个PDF就明白了,英语不好的…还不赶紧好好学习一下,下面也是挑手册内容讲一讲,图也是手册里面截的
关于IIC总线,就不啰嗦了。
正文
从机地址
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
---|---|---|---|---|---|---|---|
0 | 1 | 1 | 1 | 1 | 0 | SA0 | R/W_ |
SA0用来扩展从机地址,一般硬件设置为0。
b0指明读写操作的,一般写的比较多,这一位是0。
所以地址为0x78
屏幕像素与GDDRAM (Graphic Display Data RAM)
屏幕有128列(Column ),64行(Row),共128*64像素点,每8行为1页(PAGE),共有8页。
用PAGE2举个例子,每列都用一个字节存储,一页PAGE就需要128个bytes,注意高位在下。
总的来看就是这样,总共需要128*8个bytes。
重映射之后,相当于左右翻转(列重映射)和上下翻转(行重映射)。
IIC总线数据帧格式
- 发送命令
0x78表示从设备地址,0x00表示写命令,0xXX表示若干条命令。
0x78, 0x00, 0xXX, 0xXX, 0xXX, 0xXX(若干指令)
- 发送数据
0x78表示从设备地址,0x40表示写数据到DDRAM里面,一般来说是128个。
0x78, 0x40, 0xXX (128bytes的数据)
至于读操作基本不会用到,不再赘述,有兴趣自己尝试。
指令介绍
这个写的很详细,建议看看
https://wlink.blog.csdn.net/article/details/81329770
这个指令翻译的比较全
https://wenku.baidu.com/view/e8307ca72f60ddccda38a0e0.html
Set Lower Column Start Address for Page Addressing Mode (00h~0Fh)
在地址模式为Page Addressing,列开始位置的低四位(0h~Fh)
Set Higher Column Start Address for Page Addressing Mode (10h~1Fh)
在地址模式为Page Addressing,列开始位置的高四位(0h~Fh)
Set Memory Addressing Mode (20h)
设置内存地址模式,这是一个两个字节的命令,第二个字节的低两位确定了模式
00:
01:
10:
11:无效
Set Column Address (21h)
设置列地址,三字节命令,二三字节分别为列开始和结束位置,用于模式00,01。
Set Page Address (22h)
设置页地址,三字节命令,二三字节分别为页开始和结束位置,用于模式00,01。
这两个相当于设置了矩形显示的边界。
Set Display Start Line (40h~7Fh)
设置显示开始列
Set Contrast Control for BANK0 (81h)
双字节命令,设置对比度00h~FFh
Set Segment Re-map (A0h/A1h)
Segment重映射,也就是列重映射(相当于左右翻转)
Entire Display ON (A4h/A5h)
全屏点亮(A5h),显示内容随着DDRAM刷新(A4h)。
Set Normal/Inverse Display (A6h/A7h)
反色显示
Set Multiplex Ratio (A8h)
设置复用率
Set Display ON/OFF (AEh/AFh)
显示开关
Set Page Start Address for Page Addressing Mode (B0h~B7h)
Page Addressing模式下,Page的地址(0h~Fh)
Set COM Output Scan Direction (C0h/C8h)
COM显示输出方向,也就是行重映射(相当于上下翻转)
Set Display Offset (D3h)
双字节命令,显示偏移
Set Display Clock Divide Ratio/ Oscillator Frequency (D5h)
设置显示时钟分频值/震荡频率,双字节命令
Set Pre-charge Period (D9h)
设置预充电周期
Set COM Pins Hardware Configuration (DAh)
设置硬件PIN的连接方式
Set VCOMH Deselect Level (DBh)
设置Vcomh
NOP (E3h)
空指令
Horizontal Scroll Setup (26h/27h)
水平滚动设置
Continuous Vertical and Horizontal Scroll Setup (29h/2Ah)
垂直和水平滚动配置
Deactivate Scroll (2Eh)
禁用滚动
Activate Scroll (2Fh)
启用滚动
Set Vertical Scroll Area(A3h)
设置垂直滚动区域
命令详细格式看手册吧,不在翻译了。
驱动代码
使用的是STM32CubeMX 6.0.1和MDK5.32,工程如下
链接:https://pan.baidu.com/s/1LxD3pvg99jUowFiwYym3pw
提取码:zq08