前言

先上效果图
在这里插入图片描述
在这里插入图片描述

这类屏幕大部分是由SSD1306来驱动的,datasheet在这:SSD1306Z

英语好的直接看这个PDF就明白了,英语不好的…还不赶紧好好学习一下,下面也是挑手册内容讲一讲,图也是手册里面截的

关于IIC总线,就不啰嗦了。

正文

从机地址

b7b6b5b4b3b2b1b0
011110SA0R/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,注意高位在下。
1

总的来看就是这样,总共需要128*8个bytes。
2
重映射之后,相当于左右翻转(列重映射)和上下翻转(行重映射)。

IIC总线数据帧格式

3

  • 发送命令
    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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐