有许多不同规格的OLED显示屏与Arduino兼容, 128x64是最常见的型号, 也很便宜, 淘宝上大概是12~14元一片.

OLED与Arduino的通信

首先, 使用I2C总线的设备, 都可以使用Wire这个library与其通信, 其设备地址可以从0x00至0xFF, 可以通过指定地址操作对应的设备.
其次, 在OLED显示屏中, 每个寄存器地址对应某个功能, 例如反转颜色, 或关闭显示, 寄存器地址的范围也是0x00到0xFF.
所以, 基本上你只需要3个参数就能让OLED显示屏执行某项命令, 方式如下:

Wire.beginTransmission(devAddr);
Wire.write(regAddr);
Wire.write(data);
Wire.endTransmission(); // stop transmitting

例如, 要关闭0x3C这个地址的设备的显示, 我们修改寄存器地址0x40的值为0xAE

Wire.beginTransmission(0x3C); // might be different for your display
Wire.write(0x80);
Wire.write(0xAE);
Wire.endTransmission(); // stop transmitting

我们需要了解的寄存器地址主要有两个: 一个是命令地址, 另一个是数据地址, 可以自行查阅datasheet

如何控制每个像素的显示

这个屏幕的像素矩阵的划分是比较特殊的, 整个屏幕水平方向划分为8个page, 垂直方向则是按像素划分为128 column. 每个page-column包含8个像素, 通过一个十六进制数(其实就是一个字节, 8个bit)来控制, 每个bit控制一个像素
 

如果我们要在左上角显示一个亮点, 需要发送0x01到数据地址, 例如

Wire.beginTransmission(0x3C); // might be different for your display
Wire.write(0x40);
Wire.write(0x01);
Wire.endTransmission(); // stop transmitting

如果需要改变下一column的显示, 你只需要继续给数据地址发送数据, 指针会自动走到下一个column. 如果已经到了最后一个column, 取决于当前的寻址模式, 如果是Page Addressing, 会返回到本page的第一个column, 如果是Horizontal Addressing, 会跳到下一个page的第一个column. 还有第三种寻址模式, Vertical addressing mode. 具体的地址增长方式如下

以上就是需要了解的OLED显示机制

翻译自: https://oscarliang.com/arduino-oled-display-library/

最新文章

  1. ArcGIS 10与ArcEngine 10安装及破解
  2. 移动端页面0.5px border的实现
  3. to_char 详解
  4. myeclipse6.5中使用Alt+/不自动提示的修改
  5. gomoblie flappy 源码分析:图片素材和大小的处理
  6. Android开发 侧边滑动菜单栏SlidingMenu结合Fragment
  7. 使用Notepad++将多行数据合并成一行
  8. JDK8新特性之接口
  9. Chrome DevTools学习笔记
  10. ASP.NET Core 源码学习之 Logging[2]:Configure
  11. 堆排序Java实现
  12. spring中一些aware接口
  13. 【Sql Server】SQL SERVER 递归查询
  14. Ocelot简易教程(七)之配置文件数据库存储插件源码解析
  15. oracle.sql.Clob类型转换成String类型
  16. [IOS微信] 查看微信原始数据(含沙盒中的数据)
  17. Swift打印Debug日志,实现Release下不打印
  18. iOS概念之KVO(Key-Value Observing)
  19. Visual Studio性能计数器,负载测试结果分析- Part III
  20. [转]asp.net权限认证:HTTP基本认证(http basic)

热门文章

  1. Jackson 教程演示样例
  2. ZooKeeper服务命令
  3. cesium原理篇(三)--地形(1)【转】
  4. JavaScript-手机中访问页面判断
  5. sql-获取指定年份指定月份的天数
  6. ES8新特性——ES8 was Released and here are its Main New Features
  7. 如何将.NET 4.0写的Windows service和Web API部署到docker上面
  8. OpenGL ES3 非常好的系列文章
  9. OpenGL ES3.0
  10. notepad++列块编辑操作