http://ardui.co/archives/738

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。上一课介绍了I2C 协议连接1602 LCD。现在我们将屏幕升级到更强大的12864 OLED(也称“1306”),让交互界面更加丰富。有任何疑问请在评论区提出,我会逐一回答。

1602 LCD 限制很多,只能显示字符不能绘图,而且每个字符的像素是分隔的,一般用在简单的交互设备上,比如显示电压、温度等。而 12864 OLED,则是一块功能完整屏幕,想象一下早期的诺基亚手机,利用这块屏幕还可以设计一些像贪吃蛇等简单游戏。

首先,12864 OLED 屏幕有 I2C 和 SPI 两种通信协议的模组,由于协议不同,所以完全不兼容。这次使用的是 I2C 协议的模组,SPI 协议后面会介绍。不过,可以提前剧透一下,I2C 和 SPI 性能和扩展性有很大差异,在产品设计开发过程中,选用哪一种将是一场艰难的选择。

回到正题,与 1602 LCD 的命名不同(“16”代表16个字符,“2”代表2行),12863 的含义是 128 X 64 个像素,这些像素都是连续的,可以构成不同的字符或者图形。OLED 意味着面板的显示方式是 发光二极管。但 12864 也是一款单色的屏幕,所以每个像素就是一个二极管,而不是彩色的 3~4 个(一些OLED 屏幕会在 RGB 之外增加 W 白色二极管,从而提升对比度和亮度)。

一般屏幕是横向使用的,128 个像素横向排列在 X 轴上,分别以 0~127 来代表,64个像素垂直排列在 Y 轴上,分别以 0~63 来代表。

按照 I2C 方式接线即可:
SCL 接到 A5
SDA 接到 A4
VCC、GND 分别接 VCC 和 GND

驱动这块屏幕要用到 U8g2 库,可以直接从 IDE 的库管理器中下载。这个库功能非常强大,除了能驱动 12864 外,还能驱动市面上大部分常用的LCD/OLED。而且能方便地调节字体的大小、间距,还可以显示比较复杂的动态图形。

安装好后,打开示例程序,找到 “U8g2 -> full_buffer ->  HelloWorld” :

让人崩溃的注释,但只要找到对应的模块:U8G2_SSD1306_128X64_NONAME_F_SW_I2C,对于 Arduino UNO 选择标注有 SCL、SDA 即可(第21行),把注释去掉,其他注释内容就能删除掉。现在,上传程序到 Arduino 就可以工作了:

但我们并不满足静态的文字,现在要让文字动起来,让Hello World 自上而下循环滚动,此时就要用到坐标系:

按照 I2C 方式接线即可:

不用对接
SCL 接到 A5
SDA 接到 A4
VCC、GND 分别接 VCC 和 GND

贴出了一个寻找设备地址的代码

https://blog.csdn.net/ling3ye/article/details/51542424

https://blog.csdn.net/ling3ye/article/details/53399305

相关开源代码:
程序与库与软件打包下载:https://u16460183.ctfile.com/fs/16460183-296052219

文件夹说明:

Adafruit_SSD1306-master   ——SSD1306库(OLED的主要库文件,库请复制在Arduino的库目录下)

Adafruit-GFX-Library-master  —— GFX库(是一种图形库)

字模提取V2.2   —— 可以生成中文字点阵变量的软件

LS_PrintChinese —— 主程序

可能有人好奇这些乱七八糟的怎么来的?↓

这其实就用到  字模提取V2.2  的软件了,

分享地址:http://pan.baidu.com/s/1i50UmxB

打开软件,具体操作如下:

把点阵生成的数组,套入程序的相关变量,调用相关的函数就可以实现显示中文。

其实取模软件,就是把中文字转换成点阵,实现在没有中文字库程序中显示中文。

我想有字库的也是这样的点阵库,如有理解错误请指出。

I2C 连接 12864 OLED 屏幕的更多相关文章

  1. OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

    少废话,先上效果图 屏幕显示效果         全家福 一.基础认识及引脚介绍 屏幕参数: 尺寸:0.96英寸 分辨率:128*64 驱动芯片:SSD1306 驱动接口协议:SPI 引脚说明: 二. ...

  2. TPYBoard v202开发板通过I2C协议驱动oled

    最近无聊的时候研究了一下TPYBoard v202开发板,发现网上TPYBoard开发驱动oled的这块资料比较少,本人测试成功后给大家分享一下经验 下面通过代码讲解一下 1.首先需要导包, 在网上下 ...

  3. [转帖]中关村:LED屏幕和OLED屏幕有什么区别?答案在这里

    LED屏幕和OLED屏幕有什么区别?答案在这里   中关村在线 01-0810:40 目前的电视市场,更新换代的频率越来越快,无论是国产品牌还是合资品牌,都不约而同的推出了全新产品.这离不开人们对更好 ...

  4. OLED屏幕那些次像素有趣的排列方式

    http://www.dzsc.com/data/2016-6-2/109856.html 我们今天的重点内容为倒数第二列内容的上半部分,也就是RGB排列和Pentile排列.在介绍OLED屏幕时候我 ...

  5. oled屏幕配套取字模软件使用

    oled屏幕配套取字模软件使用 作者:李剀 出处:https://www.cnblogs.com/kevin-nancy/p/10531368.html欢迎转载,但也请保留上面这段声明.谢谢! **P ...

  6. oled屏幕模块

    oled屏幕模块似乎是厂家提供的 也许可以根据屏幕驱动芯片去写 根据现在了解的芯片一般有两个:SH1106和SSD1306 不过这次我们用的是SSD1306芯片驱动的屏幕 下面是从裸屏到模块的pcb: ...

  7. 关于手残,搞废我的OLED屏幕的 追悼会

    2017-12-1913:36:41 昨天按照B站的资料利用esp12F做了一个天气站,可预报天气,惭愧的是模型做好了,照片还没拍就夭折了,可怜了我20块的屏幕,我心伤悲,莫知我哀呀! 本来调试已经成 ...

  8. OLED屏幕详细使用

    IC扩展-OLED屏的点亮,模拟IIC功能实现C代码点亮OLED屏,只要是可以C编程且有两个GPIO口的单片机均可更改小部分代码使用.OLED屏为像素自发光,其尺寸多为128*64,表示横轴上有128 ...

  9. oled屏幕

    oled作为一种新型的有机显示屏,越来越现实出其重要性,它不但超薄可弯折并且可视视角较宽.处在不论什么角度看屏幕都不会造成图像的失真. 且它有三中原色:绿.红,蓝. 我近期在学安在智能车上的oled ...

随机推荐

  1. Python之路【第十六篇】:Python并发编程|进程、线程

    一.进程和线程 进程 假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作), 而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源. 是 ...

  2. STVD生成hex,bin,显示ram&flash的使用情况

    前言: 虽然stvd免费,但使用起来并不令人满意,不能自动补全,界面丑陋,设置繁琐,最难受的是不会自动输出ram和flash的使用情况.当然方法还是有的,下面就讲讲我是怎么实现的.个人水平有限,如有错 ...

  3. sqlserver通过递归查找所有下级或上级部门和用户的操作实例

    --查找当前用户所在部门的所有下级包括当前部门 with cte as ( as lvl from Department union all from cte c inner join Departm ...

  4. ELK学习笔记之使用curl命令操作elasticsearch

    0x00 _cat系列 _cat系列提供了一系列查询elasticsearch集群状态的接口.你可以通过执行curl -XGET localhost:9200/_cat 1. 获取所有_cat系列的操 ...

  5. 执行kubectl create-f replicaset.yaml后k8s是如何工作的

    参考:提高 kubectl 使用生产力[译] 英文原文:https://learnk8s.io/blog/kubectl-productivity/ Kubernetes 架构 Kubernetes ...

  6. 【转载】C#中List集合使用LastOrDefault方法查找出最后一个符合条件的元素

    在C#的List集合中,FirstOrDefault方法一般用来查找List集合中第一个符合条件的对象,如果未查到则返回相应默认值.其实如果要查找最后一个符合条件的List集合元素对象,可以使用Las ...

  7. 【转载】C#中List集合使用Clear方法清空集合

    在C#中的List集合操作过程中,有时候需要清空List集合中的元素对象,将之重置为一个初始化的List集合对象,此时就可以使用到List集合的扩展方法Clear()方法,此方法将清空List集合中所 ...

  8. 实战AudioToolbox--在iOS平台上播放音频

    上午看了关于AudioToolbox.framework相关的资料,结合网上的资料对AudioToolbox的基本使用有了整体上的认识,上一篇文章 笔谈AudioToolbox(一) 中提到使用Aud ...

  9. Hibernate配置文件模版

    hibernate.cfg.xml 配置文件模版: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-config ...

  10. JQuery中两个ul标签的li互相移动

    实例 <html > <head> <meta http-equiv="Content-Type" content="text/html; ...