I2C 12864OLED的工作机制
有许多不同规格的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/
I2C 12864OLED的工作机制的更多相关文章
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- bq27441-G1 工作机制
/*************************************************************************** * bq27441-G1 工作机制 * 声明: ...
- Java IO工作机制分析
Java的IO类都在java.io包下,这些类大致可分为以下4种: 基于字节操作的 I/O 接口:InputStream 和 OutputStream 基于字符操作的 I/O 接口:Writer 和 ...
- malloc 函数工作机制(转)
malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表.调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块.然后,将 ...
- springMVC工作机制和框架搭建配置说明
先说一下springMVC的工作机制 1.springmvc把 所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作. 2.Dispatcher ...
- CKPT进程工作机制
CKPT进程工作示意图 2.CKPT进程工作机制 检查点进程被触发的条件为: a> 当发生日志组切换时: b> 用户提交了事务时(commit): c> Redo log buf ...
- 15 sql base line 工作机制
<个人Configuration> 正常配置一下, 就OK了, 不用理了, oracle 11g 默认启动 发展: .从Oracle的发展角度来看,估计这种方法是Oracle发展和改进的方 ...
- HBase读写路径的工作机制
出处:http://wuyudong.com/1946.html HBase 写路径工作机制 在HBase 中无论是增加新行还是修改已有的行,其内部流程都是相同的.HBase 接到命令后存下变化信息, ...
- PHP自动加载__autoload的工作机制
PHP自动加载__autoload的工作机制 PHP的懒加载lazy loading 在 2011年11月12日 那天写的 已经有 4559 次阅读了 感谢 参考或原文 服务器君一共花费了 ...
随机推荐
- 第四章 logstash - type与tags属性
参考:http://kibana.logstash.es/content/logstash/plugins/input/stdin.html 最常用法: input { stdin { tags =& ...
- [leetcode]Multiply Strings @ Python
原题地址:https://oj.leetcode.com/problems/multiply-strings/ 题意: Given two numbers represented as strings ...
- 网页重构应该避免的10大 CSS 糟糕用法
对于网页重构来说,CSS禅意花园 是网页布局从 table 表格转到了 html +css 的标志 .这些年来,随着我们的网站越来越复杂:html5,css3,新的技术.新的属性,越来越多的开发者开始 ...
- 超级简单!80行代码实现Google日历(拖放、移动、AJAX)
行代码实现Google日历 Introduction 本实例介绍使用DayPilot Lite for ASP.NET MVC library 类来实现类google日历效果. 在线实例 天视图 星 ...
- android 巧用动画使您app风骚起来
巧用Android的自定义动画,使你更加的有动感,是大多数Android开发人员的目标,那怎么做到这点.请听下文分解: 3.0以前,android支持两种动画模式,tween animation(幅间 ...
- 第一个手写Win32窗口程序
第一个手写Win32窗口程序 一 Windows编程基础 1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使用DOS窗口 的方式显示. 1.2 Win32窗口 ...
- Java-JUC(五):闭锁(CountDownLatch)
闭锁(CountDownLatch) jdk5.0在java.util.concurrent包中提供了CountDownLatch,它是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一 ...
- 前后端协调处理checkbox
需求:页面属于一个弹出窗体,查询结果,用checkbox展示,选择后,把选中的结果传递给调用页面. 由于要取得后端写的checkbox控件的值,所以在后端处理最后的提交事件,用这个语句把结果传递到页面 ...
- [Spring Boot] @Component, @AutoWired and @Primary
Spring boot is really good for Dependencies injection by using Autowiring. Each class instancse in s ...
- NSProxy
NSProxy类在分布式对象架构中是很重要的.由于作用比较特别,NSProxy在Cocoa程序中出现频率很低. NSProxy 是一个抽象类,它为一些表现的像是其它对象替身或者并不存在的对象定义一套A ...