class SPIDisplay – SPI 显示器驱动

SPIDisplay 类用于驱动 SPI LCD。

驱动128×160 LCD扩展板板的使用示例:

import sensor, display

# Setup camera.
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.LCD)
sensor.skip_frames()
lcd = display.SPIDisplay()

# Show image.
while(True):
    lcd.write(sensor.snapshot())

构造

class display.SPIDisplay(width=128, height=160, refresh=60, bgr=False, byte_swap=False, triple_buffer, controller, backlight)

width SPI LCD 的宽度。默认情况下,这是 128,以匹配 OpenMV 128x160 LCD 扩展板。

height SPI LCD 的高度。默认情况下,这是 160,以匹配 OpenMV 128x160 LCD 扩展板。

refresh 以赫兹为单位设置 LCD 的刷新率。这控制 SPI LCD 扩展板的时钟。

bgr 设置为True以交换红色和蓝色通道。此参数允许您与更多类型的显示器一起使用我们的驱动程序。

byte_swap 设置为True以交换发送到 LCD 的 RGB565 像素字节。此参数允许您与更多类型的显示器一起使用我们的驱动程序。

triple_buffer 如果为True,则以RAM中显示大小的3倍为代价对屏幕进行无阻塞更新。对于带有SDRAM的OpenMV Cam板,默认情况下会启用此选项。

controller 在此处传递控制器芯片类以与显示器一起初始化。

backlight 指定要使用的背光控制器模块。默认情况下,背光将通过 GPIO 引脚控制。

备注

使用引脚 P0、P2、P3、P6、P7 和 P8。

方法

SPIDisplay.deinit() None

释放类使用的 I/O 引脚和 RAM。在销毁时自动调用此方法。

SPIDisplay.width() int

返回屏幕的宽度。

SPIDisplay.height() int

返回屏幕的高度。

SPIDisplay.refresh() int

返回刷新率。

SPIDisplay.bgr() bool

如果红色和蓝色通道交换则返回。

SPIDisplay.byte_swap() bool

返回 RGB565 像素是否以字节反转显示。

SPIDisplay.triple_buffer() bool

如果启用了三重缓冲则返回。

SPIDisplay.write(image: image.Image, x=0, y=0, x_scale=1.0, y_scale=1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel=-1, alpha=256, color_palette=None, alpha_palette=None, hint=0)

显示一个左上角从位置x,y开始的 image

您也可以传递路径而不是图像对象给此方法,一边从磁盘加载图像并在一步中绘制它。例如 write("test.jpg")

x_scale 控制图像在 x 方向的显示比例(float)。如果此值为负,则图像将水平翻转。注意,如果未指定 y_scale,则它将与 x_scale 匹配,以保持纵横比。

y_scale 控制图像在 y 方向的显示比例(float)。如果此值为负,则图像将垂直翻转。注意,如果未指定 x_scale,则它将与 x_scale 匹配,以保持纵横比。

roi 是要显示的图像的感兴趣区域矩形元组(x、y、w、h)。这允许您仅提取感兴趣区域的像素以进行缩放。

rgb_channel 是从RGB565图像(如果传递)中提取和在显示屏上渲染的RGB通道(0=R, G=1, B=2)。例如,如果传递 rgb_channel=1 ,则会提取RGB565图像的绿色通道并以灰度显示。

alpha 控制图像的不透明度。职位256显示不透明图像,而低于256的值会产生黑色透明图像。0会产生完全黑色图像。

color_palette 如果不是 -1 ,可以是 image.PALETTE_RAINBOWimage.PALETTE_IRONBOW 或总共256像素的RGB565图像,用作输入图像的灰度值的颜色查找表。如果使用了 rgb_channel,则会在缩放之后应用此选项。

alpha_palette 如果不是 -1,可以是总共 256 像素的 GRAYSCALE 图像,用作 alpha 调色板,以像素级别调制正在显示的输入图像的 alpha 值,从而精确控制根据其灰度值的像素的 alpha 值。 alpha 查找表中值为 255 的像素是不透明的,小于 255 的值会更加透明直到 0。如果使用了 rgb_channel,则会在缩放之后应用此选项。

hint 可以是标志的逻辑 OR:

SPIDisplay.clear(display_off=False) None

将LCD屏幕清除为黑色。

display_off 如果为 True则关闭显示逻辑,而不是将 LCD 帧缓冲区清除为黑色。之后,还应关闭背光,以确保屏幕变为黑色,因为许多显示器仅在打开背光时为白色。

SPIDisplay.backlight(value: int | None = None) int

设置LCD背光调光值。0(关闭)至100(开启)。

请注意,除非传递 DACBacklightPWMBacklight ,否则背光将作为GPIO引脚进行控制,并且只能从0(关闭)到非0(开启)。

不传递参数以获取背光值的状态。

SPIDisplay.bus_write(cmd: int, args=None) None

向 SPI 显示屏发送 cmdargs