电子说
OLED,即有机发光二极管(Organic Light Emitting Diode)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被称为是第三代显示技术。LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。
本实验用到的屏幕是7引脚的 0.96 寸的 SSD1306 芯片驱动的 OLED 屏幕。他的分辨率是 128*64,意思就是横向有 128 个像素点,纵向有 64 个。坐标原点在左上角,向右是X轴,向下是Y轴。
OLED 显示屏模块接口定义:
GND:电源地。
VCC:电源正(3.3~5V)。
D0:OLED 的 D0 脚,在 SPI 通信中为时钟管脚SCK。
D1:OLED 的 D1 脚,在 SPI 通信中为数据管脚MOSI。
RES:OLED 的 RES 脚,用来复位(低电平复位)。
DC:数据和命令控制管脚。
CS:片选管脚。

| OLED | ESP32开发板 |
|---|---|
| GND | GND |
| VCC | 3.3V |
| D0 | 18 |
| D1 | 13 |
| RES | 15 |
| DC | 2 |
| CS | 4 |
安装Adafruit_GFX、Adafruit_SSD1306驱动库

#include < SPI.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#define SCREEN_WIDTH 128 // OLED 显示屏宽度
#define SCREEN_HEIGHT 64 // OLED 显示屏高度
// 软件SPI总线
#define OLED_MOSI 13
#define OLED_CLK 18
#define OLED_DC 2
#define OLED_CS 4
#define OLED_RESET 15
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
void setup()
{
oled.begin();
oled.clearDisplay(); // 清除显示
oled.drawFastHLine(32, 5, 48, SSD1306_WHITE); // 绘制水平线
oled.drawLine(32, 5, 48, 30, SSD1306_WHITE); // 绘制线
oled.drawRect(5, 5, 10, 25, SSD1306_WHITE); // 绘制矩形
oled.fillRect(75, 5, 10, 30, SSD1306_WHITE); // 绘制实心矩形
oled.setCursor(5, 50); // 设置光标位置
oled.setTextSize(1); // 设置字体大小
oled.setTextColor(WHITE); // 设置文本颜色
oled.println("Hello, world!"); // 显示文字
oled.display(); // 显示内容
}
void loop()
{
}

| OLED | ESP32开发板 |
|---|---|
| GND | GND |
| VCC | 3.3V |
| D0 | 18 |
| D1 | 23 |
| RES | 15 |
| DC | 2 |
| CS | 4 |
打开主程序中SPI.h头文件定位到pins_arduino.h头文件,可查看到硬件ESP32硬件SPI默认引脚号为:
#include < SPI.h >
#include < Adafruit_GFX.h >
#include < Adafruit_SSD1306.h >
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_DC 2
#define OLED_CS 4
#define OLED_RESET 15
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT,
&SPI, OLED_DC, OLED_RESET, OLED_CS);
void setup()
{
oled.begin();
oled.clearDisplay(); // 清除显示
oled.drawFastHLine(32, 5, 48, SSD1306_WHITE); // 绘制水平线
oled.drawLine(32, 5, 48, 30, SSD1306_WHITE); // 绘制线
oled.drawRect(5, 5, 10, 25, SSD1306_WHITE); // 绘制矩形
oled.fillRect(75, 5, 10, 30, SSD1306_WHITE); // 绘制实心矩形
oled.setCursor(5, 50); // 设置光标位置
oled.setTextSize(1); // 设置字体大小
oled.setTextColor(WHITE); // 设置文本颜色
oled.println("Hello, world!"); // 显示文字
oled.display(); // 显示内容
}
void loop()
{
}

审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !