图像显示
1.学习目的
学习如何在显示屏上显示图像。
2.实验硬件
K230 平台集成了一路 MIPI-DSI 接口(4-lane),可用于驱动 MIPI 屏幕,或通过外接转换芯片连接 HDMI 显示器。此外,平台还提供虚拟显示(VIRT)输出选项,便于用户在无实体屏幕的情况下,通过 CanMV-IDE 进行图像预览和调试操作。
在多种显示方式中,使用 IDE 的帧缓冲区进行虚拟显示是一种成本最低、配置简便的方案。该模式通过 USB 与 PC 传输图像数据,适用于调试和开发阶段的可视化需求。需要注意的是,由于受限于 USB 带宽,其帧率和图像质量难以同时兼顾,但在基本使用场景中依然足够稳定和实用。
对于实际部署或便携式项目开发,推荐使用 MIPI 接口外接 3.1 英寸 MIPI 屏幕(分辨率 800×480)。该方案不仅安装简便(可直接通过铜柱与开发板固定连接),且支持将脚本保存在 TF 卡中,实现离线运行。该显示模式支持实时画面预览和交互,适合移动端或嵌入式项目中独立运行。
另外,MIPI 接口还可搭配 MIPI 转 HDMI 扩展板,连接常见的 HDMI 显示器。该方案支持最高 1080p 分辨率,显示效果优异,是家庭或实验室场景下的理想选择。相较于虚拟显示与小尺寸屏幕,该方案在成本与体验之间实现良好平衡。
3.实验原理
K230 平台支持多种显示输出方案,便于用户在不同应用场景下灵活选用。其 MicroPython 框架通过 Display 模块进行统一抽象,底层由驱动程序调用系统 framebuffer 或控制器寄存器进行图像输出。主要支持以下三种方式:VIRT、LT9611、ST7701、AML020T。
VIRT 虚拟显示器:
- 使用
Display.init(Display.VIRT, ...)初始化虚拟显示。 - 图像输出不经过真实物理屏幕,而是通过 USB 数据传输至 PC。
- CanMV-IDE 接收到帧缓冲区数据后,在界面中实时渲染显示。
- 实际上使用了一个位于系统内存中的虚拟帧缓冲区,类似
/dev/fb0。
AML020T 控 制器(MIPI 显示屏)
AML020T是常用的小尺寸 TFT-LCD 显示屏控制器,通常用于驱动 2.4 寸 MIPI 显示屏(如 480×360)。- K230 的 MIPI-DSI 接口直接输出图像数据至 AML020T 屏幕,无需中间转换。
- 使用
Display.init(Display.AML020T, ...)进行初始化配置。
4.显示文本代码解析
导入模块
import time, os, urandom, sys
from media.display import *
from media.media import *
time:提供延时函数(如sleep、sleep_ms)。os:用于退出点管理(exitpoint()),支持安全中断程序。urandom:生成随机数,用于随机位置、颜色、字体大小。sys:用于打印异常信息。media.display:显示模块,提供 LCD、HDMI、虚拟显示等输出接口。media.media:媒体管理器,负责内存池和缓冲区管理。
常量定义
DISPLAY_WIDTH = 480 # 显示屏宽度(像素)
DISPLAY_HEIGHT = 360 # 显示屏高度(像素)
- 定义显示分辨率宽
480像素、高360像素,与使用的 LCD 屏幕参数匹配。