2.7寸单色128x64 OLED显示模块使用指南

电子说

1.4w人已加入

描述

2.7寸单色128x64 OLED显示模块使用指南

一、概述

如果你一直在关注单色OLED显示屏,且需要更大尺寸的,那么这款2.7寸的OLED显示模块会让你满意。它对角线尺寸为2.7寸,由于OLED显示屏的高对比度,显示内容非常清晰可读。该显示屏由128x64个白色OLED像素组成,每个像素由控制芯片控制开关。因为显示屏自身发光,无需背光源,这不仅降低了运行所需的功率,还带来了高对比度,显示效果十分清晰。

文件下载:2674.pdf

驱动芯片SSD1325支持8位和SPI两种通信方式,个人更推荐SPI方式,只需4到5根线即可。OLED需要3.3V电源供电,通信也采用3.3V逻辑电平。我们还提供了一个面包板友好型的电平转换器,可将3V或5V转换为3V,方便与像Arduino这样的5V逻辑设备配合使用。显示屏的功耗会因点亮像素的多少而有所不同,平均从3.3V电源获取约50 - 150mA的电流。OLED驱动内置了一个简单的开关电容电荷泵,可将3.3V转换为高电压来驱动OLED。

每个订单包含一个组装好的OLED模块,带有漂亮的边框和4个安装孔。由于显示屏采用3V逻辑和电源,我们还配备了HC4050电平转换器和一个220uF的电容,因为我们发现Arduino为这个大显示屏供电时,3.3V电源可能需要更多的电容。显示屏未附带引脚头,但会提供一根引脚头供你自行焊接。另外,显示屏可能默认处于8位模式,你可以通过简单的焊接操作将其从8位模式切换到SPI模式。

二、引脚定义

这些模块的引脚标记不太清晰,最左边的引脚为1号,依次向右递增,最右边的为20号。

1. 电源引脚

  • 引脚1:电源和信号地。
  • 引脚2:3V电源输入,需提供具有100 - 150mA电流能力的3V电源。
  • 引脚3:未使用,请勿连接任何东西。

    2. 信号引脚

  • 引脚4(DC):数据/命令引脚,3V逻辑电平输入引脚,用于SPI和8位连接。
  • 引脚5(WR):8位写引脚,3V逻辑电平输入引脚,用于8位连接,使用SPI时请勿连接。
  • 引脚6(RD):8位读引脚,3V逻辑电平输入引脚,用于8位连接,使用SPI时请勿连接。
  • 引脚7(Data0):SPI时钟引脚和8位数据位0引脚,SPI模式下为3V逻辑电平输入引脚,8位模式下为输入/输出引脚。
  • 引脚8(Data1):SPI数据输入引脚和8位数据位1引脚,SPI模式下为3V逻辑电平输入引脚,8位模式下为输入/输出引脚。
  • 引脚9 - 14(Data2 - 7):用于8位模式,8位模式下为3V输入/输出引脚,使用SPI时请勿连接。
  • 引脚15(CS):芯片选择引脚,3V逻辑电平输入引脚,用于SPI和8位连接。
  • 引脚16(RESET):复位引脚,3V逻辑电平输入引脚,用于SPI和8位连接。

    3. 其余引脚

  • 引脚17 - 19:未连接,请勿使用。
  • 引脚20:“框架地”引脚,连接到OLED周围的金属外壳,可接地或悬空。

三、组装

1. 模式切换

这些模块可以在SPI或8位模式下使用。不过,切换模式的唯一方法是对模块背面的跳线进行拆焊和焊接操作。

2. 8位“6800”模式

模块默认可能是这种设置,此时R20和R18电阻就位,而R21和R19缺失。

3. SPI模式

这可能是你想要的模式。你需要用烙铁加热电阻,移除R18和R20电阻,甚至可能需要熔化一些焊锡。然后移除电阻,并焊接上R19和R21(可以使用任何0 - 10K的0805电阻或一段导线)。

四、Arduino连接与测试

我们将以Arduino UNO兼容板为例进行演示。如果你使用的是3V逻辑设备,可以跳过电平转换器,直接将微控制器连接到显示屏。你也可以使用其他类型的电平转换器。任何具有4或5个引脚的微控制器都可以使用,但建议先使用UNO进行测试,再尝试其他处理器。别忘了将显示屏设置为SPI模式,具体操作可参考组装步骤。

1. SPI连接

由于该显示屏支持SPI,我们可以使用硬件或“软件”SPI。为了使所有Arduino的连接方式一致,我们先从“软件”SPI开始。以下是应使用的引脚连接:

  • 引脚1连接到公共电源/数据地线(黑色线)。
  • 引脚2连接到Arduino的3V电源(红色线)。
  • 跳过引脚3。
  • 引脚4(DC)通过电平转换器连接到数字引脚8(白色线),后续可使用任何引脚。
  • 引脚7(SCLK)通过电平转换器连接到数字引脚13(蓝色线),后续可使用任何引脚。
  • 引脚8(DIN)通过电平转换器连接到数字引脚11(绿色线),后续可使用任何引脚。
  • 跳过引脚9 - 14。
  • 引脚15(CS)通过电平转换器连接到数字引脚10(黄色线),后续可使用任何引脚。
  • 引脚16(RST)通过电平转换器连接到数字引脚9(橙色线),后续可使用任何引脚。

后续如果想使用硬件SPI,或者更改引脚,都可以进行相应调整。

2. 电平转换器连接

还需要为HC4050电平转换器供电,将引脚1连接到3V(红色线),引脚8连接到地(黑色线)。

3. 3.3V电容

我们随订单提供了一个220uF的电容,因为发现通过Arduino的3.3V稳压器供电时,3V线路的电压波动较大,建议安装该电容。将电容的负极引脚连接到地,正极引脚连接到3V。

4. 下载库

要开始读取传感器数据,需要从Arduino库管理器中下载Adafruit_SSD1325和Adafruit_GFX库。打开Arduino库管理器,搜索并安装这两个库。如果使用的是较旧版本(1.8.10之前)的Arduino IDE,还需要手动定位并安装Adafruit_BusIO库(较新版本会自动处理)。我们也有关于Arduino库安装的详细教程,可参考:http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

5. 运行演示

重启Arduino软件后,会看到一个名为Adafruit_SSD1325的新示例文件夹,其中有一个名为ssd1325test的示例。将该草图上传到Arduino,显示屏应该会立即更新显示内容。如果没有显示任何内容,请确保连接正确,可参考前面的连接图,同时检查是否已将模块转换为“SPI”模式。

6. 更改引脚

显示屏正常工作后,可以更改引脚。如果使用硬件SPI,时钟和MOSI引脚是固定的,无法更改;但可以切换到软件SPI,虽然速度稍慢,但可以选择任何引脚。找到以下代码行进行修改:

// If using software SPI, define CLK and MOSI
#define OLED_CLK 13
#define OLED_MOSI 11
// These are neede for both hardware & software SPI
#define OLED_CS 10
#define OLED_RESET 9
#define OLED_DC 8

将其修改为你想要的引脚即可。

7. 使用硬件SPI

如果需要更高的速度,可以“升级”到硬件SPI。硬件SPI速度更快,绘图速度可能快2倍,但需要使用硬件SPI引脚。

  • SPI时钟连接到SPI时钟引脚。在Arduino Uno/Duemilanove/328-based上是数字引脚13;在Mega上是数字引脚52;在Leonardo/Due上是ICSP - 3(更多详细信息可参考SPI连接说明)。
  • SPI数据输入连接到SPI MOSI引脚。在Arduino Uno/Duemilanove/328-based上是数字引脚11;在Mega上是数字引脚51;在Leonardo/Due上是ICSP - 4(更多详细信息可参考SPI连接说明)。

要启用硬件SPI,找到以下代码行:

// this is software SPI, slower but any pins
Adafruit_SSD1325 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
// this is for hardware SPI, fast! but fixed oubs
//Adafruit_SSD1325 display(OLED_DC, OLED_RESET, OLED_CS);

注释掉第一行,取消注释第二行。

五、使用Adafruit GFX

Arduino的Adafruit_GFX库为我们所有的TFT、LCD和OLED显示屏提供了通用的语法和一组图形函数。这使得Arduino草图可以轻松在不同类型的显示屏之间进行适配,并且任何新功能、性能改进和错误修复都将立即应用到我们所有的显示屏上。该库可以让你绘制点、线、矩形、圆角矩形、三角形、文本等。详细教程可参考:http://learn.adafruit.com/adafruit-gfx-graphicslibrary 。由于这是一个“缓冲”显示屏,每当需要更新OLED时,别忘了调用“display()”对象函数,这样可以一次性绘制整个显示屏,提高显示效率。

六、CircuitPython连接

借助Adafruit_Blinka(我们的CircuitPython - for - Python兼容性库),你可以将该传感器与任何CircuitPython微控制器板或具有GPIO和Python的计算机配合使用。

1. Adafruit OLED显示I2C连接

  • OLED引脚1连接到微控制器的地。
  • OLED引脚2连接到微控制器的3.3V电源。
  • OLED引脚4连接到微控制器的地。
  • OLED引脚7连接到微控制器的SCL,并从SCL到3.3V连接一个10K电阻。
  • OLED引脚8连接到微控制器的SDA。
  • OLED引脚9连接到微控制器的SDA,并从SDA到3.3V连接一个10K电阻。
  • OLED引脚16连接到微控制器的D9。

    2. Adafruit OLED显示SPI连接

  • OLED引脚1连接到微控制器的地。
  • OLED引脚2连接到微控制器的3.3V电源。
  • OLED引脚4连接到微控制器的D6。
  • OLED引脚7连接到微控制器的SCK。
  • OLED引脚8连接到微控制器的MOSI。
  • OLED引脚15连接到微控制器的D5。
  • OLED引脚16连接到微控制器的D9。

七、CircuitPython设置

1. 安装DisplayIO SSD1325库

要在Adafruit CircuitPython板上使用SSD1325 OLED,需要在板上安装Adafruit CircuitPython DisplayIO SSD1325模块。首先确保你的板运行的是Adafruit CircuitPython 5.0或更高版本。然后,需要安装使用硬件所需的库,可仔细按照步骤从Adafruit的CircuitPython库捆绑包中查找并安装这些库。我们的CircuitPython入门指南有关于如何安装库捆绑包的详细页面。如果你愿意,也可以在板上手动单独安装库,例如adafruit_displayio_ssd1325 。在继续之前,确保板的lib文件夹或根文件系统中复制了adafruit_displayio_ssd1325.mpy文件。接下来,连接到板的串行REPL,进入CircuitPython的“>>>”提示符。

2. 代码示例及附加库

对于代码示例,还需要一个额外的库。我们使用了Adafruit CircuitPython Display Text库,以避免代码过于复杂。按照与驱动库相同的方式,将adafruit_display_text文件夹复制到CircuitPython设备的lib文件夹中进行安装。

八、CircuitPython使用

1. I2C初始化

如果显示屏通过I2C连接到板上,首先需要初始化I2C总线。导入必要的模块:

import board

然后使用默认的SCL和SDA引脚创建I2C实例(如果使用Feather或类似的Adafruit板,引脚会有标记):

i2c = board.I2C()

初始化I2C接口后,创建I2CDisplay总线实例:

import adafruit_ssd1325
import displayio
display_bus = displayio.I2CDisplay(i2c, device_address=0x3c)

最后,传入显示总线并创建SSD1325 I2C驱动实例:

display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)

此时应该能看到REPL的图像。注意,SSD1325类初始化器的最后两个参数是显示屏的宽度和高度(以像素为单位),要确保使用正确的值。

2. 更改I2C地址

如果将OLED的引脚4连接到 +3V而不是地,I2C地址将变为0x3d :

display_bus = displayio.I2CDisplay(i2c, device_address=0x3d)
display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)

3. SPI初始化

如果显示屏通过SPI连接到板上,首先需要初始化SPI总线。如果使用微控制器板,运行以下命令:

import board
import displayio
import adafruit_ssd1325
displayio.release_displays()
tft_cs = board.D5
spi = board.SPI()
tft_dc = board.D6
tft_reset = board.D9
display_bus = displayio.FourWire(spi, command=tft_dc, chip_select=tft_cs, reset=tft_reset, baudrate=1000000)
display = adafruit_ssd1325.SSD1325(display_bus, width=128, height=64)

FourWire初始化器的参数是连接到显示屏的DC、CS和复位引脚。由于使用了关键字参数,它们可以处于任何位置。同样,要确保使用与板连接的正确引脚名称。

4. 示例代码

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
This test will initialize the display using displayio and draw a solid white
background, a smaller black rectangle, and some white text.
"""
import board
import displayio
import terminalio
from adafruit_display_text import label
import adafruit_ssd1325

displayio.release_displays()

oled_cs = board.D5  # Use for SPI
spi = board.SPI()
oled_dc = board.D6
display_bus = displayio.FourWire(spi, command=oled_dc, chip_select=oled_cs, baudrate=1000000, reset=board.D9)
# i2c = board.I2C()  # uses board.SCL and board.SDA # Use for I2C
# i2c = board.STEMMA_I2C()  # For using the built-in STEMMA QT connector on a microcontroller
# display_bus = displayio.I2CDisplay(i2c, device_address=0x3c)

WIDTH = 128
HEIGHT = 64
BORDER = 8
FONTSCALE = 1

display = adafruit_ssd1325.SSD1325(display_bus, width=WIDTH, height=HEIGHT)

# Make the display context
splash = displayio.Group()
display.show(splash)

color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF  # White
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)

# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(display.width - BORDER * 2, display.height - BORDER * 2, 1)
inner_palette = displayio.Palette(1)
inner_palette[0] = 0x000000  # Black
inner_sprite = displayio.TileGrid(inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER)
splash.append(inner_sprite)

# Draw a label
text = "Hello World!"
text_area = label.Label(terminalio.FONT, text=text, color=0x888888)
text_width = text_area.bounding_box[2] * FONTSCALE
text_group = displayio.Group(scale=FONTSCALE, x=display.width // 2 - text_width // 2, y=display.height // 2)
text_group.append(text_area)  # Subgroup for text scaling
splash.append(text_group)

while True:
    pass

5. 代码解释

  • 首先导入必要的模块,包括board、displayio、terminalio、
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分