跳到主要内容

LCD显示屏

前言

前面学习了按键输入设备后,这一节我们来学习输出设备LCD显示屏,其实之前的 LED 灯也算是输出设备,因为它们确切地告诉了我们硬件的状态。只是相对于只有亮灭的 LED 而言,显示屏可以显示更多的信息,体验更好。

这章稍微复杂一点,但我们把它放在了前面来学习,是因为学会了显示屏的使用,那么在后面的实验中可玩性就更强了。

实验目的

通过MicorPython编程方式实现LCD的各种显示功能,包括画点、线、矩形、圆形、显示英文、显示图片等。

实验讲解

我们先来看看pyController上1.5寸LCD的参数介绍:

lcd

产品参数
供电电压3.3V
屏幕尺寸1.54寸
分辨率240*240
颜色参数TFT彩色
驱动芯片ST7789
通讯方式SPI总线

实验用的LCD是1.54寸,驱动是的ST7789,使用SPI方式跟ESP32-S3通信,按以往嵌入式C语言开发,我们需要对ST7789进行编程实现驱动,然后再建立各种描点、划线、以及显示图片函数。

使用MicroPython其实也需要做以上工作(底层开发),但由于可读性和移植性强的特点,我们只需要搞清各个对象函数使如何使用即可。总的来说和前面实验一样,有构造函数和功能函数。构造函数解决的是初始化问题,告诉开发板该外设是怎么接线,初始化参数如何,而功能函数解决的则是使用问题,我们基于自己的需求直接调用相关功能函数,实现自己的功能即可!

我们管这些函数的集合叫驱动,驱动可以是预先在固件里面,也可以通过.py文件存放在开发板文件系统。也就是说工程师已经将复杂的底层代码封装好,我们顶层直接使用python开发即可,人生苦短。我们来看看pyController开发板1.54寸LCD的构造函数和使用方法。

LCD15对象

构造函数

tftlcd.LCD15(portrait=1)

构建一个1.5寸LCD对象,参数如下:

  • portrait LCD显示方向:

    • 1 - 竖屏,240*240,开发板默认方向;
    • 2 - 横屏,240*240 ,1基础上顺时针旋转90°;
    • 3 - 竖屏,240*240 ,1基础上顺时针旋转180°;
    • 4 - 横屏,240*240 ,1基础上顺时针旋转270°。

使用方法

LCD15.fill(color)

全屏填充。

  • color RGB颜色数据,如:(255,0,0)表示红色。

LCD15.drawPixel(x,y,color)

画点:

  • x 横坐标;
  • y 纵坐标;
  • color RGB颜色数据,如:(255,0,0)表示红色。

LCD15.drawLine(x0,y0,x1,y1,color)

画线段:

  • x0 起始横坐标;
  • y0 起始纵坐标;
  • x1 结束横坐标;
  • y1 结束纵坐标;
  • color RGB颜色数据,如:(255,0,0)表示红色。

LCD15.drawRect(x,y,width,height,color,border=1,fillcolor=None)

画矩形:

  • x 起始横坐标;
  • y 起始纵坐标;
  • width 宽度;
  • height 高度;
  • color 边框颜色,RGB颜色数据,如:(255,0,0)表示红色。
  • border 边框宽度,单位为像素,默认=1;
  • fillcolor 填充颜色,RGB颜色数据,如:(255,0,0)表示红色,默认=None表示不填充。

LCD15.drawCircle(x,y,radius,color,border=1,fillcolor=None)

画圆:

  • x 圆心横坐标;
  • y 圆心纵坐标;
  • radius 半径;
  • color 边框颜色,RGB颜色数据,如:(255,0,0)表示红色。
  • border 边框宽度,单位为像素,默认=1;
  • fillcolor 填充颜色,RGB颜色数据,如:(255,0,0)表示红色,默认=None表示不填充。

LCD15.printStr(text,x,y,color,backcolor=None,size=2)

写字符:

  • text 字符,string类型;

  • x 起始横坐标;

  • y 起始纵坐标;

  • color 字体颜色,RGB颜色数据,如:(255,0,0)表示红色。

  • backcolor 字体背景颜色,RGB颜色数据,如:(255,0,0)表示红色,默认=None。

  • size 字体尺寸,默认=2表示标准尺寸:

    • 1 - 小号;
    • 2 - 标准;
    • 3 - 中号;
    • 4 - 大号;

LCD15.Picture(x,y,filename)

显示图片,支持图片格式:jpg/bmp。最大尺寸240*240

  • x 起始横坐标;
  • y 起始纵坐标;
  • filename 路径+名称,如:"/cat.jpg"。(‘/’表示开发板的板载flash的根目录。)

更多用法请阅读官方文档:
https://docs.01studio.cc/library/tftlcd/tftlcd.LCD15.html


有了上面的对象构造函数和使用说明,编程可以说是信手拈来了,我们在实验中将以上功能都跑一遍,先看看编程流程图:

参考代码

'''
实验名称:1.5寸LCD液晶显示屏(240x240)
版本:v1.0
日期:2022.4
作者:01Studio
实验平台:pyController遥控手柄
说明:通过编程实现LCD的各种显示功能,包括填充、画点、线、矩形、圆形、显示英文、显示图片等。
'''

#导入相关模块
from tftlcd import LCD15
import time

#定义常用颜色
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
BLACK = (0,0,0)
WHITE = (255,255,255)

########################
# 构建1.5寸LCD对象并初始化
########################
d = LCD15(portrait=1) #默认方向竖屏

#填充白色
d.fill(WHITE)

#画点
d.drawPixel(5, 5, RED)

#画线段
d.drawLine(5, 10, 100, 10, RED)

#画矩形
d.drawRect(5, 20, 100, 30, RED, border=5)

#画圆
d.drawCircle(50, 80, 20, RED, border=5)

#写字符,4种尺寸
d.printStr('Hello 01Studio', 10, 120, RED, size=1)
d.printStr('Hello 01Studio', 10, 150, GREEN, size=2)
d.printStr('Hello 01Studio', 10, 190, BLUE, size=3)

time.sleep(5) #等待5秒

#显示图片
d.Picture(0,0,"/picture/1.jpg")
time.sleep(3)
d.Picture(0,0,"/picture/2.jpg")
time.sleep(3)
d.Picture(0,0,"/picture/01studio.jpg")

实验结果

将示例程序的素材文件上传到pyController开发板。(也可以只上传单张图片,注意修改代码中文件的路径即可。)

lcd

在Thonny IDE运行代码, 可以看到LCD依次显示相关内容。

  • 点、线、字符等显示。

lcd

  • 图片显示。

lcd

lcd

lcd

通过本实验我们体验到了LCD使用micropython开发的简单和灵活性。我们轻松实现了LCD的各种常规操作,让用户将精力放在应用。相信随着micropython库函数的日益成熟,其性能和可玩性将变得更强!

如需显示中文,请查看01Studio全系列LCD 中文显示教程>>