Unit LCD 是一款1.14英寸的彩色LCD拓展屏幕单元。采用ST7789V2驱动方案, 分辨率为 135*240, 支持RGB666显示(262,144色)。内部集成ESP32-PICO控制核心(内置固件, 显示开发更加便捷), 支持通过I2C(addr: 0x3E)通信接口进行控制与固件升级。屏幕背部集成了磁吸设计,能够轻松吸附金属表面进行固定。该LCD屏幕拓展适合嵌入到各种需要显示简单内容的仪器仪表或是控制设备中作为显示面板。
规格 | 参数 |
---|---|
屏幕驱动IC | ST7789V2 |
工作电流 | 45.7mA |
通信接口 | I2C address: 0x3E |
显示尺寸 | 1.14 inch |
像素间距 | 0.1101(H) x 0.1038(V) mm |
分辨率 | 135*240 |
可视角 | 全视角 |
工作温度 | 0°C to 60°C |
净重 | 8.5g |
毛重 | 20g |
产品尺寸 | 48 * 24 * 8mm |
包装尺寸 | 67 * 52 * 12.5mm |
外壳材质 | Plastic ( PC ) |
M5Core(PORT A) | GPIO22 | GPIO21 | 5V | GND |
---|---|---|---|---|
Unit LCD | SCL | SDA | 5V | GND |
Datasheet
Library
Firmware
#include <M5UnitLCD.h>
M5UnitLCD display;
M5Canvas canvas(&display);
static constexpr char text[] = "Hello world ! こんにちは世界! this is long long string sample. 寿限無、寿限無、五劫の擦り切れ、海砂利水魚の、水行末・雲来末・風来末、喰う寝る処に住む処、藪ら柑子の藪柑子、パイポ・パイポ・パイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナの、長久命の長助";
static constexpr size_t textlen = sizeof(text) / sizeof(text[0]);
int textpos = 0;
int scrollstep = 2;
void setup(void)
{
display.init();
display.setRotation(2);
canvas.setColorDepth(1); // mono color
canvas.setFont(&fonts::lgfxJapanMinchoP_32);
canvas.setTextWrap(false);
canvas.setTextSize(2);
canvas.createSprite(display.width() + 64, 72);
}
void loop(void)
{
int32_t cursor_x = canvas.getCursorX() - scrollstep;
if (cursor_x <= 0)
{
textpos = 0;
cursor_x = display.width();
}
canvas.setCursor(cursor_x, 0);
canvas.scroll(-scrollstep, 0);
while (textpos < textlen && cursor_x <= display.width())
{
canvas.print(text[textpos++]);
cursor_x = canvas.getCursorX();
}
display.waitDisplay();
canvas.pushSprite(&display, 0, (display.height() - canvas.height()) >> 1);
}
※ 未定义的命令被视为空操作指令。
hex | len | command | description | send params |
---|---|---|---|---|
0x00 | 1-∞ | NOP | 在通信停止之前什么都不做 | [0] 0x00 [1-∞] Ignored value |
0x20 | 1 | INVOFF | 禁用颜色反转 | [0] 0x20 |
0x21 | 1 | INVON | 启用颜色反转 | [0] 0x21 |
0x22 | 2 | BRIGHTNESS | 背光亮度设置 0:Off - 255:Full lights |
[0] 0x22 [1] Brightness(0-255) |
0x23 | 7 | COPYRECT | 矩形范围复制 | [0] 0x23 [1] Copy source X_Left [2] Copy source Y_Top [3] Copy source X_Right [4] Copy source Y_Bottom [5] Copy destination X_Left [6] Copy destination Y_Top |
0x2A | 3 | CASET | X 方向范围选择 | [0] 0x2A [1] X_Left [2] X_Right |
0x2B | 3 | RASET | Y方向范围选择 | [0] 0x2B [1] Y_Top [2] Y_Bottom |
0x36 | 2 | ROTATE | 设置绘图方向 0:Normal / 1:90° / 2:180° / 3:270° 4-7:flips 0-3 upside down |
[0] 0x36 [1] Setting value (0-7) |
0x38 | 2 | SET_POWER | 运行速度设置 (power consumption setting) 0:Low speed / 1:Normal / 2:High speed |
[0] 0x38 [1] Setting value (0-2) |
0x39 | 2 | SET_SLEEP | 液晶面板休眠设置 0:wake up / 1:sleep |
[0] 0x39 [1] Setting value (0-1) |
0x41 | 2-∞ | WRITE_RAW_8 | 写入 image RGB332 | [0] 0x41 [1] RGB332 until [1] communication STOP. |
0x42 | 3-∞ | WRITE_RAW_16 | 写入 image RGB565 | [0] 0x42 [1-2] RGB565 until [1-2] communication STOP. |
0x43 | 4-∞ | WRITE_RAW_24 | 写入 image RGB888 | [0] 0x43 [1-3] RGB888 until [1-3] communication STOP. |
0x44 | 5-∞ | WRITE_RAW_32 | 写入 image ARGB8888 | [0] 0x44 [1-4] ARGB8888 until [1-4] communication STOP. |
0x45 | 2-∞ | WRITE_RAW_A | 写入 image A8 only alpha channel. Use the last used drawing color. |
[0] 0x45 [1] A8 until [1] communication STOP. |
0x49 | 3-∞ | WRITE_RLE_8 | 写入 RLE image RGB332 | [0] 0x49 [1-∞] RLE Data |
0x4A | 4-∞ | WRITE_RLE_16 | 写入 RLE image RGB565 | [0] 0x4A [1-∞] RLE Data |
0x4B | 5-∞ | WRITE_RLE_24 | 写入 RLE image RGB888 | [0] 0x4B [1-∞] RLE Data |
0x4C | 6-∞ | WRITE_RLE_32 | 写入 RLE image ARGB8888 | [0] 0x4C [1-∞] RLE Data |
0x4D | 3-∞ | WRITE_RLE_A | draw RLE image A8 only alpha channel. Use the last used drawing color. |
[0] 0x4D [1-∞] RLE Data |
0x50 | 1 | RAM_FILL | 用上次使用的绘图颜色填充选区 | [0] 0x50 |
0x51 | 2 | SET_COLOR_8 | 用 RGB332 指定绘图颜色 | [0] 0x51 [1] RGB332 |
0x52 | 3 | SET_COLOR_16 | 用 RGB565 指定绘图颜色 | [0] 0x52 [1-2] RGB565 |
0x53 | 4 | SET_COLOR_24 | 用 RGB888 指定绘图颜色 | [0] 0x53 [1-3] RGB888 |
0x54 | 5 | SET_COLOR_32 | 用 ARGB8888 指定绘图颜色 | [0] 0x54 [1-4] ARGB8888 |
0x60 | 3 | DRAWPIXEL | 绘制单点 使用存储的绘制颜色 |
[0] 0x60 [1] X [2] Y |
0x61 | 4 | DRAWPIXEL_8 | 绘制单点 RGB332 1Byte 用于绘制颜色规范 |
[0] 0x61 [1] X [2] Y [3] RGB332 |
0x62 | 5 | DRAWPIXEL_16 | 绘制单点 RGB565 2Byte 用于绘制颜色规范 |
[0] 0x62 [1] X [2] Y [3-4] RGB565 |
0x63 | 6 | DRAWPIXEL_24 | 绘制单点 RGB888 3Byte 用于绘制颜色规范 |
[0] 0x63 [1] X [2] Y [3-5] RGB888 |
0x64 | 7 | DRAWPIXEL_32 | 绘制单点 ARGB8888 4Byte 用于绘制颜色规范 与现有绘制内容透明合成 |
[0] 0x64 [1] X [2] Y [3-6] ARGB8888 |
0x68 | 5 | FILLRECT | 填充矩形 使用存储的绘图颜色 |
[0] 0x68 [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom |
0x69 | 6 | FILLRECT_8 | 填充矩形 RGB332 1Byte 用于绘制颜色规范 |
[0] 0x69 [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5] RGB332 |
0x6A | 7 | FILLRECT_16 | 填充矩形 RGB565 2Byte 用于绘制颜色规范 |
[0] 0x6A [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-6] RGB565 |
0x6B | 8 | FILLRECT_24 | 填充矩形 RGB888 3Byte 用于绘制颜色规范 |
[0] 0x6B [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-7] RGB888 |
0x6C | 9 | FILLRECT_32 | 填充矩形 ARGB8888 4Byte 用于绘制颜色规范 与现有绘制内容透明合成 |
[0] 0x6C [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-8] ARGB8888 |
0xA0 | 4 | CHANGE_ADDR | I2C 地址更改 使用时[2]指定[1]的位反转值。 |
[0] 0xA0 [1] new I2C address. [2] Bit[1]反转 [3] 0xA0 |
hex | len | command | description | return values |
---|---|---|---|---|
0x04 | 1 | READ_ID | ID 和固件版本。 收到 4Byte |
[0] 0x77 [1] 0x89 [2] Major version [3] Minor version |
0x09 | 1 | READ_BUFCOUNT | 获取剩余的命令缓冲区。 值越大,空间越大。 可以连续读出。 |
[0] remaining command buffer (0~255) Repeated reception is possible. |
0x81 | 1 | READ_RAW_8 | 读取 RGB332 image | [0] RGB332 Repeat [0] until communication STOP. |
0x82 | 1 | READ_RAW_16 | 读取 RGB565 image | [0-1] RGB565 Repeat [0-1] until communication STOP. |
0x83 | 1 | READ_RAW_24 | 读取 RGB888 image | [0-2] RGB888 Repeat [0-2] until communication STOP. |
使用示例:使用填充矩形命令0x6A 用红色填充X16-31 和Y32-47 的矩形范围。
index | hex | description |
---|---|---|
0 | 0x6A | 填充矩形RGB565 |
1 | 0x10 | X 左 |
2 | 0x20 | Y 顶部 |
3 | 0x1F | X 右 |
4 | 0x2F | Y 底部 |
5 | 0xF8 | 颜色数据 RRRRRGGG(红色) |
6 | 0x00 | 颜色数据 GGGBBBBB(红色) |
命令 6Ah 一共是 7Byte 命令序列。 如果在传输过程中发生 I2C 通信 STOP 或 RESTART,则不会处理该命令。 必须在单个传输序列中不间断地传输直到结束。
任何矩形填充命令 68h 到 6Ch 均可用于矩形填充。 索引 1 到 4 是相同的,但索引 5 和以后的索引指定颜色的方法不同。
命令 68h 的“记住颜色”表示将重用最后指定的颜色。 换句话说,如果你想连续做几个相同颜色的矩形填充,你可以只为第一个矩形填充指定颜色,然后使用 68h 命令省略颜色指定。
命令 6Ch,ARGB8888,允许您指定 alpha 通道(透明度),它允许您将已绘制的内容与绘制颜色组合。
使用示例:使用范围指定命令0x2A/0x2B 和图像传输命令,在X 10 到13 和Y 14 到17 的矩形范围内绘制图像。
index | hex | description |
---|---|---|
0 | 0x2A | X 方向范围选择 |
1 | 0x0A | X 左 (10) |
2 | 0x0D | X 右(13) |
3 | 0x2B | Y 方向范围选择 |
4 | 0x0E | Y 顶部(14) |
5 | 0x11 | Y 底部(17) |
6 | 0x43 | 绘制图像 RGB888 |
7-54 | ?? | 图像数据(RGB888 ×16) |
使用示例:使用 WRITE_RLE 命令发送 RLE(运行长度编码)图像。
index | hex | description |
---|---|---|
0 | 0x4A | 绘制RLE图像RGB565 |
1 | 0x07 | 连续数(7个像素) |
2-3 | 0xF800 | 颜色数据(红色) |
4 | 0x00 | 连续数字(0像素) 切换到直接模式 |
5 | 0x03 | 直接模式的连续数量(3pixel) |
6-7 | 0x07E0 | 颜色数据(绿色) |
8-9 | 0x001F | 颜色数据(蓝色) |
10-11 | 0xF800 | 颜色数据(红色) |
12 | 0x04 | 连续数(4个像素) |
13-14 | 0x001F | 颜色数据(蓝色) |
上面的例子将按如下方式处理。
LCD_UNIT_FirmwareUpdater
固件至M5Core1/Core2/M5StickC/CPlus/ATOM/Paper任意一款主控中。将UNIT LCD通过导线连接至I2C端口将会自动开始更新。