0.96寸OLED (SSD1306驱动芯片) 的屏幕滚动问题

有关 Continuous Vertical and Horizontal scrolling setup 的一些问题

就在上午, 我的一个同学调通了他的OLED, 他搞了个屏幕水平滚动, 我嘴贱地说了一句, 那你让他向斜上方滚动呗. 然后这就折磨了我们一下午…
注: 我们使用的是 0.96 寸四脚 I2C OLED屏, 某宝上买的, 最普通的那种
这是 SSD1306 的手册上告诉我们的指令 (0x29), 我们去国内外的论坛上查询, 去看 Arduino 上的OLED库, 给出的都是这个指令序列.
p1
但是! 当我们按照图示发送命令, OLED 屏根本就没有滚动!
在尝试了许久后, 我们发现在 E 数据后还需要在发送两帧数据 (比如 0x00, 0xFF) 才能使用 0x2F 开始滚动.
p2
我感觉这就像水平滚动命令一样, 再要最后增加两个 Dummy byte.
p3

虽然屏幕开始滚动了, 但我们不管怎么设置, 屏幕都只能垂直滚动, 而且更换了另一个 OLED 屏也不行. 这时候我们查阅了很多资料, 也看了别人的代码, 发现代码都是一样的, 这时候我怀疑就是我们使用的芯片不是 SSD1306. 最终, 我尝试更改了本应该是 Dummy byte 的 A 数据, 发现屏幕可以正常向斜上方滚动.
g1
除此之外, 我还发现, 在水平滚动的时候, 第一列在屏幕上的相对位置是固定的, 比如我一直在最左边一列写竖线, 如果屏幕不滚动, 就只会有一条线.
p4
但是当屏幕滚动起来之后, 就可以在屏幕上画出很多条线.
g2
但是在垂直方向上就不可以, 该在哪一行还是会在哪一行.

可能没有人像我一样为了使用一个指令研究了一下午, 但是我看关注到这点的人很少, 基本就是一套代码翻来倒去的用, 所以我写下了这篇记录, 希望对你有用. 如果你有更加深入的了解 (比如, 我还是不知道指令表里最底下的 Note 是什么含义), 请分享出来.

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值