Skip to main content

1.47英寸LCD SPI 显示屏


简介

这款1.47英寸LCD显示屏是一款1.47英寸的串行液晶圆角显示屏。它提供了172×320的高分辨率和262K RGB显示颜色,能够呈现清晰、色彩丰富的图像。该显示屏的设计理念是提供一个简单、高质量的显示解决方案,以满足各种DIY或物联网(IoT)项目的需求。

它采用8针接口,其中4针用于背光电源供应,另外4针通过SPI与ST7789V3驱动IC进行通信。我们已经为您准备了驱动库和示例代码,方便您快速开始项目开发。

规格参数

工作电压3.3V / 5V分辨率172 × 320 像素
通信接口4线 SPI显示尺寸17.39 × 32.35mm
显示面板IPS像素间距0.0337 × 0.1011mm
驱动芯片ST7789V3外形尺寸22.0 × 38.5mm

外形尺寸

特性

  • 172×320分辨率,262K RGB颜色,显示效果清晰且色彩丰富
  • SPI接口,减少所需IO引脚,支持控制板如XIAO/Raspberry Pi/Arduino/STM32
  • 提供开发资源(XIAO/Raspberry Pi/Arduino/STM32的示例代码)

应用场景

  • 手环或手表:该显示屏可以与XIAO微控制器组装,制作手环或手表设备。凭借其高分辨率和色彩丰富的显示效果,它可以展示日期和时间信息。其小巧的尺寸使其成为快速创建原型的理想组件。

  • PC信息显示屏:您可以使用此LCD显示屏连接转换板,用于显示PC运行信息,例如温度和风扇转速。其螺栓设计可以帮助您轻松将其固定在PC机箱上。

硬件概述

入门指南

硬件准备

现在我们将向您展示如何使用我们的 XIAO nRF52840 开发板,该板包含 6 自由度 IMU、蓝牙和 PDM 麦克风。您可能会意识到,这块开发板与显示屏是构建数字手表所需的关键组件。

XIAO nRF528401.47 英寸 LCD SPI 显示屏

接下来,您需要将显示屏的引脚连接到 XIAO nRF52840 开发板,请按照下图进行连接:

1.47 英寸 LCD SPI 显示屏XIAO nRF52840
VCC3V3
GNDGND
DIND10
CLKD8
CSD1
DCD3
RSTD0
BLD6

Arduino 库概述

:::提示 如果这是您第一次使用 Arduino,我们强烈建议您参考 Arduino 入门指南。 :::

基于 Waveshare 提供的 Arduino 示例程序,我们编写了一个适用于整个 XIAO 系列的 Arduino 库,您可以通过下面的按钮直接访问该库的 Github 页面。


功能

在开始开发代码之前,让我们先了解一下库中可用的功能。

  • void Init(uint8_t cs = CS_PIN, uint8_t dc = DC_PIN, uint8_t rst = RST_PIN, uint8_t bl = BL_PIN) —— 通用寄存器初始化。

    输入参数

    • cs: 设置芯片选择引脚,默认值为 XIAO 的 D1 引脚。
    • dc: 设置 DC 引脚,默认值为 XIAO 的 D3 引脚。
    • rst: 设置复位引脚,默认值为 XIAO 的 D0 引脚。
    • bl: 设置背光控制引脚,默认值为 XIAO 的 D6 引脚。
  • void SetBacklight(uint16_t Value) —— 设置背光。

    输入参数

    • Value: 背光强度,范围为 0 到 255。
  • void Reset(void) —— 硬件复位。

  • void SetCursor(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend) —— 设置光标位置。

    输入参数

    • Xstart: 起始 uint16_t x 坐标。
    • Ystart: 起始 uint16_t y 坐标。
    • Xend: 结束 uint16_t x 坐标。
    • Yend: 结束 uint16_t y 坐标。
  • void Clear(uint16_t Color) —— 清屏功能,将屏幕刷新为指定颜色。

    输入参数

    • Color: 您希望清屏的颜色。
  • void ClearWindow(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, uint16_t color) —— 将某一区域刷新为相同颜色。

    输入参数

    • Xstart: 起始 uint16_t x 坐标。
    • Ystart: 起始 uint16_t y 坐标。
    • Xend: 结束 uint16_t x 坐标。
    • Yend: 结束 uint16_t y 坐标。
    • color: 设置颜色。
  • void SetWindowColor(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, uint16_t Color) —— 设置某一区域的颜色。

    输入参数

    • Xstart: 起始 uint16_t x 坐标。
    • Ystart: 起始 uint16_t y 坐标。
    • Xend: 结束 uint16_t x 坐标。
    • Yend: 结束 uint16_t y 坐标。
    • color: 设置颜色。
  • void SetUWORD(uint16_t x, uint16_t y, uint16_t Color) —— 绘制一个 uint16_t。

    输入参数

    • x: 设置 X 坐标。
    • y: 设置 Y 坐标。
    • Color: 设置颜色。
  • void SetRotate(uint16_t Rotate) —— 选择图像旋转。

    输入参数

    • Rotate: ROTATE_0, ROTATE_90, ROTATE_180, ROTATE_270。
  • void SetMirroring(uint8_t mirror) —— 选择图像镜像。

    输入参数

    • mirror: MIRROR_NONE, MIRROR_HORIZONTAL, MIRROR_VERTICAL, MIRROR_ORIGIN。
  • void SetPixel(uint16_t Xpoint, uint16_t Ypoint, uint16_t Color) —— 绘制像素。

    输入参数

    • Xpoint:X坐标点。
    • Ypoint:Y坐标点。
    • Color:绘制的颜色。
  • void DrawPoint(uint16_t Xpoint, uint16_t Ypoint, uint16_t Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay) —— 绘制点 (Xpoint, Ypoint),填充颜色。

    输入参数

    • Xpoint:点的X坐标。
    • Ypoint:点的Y坐标。
    • Color:设置颜色。
    • Dot_Pixel:点的大小。
  • void DrawLine(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, uint16_t Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style) —— 绘制任意斜率的线段。

    输入参数

    • Xstart:起始点的X坐标。
    • Ystart:起始点的Y坐标。
    • Xend:终点的X坐标。
    • Yend:终点的Y坐标。
    • Color:线段的颜色。
  • void DrawRectangle(uint16_t Xstart, uint16_t Ystart, uint16_t Xend, uint16_t Yend, uint16_t Color, DOT_PIXEL Line_width, DRAW_FILL Filled) —— 绘制矩形。

    输入参数

    • Xstart:起始点的X坐标。
    • Ystart:起始点的Y坐标。
    • Xend:终点的X坐标。
    • Yend:终点的Y坐标。
    • Color:线段的颜色。
    • Filled:是否填充--- 1:实心,0:空心。
  • void DrawCircle(uint16_t X_Center, uint16_t Y_Center, uint16_t Radius, uint16_t Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) —— 使用八点法绘制指定位置和大小的圆。

    输入参数

    • X_Center:圆心的X坐标。
    • Y_Center:圆心的Y坐标。
    • Radius:圆的半径。
    • Color:圆的颜色。
    • Filled:是否填充:1:填充,0:不填充。
  • void DrawString_EN(int16_t Xstart, int16_t Ystart, const char * pString, sFONT* Font, int16_t Color_Background, int16_t Color_Foreground) —— 显示字符串。

    输入参数

    • Xstart:X坐标。
    • Ystart:Y坐标。
    • pString:要显示的英文字符串的首地址。
    • Font:显示字符大小的结构体指针。
    • Color_Background:选择英文字符的背景颜色。
    • Color_Foreground:选择英文字符的前景颜色。
  • void DrawNum(int16_t Xpoint, int16_t Ypoint, int32_t Nummber, sFONT* Font, int16_t Color_Background, int16_t Color_Foreground) —— 显示数字。

    输入参数

    • Xstart:X坐标。
    • Ystart:Y坐标。
    • Nummber:显示的数字。
    • Font:显示字符大小的结构体指针。
    • Color_Background:选择英文字符的背景颜色。
    • Color_Foreground:选择英文字符的前景颜色。
  • void DrawFloatNum(int16_t Xpoint, int16_t Ypoint, double Nummber, int8_t Decimal_Point, sFONT* Font, int16_t Color_Background, int16_t Color_Foreground) —— 显示浮点数。

    输入参数

    • Xstart:X坐标。
    • Ystart:Y坐标。
    • Nummber:要显示的浮点数据。
    • Decimal_Point:显示的小数位数。
    • Font:显示字符大小的结构体指针。
    • Color:选择英文字符的背景颜色。
  • void DrawImage(const unsigned char *image, int16_t xStart, int16_t yStart, int16_t W_Image, int16_t H_Image) —— 显示图像。

    输入参数

    • image:图像起始地址。
    • xStart:X起始坐标。
    • yStart:Y起始坐标。
    • xEnd:图像宽度。
    • yEnd:图像高度。

默认变量

#define RST_PIN D0
#define DC_PIN D3
#define BL_PIN D6
#define CS_PIN D1

#define LCD_WIDTH 172 //LCD宽度
#define LCD_HEIGHT 320 //LCD高度

/**
* 图像颜色
**/
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40
#define BRRED 0XFC07
#define GRAY 0X8430
#define DARKBLUE 0X01CF
#define LIGHTBLUE 0X7D7C
#define GRAYBLUE 0X5458
#define LIGHTGREEN 0X841F
#define LGRAY 0XC618
#define LGRAYBLUE 0XA651
#define LBBLUE 0X2B12

/**
* 显示旋转
**/
#define ROTATE_0 0
#define ROTATE_90 90
#define ROTATE_180 180
#define ROTATE_270 270

#define MIRROR_NONE 0x00
#define MIRROR_HORIZONTAL 0x01
#define MIRROR_VERTICAL 0x02
#define MIRROR_ORIGIN 0x03

安装

由于您已经下载了ZIP库,请打开您的Arduino IDE,点击 Sketch > Include Library > Add .ZIP Library。选择您刚刚下载的ZIP文件,如果库安装正确,您将在通知窗口中看到 Library added to your libraries,这表示库已成功安装。

XIAO 示例

在正确下载并安装库后,您可以在示例文件夹中找到两个示例程序,分别是 helloworld.inobgcolor.ino。bgcolor.ino 是一个展示背景颜色的示例,我们将红色设置为默认颜色。而 helloworld.ino 是一个展示我们公司 logo 动画的示例,该示例包含 bgcolor 示例中的效果。

#include <st7789v3.h>
#include "SPI.h"
#include "seeed.h"

st7789v3 Display;

void setup() {
// 在此处放置您的初始化代码,仅运行一次:
Display.SetRotate(270);
Display.SetMirroring(MIRROR_VERTICAL);
Display.Init();
Display.SetBacklight(100);
Display.Clear(WHITE);
}

void loop() {
// 在此处放置您的主代码,重复运行:
// Display.SetPixel(100, 100, RED);
// Display.DrawPoint(50, 50, YELLOW, DOT_PIXEL_8X8, DOT_FILL_AROUND);

Display.DrawImage(gImage_seeed, 40, 60, 240, 47);

Display.DrawLine(40, 50, 65, 50, MAGENTA, DOT_PIXEL_2X2, LINE_STYLE_SOLID);
Display.DrawLine(40, 55, 80, 55, MAGENTA, DOT_PIXEL_2X2, LINE_STYLE_SOLID);

// Display.DrawRectangle(15, 80, 265, 150, GRAY, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);

Display.DrawCircle(0, 0, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 0, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 0, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 0, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(320, 0, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 0, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 0, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 0, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(0, 172, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 172, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 172, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(0, 172, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawCircle(320, 172, 25, BLUE, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 172, 20, BLACK, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 172, 15, RED, DOT_PIXEL_2X2, DRAW_FILL_EMPTY);
Display.DrawCircle(320, 172, 10, GREEN, DOT_PIXEL_2X2, DRAW_FILL_FULL);

Display.DrawLine(242, 110, 282, 110, GRAYBLUE, DOT_PIXEL_2X2, LINE_STYLE_SOLID);
Display.DrawLine(267, 115, 282, 115, GRAYBLUE, DOT_PIXEL_2X2, LINE_STYLE_SOLID);

Display.DrawString_EN(100, 120, "By: Citric", &Font20, WHITE, BLACK);
// Display.DrawNum(100, 220, 123456, &Font24, RED, BRED);
Display.DrawFloatNum(130, 140, 1.00, 2, &Font20, WHITE, BLACK);
}

您会发现 Seeed Studio 的 logo 动态显示在屏幕上。

故障排除

1. 当屏幕连接时,我重新编程屏幕却无法正常工作?

答:如果您的程序正在不断与屏幕通信,重新编程可能会中断此过程,导致屏幕无法正常工作。您可以尝试关闭电源以恢复屏幕的正常运行。

2. 我应该为显示屏使用什么样的电源?

答:电路板可以接受 3.3V 或 5V 的输入电压,因此您可以使用该范围内的电源。

3. 我的显示屏颜色看起来不正确。可能是什么问题?

答:请确保您的代码中正确初始化了显示屏,并且您使用了正确的颜色值。如果问题仍然存在,可能是显示屏或连接线出现了问题。请检查连接,或者尝试使用另一块显示屏(如果有)。

资源

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,确保您使用我们的产品时拥有顺畅的体验。我们提供多个沟通渠道,以满足不同的偏好和需求。

Loading Comments...