跳到主要内容

显示屏(LCD)

简介

LCD 模块用于管理和控制 ST7789 显示屏。它提供了丰富的绘图功能,如绘制文本、图形和图片,以及显示控制功能,如调节背光和旋转屏幕。

信息

本文档的 API 接口还没完全测试过,如果遇到什么奇怪的问题,可以联系我,我会第一时间修正!

本模块是基于 MicroPython ST7789 模块制作的,有什么应用上的例子都可以通过在网上搜索 micropython st7789 基本都会有相应的参考(或者直接 GPT)。

应用示例

以下示例展示了如何使用 LCD 类来创建实例并执行一些基本操作:

from lcd import LCD
import time
import vga2_8x16 as font

# 创建 LCD 实例
display = LCD(backlight=200)

# 清除屏幕为黑色
display.fill(LCD.BLACK)

# 显示文本
display.text(font, "Hello World", 0, 0, LCD.WHITE, LCD.BLACK)

# 绘制矩形
display.draw_rect(10, 10, 100, 50, LCD.RED)

# 绘制圆圈
display.draw_circle(60, 60, 30, LCD.BLUE)

# 主循环
while True:
time.sleep(1) # 让主循环一直运行

说明:

  • vga2_8x16 是字符串的位图库。

LCD类

功能

LCD 类提供了一个全面的接口用于控制 ST7789 驱动的 TFT 显示屏,支持图形绘制、文本渲染、图像显示和背光调节。

构造函数

LCD(rotation, buffer_size, options, backlight)

  • 功能:创建并初始化 LCD 实例。
  • 参数
参数名称类型默认值说明
rotationint0屏幕旋转角度(0, 90, 180, 270)。
buffer_sizeint0显示缓冲区大小。
optionsint0显示选项(初始化时的配置选项)。
backlightint200背光亮度(0-255)。
  • 返回LCD 实例。
  • 示例
from lcd import LCD

# 初始化 LCD 屏幕,设置旋转角度和背光亮度
display = LCD(rotation=90, backlight=255)

# 使用 fill 方法清空屏幕
display.fill(LCD.RED)

方法

为了便于理解和使用 LCD 类中的方法,我们根据其功能将这些方法分类。以下是对每个方法的分类和简要描述的表格:

类别方法名称描述
电源控制on开启显示屏背光。
off关闭显示屏背光。
sleep让显示屏进入睡眠模式。
wake从睡眠模式唤醒显示屏。
显示控制fill用指定的颜色填充整个屏幕。
set_rotation设置屏幕的旋转角度(0、90、180或270度)。
width返回显示屏的宽度。
height返回显示屏的高度。
rotation获取或设置显示屏的当前旋转角度。
offset设置显示窗口渲染的偏移。
vscrdef设置垂直滚动定义参数。
vscsad设置垂直滚动起始地址。
绘图draw_pixel在指定坐标处绘制一个单独的像素,使用给定颜色。
draw_line在两点(x0, y0)和(x1, y1)之间绘制一条直线,使用指定颜色。
draw_rect绘制一个矩形轮廓,左上角在(x, y),具有指定宽度、高度和颜色。
fill_rect填充一个矩形,左上角在(x, y),具有指定的宽度、高度和颜色。
draw_circle绘制一个圆圈,圆心在(x, y),半径为r,使用指定颜色。
fill_circle填充一个圆圈,圆心在(x, y),半径为r,使用指定颜色。
hline绘制一条水平线,起始于(x, y),具有指定长度和颜色。
vline绘制一条垂直线,起始于(x, y),具有指定长度和颜色。
图像处理blit将一个缓冲区复制到显示屏上,具有指定坐标、宽度和高度。
bitmap在指定坐标处绘制位图,可选择使用索引进行颜色映射。
jpg在指定坐标处绘制JPEG图像,使用快速或慢速渲染方法。
jpg_decode解码JPEG文件并可选地调整其尺寸以适应指定的大小。
png在指定坐标处绘制PNG图像,可选择使用蒙版实现透明效果。
文本处理text在指定坐标处显示文本,使用字体、颜色和背景颜色。
write使用位图字体在指定坐标处绘制文本,具有前景色和背景色。
write_len返回用位图字体渲染字符串的宽度。
draw使用矢量字体在指定坐标处绘制文本,具有给定的缩放比例。
draw_len返回使用矢量字体渲染字符串的宽度,考虑缩放比例。
多边形polygon_center计算给定多边形的中心点。
fill_polygon在指定坐标处绘制并填充多边形,具有给定颜色、角度和中心偏移。
polygon在指定坐标处绘制多边形轮廓,具有给定颜色、角度和中心偏移。
颜色处理color565将RGB颜色值转换为16位RGB565格式。
map_bitarray_to_rgb565使用指定的前景色和背景色将位图数组映射为RGB565颜色缓冲区。
边界控制bounding设置或获取绘制区域的边界框,可选择以矩形形式返回。

text(font, text, x, y, color, background)

  • 功能:在屏幕上显示文本。
  • 参数
参数类型说明
fontFont文本字体(如 Monospace, Sans)
textstr要显示的文本内容
xint文本起始 X 坐标
yint文本起始 Y 坐标
colorint文本颜色(RGB565 格式)
backgroundint背景颜色(RGB565 格式)
  • 返回:None
  • 示例
from lcd import LCD
import vga2_8x16 as font

# 初始化 LCD
display = LCD()

# 在屏幕上显示文本
display.text(font, "Hello, World!", 10, 20, LCD.WHITE, LCD.BLACK)

fill(color)

  • 功能:填充屏幕颜色。
  • 参数
参数类型说明
colorint填充颜色(RGB565 格式)
  • 返回:None
  • 示例
display.fill(LCD.BLUE)

on()

  • 功能:开启背光。
  • 参数:无
  • 返回:None
  • 示例
display.on()

off()

  • 功能:关闭背光。
  • 参数:无
  • 返回:None
  • 示例
display.off()

sleep()

  • 功能:进入睡眠模式。
  • 参数:无
  • 返回:None
  • 示例
display.sleep()

wake()

  • 功能:退出睡眠模式。
  • 参数:无
  • 返回:None
  • 示例
display.wake()

set_rotation(rotation)

  • 功能:设置屏幕旋转。
  • 参数
参数类型说明
rotationint旋转角度(0, 90, 180, 270)
  • 返回:None
  • 示例
display.set_rotation(90)

draw_pixel(x, y, color)

  • 功能:绘制单个像素。
  • 参数
参数类型说明
xint像素的 X 坐标
yint像素的 Y 坐标
colorint像素颜色(RGB565 格式)
  • 返回:None
  • 示例
display.draw_pixel(15, 10, LCD.RED)

draw_line(x0, y0, x1, y1, color)

  • 功能:绘制直线。
  • 参数
参数类型说明
x0int起点 X 坐标
y0int起点 Y 坐标
x1int终点 X 坐标
y1int终点 Y 坐标
colorint线条颜色(RGB565 格式)
  • 返回:None
  • 示例
display.draw_line(10, 20, 100, 200, LCD.GREEN)

draw_rect(x, y, width, height, color)

  • 功能:绘制矩形。
  • 参数
参数类型说明
xint矩形起始 X 坐标
yint矩形起始 Y 坐标
widthint矩形宽度
heightint矩形高度
colorint矩形边框颜色(RGB565 格式)
  • 返回:None
  • 示例
display.draw_rect(10, 20, 50, 30, LCD.YELLOW)

fill_rect(x, y, width, height, color)

  • 功能:填充矩形。
  • 参数
参数类型说明
xint矩形起始 X 坐标
yint矩形起始 Y 坐标
widthint矩形宽度
heightint矩形高度
colorint填充颜色(RGB565 格式)
  • 返回:None
  • 示例
display.fill_rect(10, 20, 50, 30, LCD.RED)

draw_circle(x, y, r, color)

  • 功能:绘制圆圈。
  • 参数
参数类型说明
xint圆心 X 坐标
yint圆心 Y 坐标
rint圆半径
colorint圆圈颜色(RGB565 格式)
  • 返回:None
  • 示例
display.draw_circle(50, 50, 20, LCD.CYAN)

fill_circle(x, y, r, color)

  • 功能:填充圆圈。
  • 参数
参数类型说明
xint圆心 X 坐标
yint圆心 Y 坐标
rint圆半径
colorint填充颜色(RGB565 格式)
  • 返回:None
  • 示例
display.fill_circle(50, 50, 20, LCD.MAGENTA)

blit(buffer, x, y, width, height)

  • 功能:将缓冲区内容复制到屏幕。
  • 参数
参数类型说明
bufferbytes图像数据缓冲区
xint起始 X 坐标
yint起始 Y 坐标
widthint图像宽度
heightint图像高度
  • 返回:None
  • 示例
display.blit(image_data, 0, 0, 135, 240)

hline(x, y, length, color)

  • 功能:绘制水平线。
  • 参数
参数类型说明
xint起点 X 坐标
yintY 坐标
lengthint线条长度
colorint线条颜色(RGB565 格式)
  • 返回:None
  • 示例
display.hline(10, 20, 100, LCD.YELLOW)

vline(x, y, length, color)

  • 功能:绘制垂直线。
  • 参数
参数类型说明
xintX 坐标
yint起点 Y 坐标
lengthint线条长度
colorint线条颜色(RGB565 格式)
  • 返回:None
  • 示例
display.vline(20, 10, 100, LCD.GREEN)

bitmap(bitmap, x, y, index=None)

  • 功能:绘制位图。
  • 参数
参数类型说明
bitmapbytes位图数据
xint起始 X 坐标
yint起始 Y 坐标
indexint位图索引(可选)
  • 返回:None
  • 示例
display.bitmap(bitmap_data, 0, 0)

write(bitmap_font, s, x, y, fg=WHITE, bg=BLACK, background_tuple=None, fill_flag=False)

  • 功能:使用位图字体绘制文本。
  • 参数
参数类型说明
bitmap_fontFont位图字体
sstr要显示的文本内容
xint文本起始 X 坐标
yint文本起始 Y 坐标
fgint前景颜色(RGB565 格式)
bgint背景颜色(RGB565 格式)
background_tupletuple背景参数(可选)
fill_flagbool填充标志(可选)
  • 返回:None
  • 示例
display.write(bitmap_font, "Hello", 10, 20, LCD.WHITE, LCD.BLACK)

write_len(bitmap_font, s)

  • 功能:获取文本的宽度。
  • 参数
参数类型说明
bitmap_fontFont位图字体
sstr要显示的文本内容
  • 返回:int - 文本宽度
  • 示例
width = display.write_len(bitmap_font, "Hello")

draw(vector_font, s, x, y, fg=WHITE, scale=1.0)

  • 功能:使用矢量字体绘制文本。
  • 参数
参数类型说明
vector_fontFont矢量字体
sstr要显示的文本内容
xint文本起始 X 坐标
yint文本起始 Y 坐标
fgint前景颜色(RGB565 格式)
scalefloat字体缩放比例
  • 返回:None
  • 示例
display.draw(vector_font, "Hello", 10, 20, LCD.WHITE, scale=1.5)

draw_len(vector_font, s, scale=1.0)

  • 功能:获取矢量字体文本的宽度。
  • 参数
参数类型说明
vector_fontFont矢量字体
sstr要显示的文本内容
scalefloat字体缩放比例
  • 返回:int - 文本宽度
  • 示例
width = display.draw_len(vector_font, "Hello", scale=1.5)

jpg(jpg, x, y, method='FAST')

  • 功能:绘制 JPEG 图片。
  • 参数
参数类型说明
jpgbytesJPEG 图像数据
xint起始 X 坐标
yint起始 Y 坐标
methodstr解码方法('FAST' 或 'SLOW')
  • 返回:None
  • 示例
display.jpg(jpeg_data, 0, 0)

jpg_decode(jpg_filename, x=0, y=0, width=None, height=None)

  • 功能:解码 JPEG 文件。
  • 参数
参数类型说明
jpg_filenamestrJPEG 文件名
xint起始 X 坐标
yint起始 Y 坐标
widthint图像宽度(可选)
heightint图像高度(可选)
  • 返回:None
  • 示例
display.jpg_decode("image.jpg")

png(png_filename, x, y, mask=False)

  • 功能:绘制 PNG 图片。
  • 参数
参数类型说明
png_filenamestrPNG 文件名
xint起始 X 坐标
yint起始 Y 坐标
maskbool使用掩模(可选)
  • 返回:None
  • 示例
display.png("image.png", 0, 0)

polygon_center(polygon)

  • 功能:计算多边形的中心点。
  • 参数
参数类型说明
polygonlist多边形顶点列表
  • 返回:tuple - (x, y) 中心点坐标
  • 示例
center = display.polygon_center([(10, 10), (20, 10), (20, 20), (10, 20)])

fill_polygon(polygon, x, y, color, angle=0, center_x=0, center_y=0)

  • 功能:绘制填充多边形。
  • 参数
参数类型说明
polygonlist多边形顶点列表
xint起始 X 坐标
yint起始 Y 坐标
colorint填充颜色(RGB565 格式)
angleint旋转角度(可选)
center_xint中心 X 坐标(可选)
center_yint中心 Y 坐标(可选)
  • 返回:None
  • 示例
display.fill_polygon([(10, 10), (20, 10), (20, 20), (10, 20)], 0, 0, LCD.GREEN)

polygon(polygon, x, y, color, angle=0, center_x=0, center_y=0)

  • 功能:绘制多边形。
  • 参数
参数类型说明
polygonlist多边形顶点列表
xint起始 X 坐标
yint起始 Y 坐标
colorint边框颜色(RGB565 格式)
angleint旋转角度(可选)
center_xint中心 X 坐标(可选)
center_yint中心 Y 坐标(可选)
  • 返回:None
  • 示例
display.polygon([(10, 10), (20, 10), (20, 20), (10, 20)], 0, 0, LCD.RED)

bounding(status=None, as_rect=False)

  • 功能:设置或获取绘制区域边界。
  • 参数
参数类型说明
statusbool设置边界(可选)
as_rectbool是否以矩形形式返回边界(可选)
  • 返回:tuple - (tfa, height, bfa) 边界参数(如果获取)
  • 示例
boundaries = display.bounding()

vscrdef(tfa, height, bfa)

  • 功能:设置垂直滚动参数。
  • 参数
参数类型说明
tfaint上边界
heightint总高度
bfaint下边界
  • 返回:None
  • 示例
display.vscrdef(0, 240, 0)

vscsad(vssa)

  • 功能:设置垂直滚动起始地址。
  • 参数
参数类型说明
vssaint垂直滚动起始地址
  • 返回:None
  • 示例
display.vscsad(0)

color565(r, g, b)

  • 功能:将 RGB 颜色转换为 16 位颜色。
  • 参数
参数类型说明
rint红色分量
gint绿色分量
bint蓝色分量
  • 返回:int - 16 位颜色值
  • 示例
color = display.color565(255, 0, 0) # 红色

map_bitarray_to_rgb565(bitarray, buffer, width, color=WHITE, bg_color=BLACK)

  • 功能:将位图数组转换为 RGB565 颜色缓冲区。
  • 参数
参数类型说明
bitarraybytes位图数组
bufferbytes颜色缓冲区
widthint图像宽度
colorint颜色(RGB565 格式)
bg_colorint背景颜色(RGB565 格式)
  • 返回:None
  • 示例
display.map_bitarray_to_rgb565(bitarray_data, buffer, 135)

width()

  • 功能:获取显示屏宽度。
  • 参数:无
  • 返回:int - 显示屏宽度
  • 示例
screen_width = display.width()

height()

  • 功能:获取显示屏高度。
  • 参数:无
  • 返回:int - 显示屏高度
  • 示例
screen_height = display.height()

rotation(r)

  • 功能:设置显示屏旋转。
  • 参数
参数类型说明
rint旋转角度(0、90、180、270)
  • 返回:None
  • 示例
display.rotation(90)

offset(x_start, y_start)

  • 功能:设置显示屏偏移。
  • 参数
参数类型说明
x_startintX 坐标偏移
y_startintY 坐标偏移
  • 返回:None
  • 示例
display.offset(10, 20)