# ST7789 屏幕驱动 ## 简介 这是基于ST7789芯片的屏幕驱动库,支持 240x240 和 135x240 两种分辨率。驱动仅支持 `RGB565`。 <p align="center"> <img src="images/IMG_20210702_125458.jpg" alt="ST7789 display photo"/> </p> ------------- ## ST7789 实例 ---------------- 要创建 `ST7789` 必须要一个 `machine.SPI` 或 `machine.SoftSPI` 对象和至少两个引脚(`RESET` 和 `DC` 引脚) ``` python from machine import SPI, Pin import st7789 spi = SPI(0, baudrate=40000000, polarity=1, phase=0, bits=8, endia=0, sck=Pin(6), mosi=Pin(8)) display = st7789.ST7789(spi, 240, 240, reset=Pin(11,func=Pin.GPIO, dir=Pin.OUT), dc=Pin(7,func=Pin.GPIO, dir=Pin.OUT)) display.init() display.draw_string(50, 230, "Powered by BlackWalnuut Labs.") ``` 创建 `ST7789` 实例,除了填入 `machine.SPI`,`width` 和 `height` 外,还可以填入其他选参数: - `reset` 和 `dc`:用于指定屏幕功能引脚 - `xtart` 和 `ystart` 用于指定屏幕的起始点 - `direction` 用于指定屏幕镜像方向,可以指定以下参数(`st7789.NORMAL`,`st7789.YMIRROR`,`st7789.XMIRROR`,`st7789.XYEXCHANGE`) ## ST7789 其他方法 - `ST7789.fill(color)` 填充颜色 - `ST7789.pixel(x, y, color)` 指定像素点填充指定颜色 - `ST7789.line(x0, y0, x1, y1, color)` 从 (`x0`, `y0`) 到 (`x1`, `y1`) 画一根直线 - `ST7789.hline(x, y, length, color)` 从指定点开始绘制指定长度的横线 - `ST7789.vline(x, y, length, color)` 从指定点开始绘制指定长度的竖线 - `ST7789.rect(x, y, width, height, color)` 从指定点 (`x`, `y`) 绘制指定长、宽和颜色的矩形 - `ST7789.fill_rect(x, y, width, height, color)` 从指定点 (`x`, `y`) 绘制指定长、宽和颜色的实心矩形 - `ST7789.blit_buffer(buffer, x, y, width, height)` 直接复制 `bytes()` 或 `bytearray()` 的内容到屏幕内部缓冲区 - `ST7789.draw_string(x, y, str, color=st7789.WHITE, bg=st7789.WHITE, size=1, vertical=False, rotate=st7789.ROTATE_0, spacing=1)` 从指定带点 (x, y) 绘制字符串。 - color: 指定字符串字体颜色 - bg: 字符串背景颜色,当color和bg相同时,背景色不生效 - size:字符串字体大小,必须为正整数 - vertical:启用竖直排列 - rotate:旋转角度,仅支持 `ROTATE_0`, `ROTATE_90`, `ROTATE_180`, `ROTATE_270` - spacing: 字符间距,默认为 `1` 个像素点 - `ST7789.circle(x, y, r, color)` 从指定带点 (x, y) 绘制半径为 `r` 的 `color` 颜色的空心圆。 - `ST7789.fill_circle(x, y, r, color)` 从指定带点 (x, y) 绘制半径为 `r` 的 `color` 颜色的实心圆。 模块其他旋转角度定义:`st7789.ROTATE_0`, `st7789.ROTATE_90`, `st7789.ROTATE_180`, `st7789.ROTATE_270` 模块其他颜色定义:`st7789.BLACK`, `st7789.BLUE`, `st7789.RED`, `st7789.GREEN`, `st7789.CYAN`, `st7789.MAGENTA`, `st7789.YELLOW` 和 `st7789.WHITE` ## 模块其他方法 ---------------- - `color565(r, g, b)` 将`R、G、B`颜色转换为 `2` 个字节长度的 `rgb565` 格式 - `map_bitarray_to_rgb565(bitarray, buffer, width, color=WHITE, bg_color=BLACK)` 将bitarray转换为适合的 rgb565 颜色缓冲区。bitarray 中的位 1 是带颜色的像素,0 是带 bg_color 的像素。 这是一个为了提高性能提供的方法,可以使用其打印高分辨率字体。推荐一个您可以使用一个很棒的工具 https://github.com/peterhinch/micropython-font-to-py 从 `.ttf` 生成位图字体。