arduino如何驱动oled12864显示器?(使用u8g2库, 实际主控为esp8266使用ArduinoIDE开发, SPI接口)

一、简介

  之前我们成功驱动了LCD12864和LCD1602, 这次我们来驱动oled12864。OLED和LCD有什么不同呢?主要是发光方式的不同, OLED每个像素点都是主动发光, LCD则是依靠背光才能发光。当然这些对大多数人来说不重要, 我们作为使用者主要是使用显示器进行信息的显示, 而不是弄懂底层原理设计屏幕是吧。
  需要注意的是我这里使用的OLED的驱动是SH1106, 但是大多数屏幕都是SSD1306, 不过得益于u8g2良好的封装, 我们只需在定义数据的时候做一点改变即可。
  这是我的一块OLED👇

image

二、引脚定义

编号 丝印/符号 引脚说明
1 GND 电源地
2 VCC 电源正极,实测5V系统和3.3V系统均可
3 SCL SPI时钟信号
4 SDA SPI数据信号
5 RST 复位
6 D/C 数据/命令

三、应用电路, 主控为esp8266

在这里插入图片描述

在arduino开发环境中不能直接用GPIO的编号, 可以可以参考下图👇


在这里插入图片描述

例如应用电路中SCL连接的为GPIO13, 从上图中我们可以找到GPIO13对应的为D7, 在代码中这个引脚的编号也就为D7

四、驱动代码

#include <U8g2lib.h> //这个库需要自己安装, 不会请看后面

/*如果你的显示器不是SH1106这个驱动芯片, 到支持的驱动芯片列表中寻找定义方式, 修改下面这行↓*/
U8G2_SH1106_128X64_NONAME_1_4W_SW_SPI u8g2(/*显示方向*/U8G2_R0, /*clock/SCL*/D7, /*data/SDA*/D6, /*cs*/U8X8_PIN_NONE ,/*DC*/D0 ,/*reset/RST*/D5);//创建显示器实例


void setup() {
    u8g2.begin();           //显示器初始化
}

void loop(void) {
    u8g2.firstPage();       //此为显示循环, 更加详细的内容可以参照下面给出的链接
    do {
        u8g2.setFont(u8g2_font_ncenB14_tr); //设置字体
        u8g2.drawStr(0,20,"MadonG");        //在指定位置显示字符 MadonG
    } while ( u8g2.nextPage() );
    delay(1000);
}

  • 需要注意的是, 如果你的显示器的驱动芯片不是SH1106, 那么你需要更改数据结构定义部分, 详细请点击👉 支持的驱动芯片列表
  • 如果你的显示器缺少了数据定义的时候需要的引脚, 例如我的显示器没有CS引脚, 则传入 U8X8_PIN_NONE 表示没有这个引脚
  • 如果你想构造更加复杂的图像, 更多u8g2库的相关操作请点击👉深入学习Arduino u8g2 OLED库,一篇就够
  • 如果还不会在ArduinoIDE中安装库文件, 点击👉Arduino IDE如何安装库文件

五、效果展示

image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容