社区导航

 

搜索
查看: 674|回复: 32

[原创] MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏

  [复制链接]

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-4-3 19:18 | 显示全部楼层 |阅读模式

0 (5).jpg

配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240)

此内容由EEWORLD论坛网友eagler8原创,如需转载或用于商业用途需征得作者同意并注明出处



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 19:24 | 显示全部楼层

ST7789驱动器芯片2.4寸LCD屏(24P 320X240)
主要参数

 

1. 模块名称:液晶显示模块
2. 型号:KD024C-4
3. 同类型型号: 
4. 兼容型号:
5. 显示模式:TFT
6. 显示色彩:65/262K
7. 分辨率: 240*320
8. 点距:0.153 (H) x 0.153 (V)
9. 视角:12:00
10. 控制IC:ST7789V
11. 显示类型:全透型,常白
12. 外形尺寸:42.72*60.26*2.6mm
13. 可视面积:38.32*50.56 mm
14. 点阵区面积:36.72*48.96mm
15. 亮度:300cd/m2
16. 对比度:500
17. 接口类型: 8/9/16/18位8080并口
                   16/18位RGB接口
                    3/4线SPI接口
18. 引脚数:24
19. 引脚距离:0.5mm
20. 连接类型: FPC插接型
21. 工作电压:3.3V
22. 背光灯颜色及类型: 白色LED背光
23. 背光电路:4 LED 并联, 共阳
If=80mA, Vf =3.2V
24. 使用寿命:100000h
25. 工作温度:-20----70°C 
26. 储存温度:-30----80°C 
27. 质量体系认证:ISO9001:2008
28. 产品认证:RoHS



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 19:30 | 显示全部楼层

0 (4).jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 19:33 | 显示全部楼层

0 (7).jpg



回复

使用道具 举报

1万

TA的帖子

133

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2020-4-3 20:03 来自手机 | 显示全部楼层
看上去不错!

点评

谢谢老师鼓励  详情 回复 发表于 2020-4-3 20:18


回复

使用道具 举报

1万

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2020-4-3 20:12 | 显示全部楼层

K210+液晶这个组合不错

点评

是个机器视觉的实验套件  详情 回复 发表于 2020-4-3 20:20


回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:17 | 显示全部楼层

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之一:显示英文

 

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之一:显示英文

import lcd

lcd.init()
lcd.draw_string(100, 100, "hello MicroPython!", lcd.RED, lcd.BLACK)

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:18 | 显示全部楼层

谢谢老师鼓励



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:20 | 显示全部楼层
dcexpert 发表于 2020-4-3 20:12 K210+液晶这个组合不错

是个机器视觉的实验套件



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:25 | 显示全部楼层

06.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:25 | 显示全部楼层

05.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:35 | 显示全部楼层

lcd 屏幕显示驱动

lcd.display(image, roi=Auto)
在液晶屏上显示一张 image(GRAYSCALE或RGB565)。

roi 是一个感兴趣区域的矩形元组(x, y, w, h)。若未指定,即为图像矩形

若 roi 宽度小于lcd宽度,则用垂直的黑色边框使 roi 居于屏幕中心(即用黑色填充未占用区域)。

若 roi 宽度大于lcd宽度,则 roi 居于屏幕中心,且不匹配像素不会显示(即液晶屏以窗口形态显示 roi 的中心)。

若 roi 高度小于lcd高度,则用垂直的黑色边框使 roi 居于屏幕中心(即用黑色填充未占用区域)。

若 roi 高度大于lcd高度,则 roi 居于屏幕中心,且不匹配像素不会显示(即液晶屏以窗口形态显示 roi 的中心)。

roi 是键值参数,必须在函数调用中通过写入 roi= 来显式地调用。



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:48 | 显示全部楼层

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之二:LCD屏显示"hello maixpy"

 

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#测试程序之二:LCD屏显示"hello maixpy"


import lcd, time
import image
 
bg = (236,36,36)
lcd.init(freq=15000000)
lcd.direction(lcd.YX_RLDU)
lcd.clear(lcd.RED)
time.sleep(1)
lcd.draw_string(120, 120, "hello maixpy", lcd.WHITE, lcd.RED)
time.sleep(2)
 
 
img = image.Image()
img.draw_string(60, 100, "hello maixpy", scale=2)
img.draw_rectangle((120,120,30,30))
lcd.display(img)

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 20:50 | 显示全部楼层

07.jpg

 

串口输出 >>> {"w":320, "h":240, "type"="rgb565", "size":153600}
{"w":320, "h":240, "type"="rgb565", "size":153600}

MicroPython v0.5.0-31-gd3e71c0 on 2020-03-13; Sipeed_M1 with kendryte-k210



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 21:15 | 显示全部楼层

lcd 屏幕显示驱动函数

 

1. lcd.init(type=1, freq=15000000, color=lcd.BLACK)
初始化 LCD 屏幕显示

参数
type: LCD 的类型(保留给未来使用):

0: None
1: lcd shield(默认值)
type 是键值参数,必须在函数调用中通过写入 type= 来显式地调用

freq: LCD (实际上指 SPI 的通讯速率) 的频率

color: LCD 初始化的颜色, 可以是 16 位的 RGB565 颜色值,比如 0xFFFF; 或者 RGB888 元组, 比如 (236, 36, 36), 默认 lcd.BLACK

 

2. lcd.clear()
将液晶屏清空为黑色或者指定的颜色。

参数
color: LCD 初始化的颜色, 可以是 16 位的 RGB565 颜色值,比如 0xFFFF; 或者 RGB888 元组, 比如 (236, 36, 36)

 

3. lcd.freq(freq)
设置或者获取 LCD (SPI) 的频率

Paremeters
freq: LCD (SPI) 的频率
Return
LCD 的频率

 

4. lcd.direction(dir)
在 v0.3.1 之后已经被舍弃, 请使用lcd.rotation 和 lcd.invert代替, 如非必要请勿使用, 接口仍会被保留用于调试使用

设置屏幕方向, 以及是否镜像等

参数
dir: 正常情况下推荐 lcd.YX_LRUD 和 lcd.YX_RLDU, 另外还有其它值,交换 XY 或者 LR 或者 DU即可
 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 21:16 | 显示全部楼层

08.gif



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 21:29 | 显示全部楼层

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之三:LCD液晶显示器彩条测试

 

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之三:LCD液晶显示器彩条测试

import lcd,image, time
 
lcd.init(type=1, freq=15000000)
# lcd.init(type=2, freq=20000000)
# lcd.init(type=1, width=320, height=240, invert=True, freq=20000000)
 
img = image.Image(size=(240,240))
 
img.draw_rectangle(0,0,30, 240, fill=True, color=(0xff, 0xff, 0xff))
img.draw_rectangle(30,0,30, 240, fill=True, color=(250, 232, 25))
img.draw_rectangle(60,0,30, 240, fill=True, color=(106, 198, 218))
img.draw_rectangle(90,0,30, 240, fill=True, color=(98, 177, 31))
img.draw_rectangle(120,0,30, 240, fill=True, color=(180, 82, 155))
img.draw_rectangle(150,0,30, 240, fill=True, color=(231, 47, 29))
img.draw_rectangle(180,0,30, 240, fill=True, color=(32, 77, 158))
img.draw_rectangle(210,0,30, 240, fill=True, color=(27, 28, 32))
 
lcd.display(img)
 
count = 500
while count > 0:
    t = time.ticks_ms()
    lcd.display(img)
    print(time.ticks_ms() - t)
    count -= 1

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 21:34 | 显示全部楼层

09.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 21:37 | 显示全部楼层

10 (1).jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-4 09:25 | 显示全部楼层
#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏

 

#实验程序之四:测试Microphone阵列算法

 

#MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
#实验程序之四:测试Microphone阵列算法

from Maix import MIC_ARRAY as mic
import lcd

lcd.init()
mic.init()

while True:
    imga = mic.get_map()
    b = mic.get_dir(imga)
    a = mic.set_led(b,(0,0,255))
    imgb = imga.resize(160,160)
    imgc = imgb.to_rainbow(1)
    a = lcd.display(imgc)
mic.deinit()

 



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-4 11:47 , Processed in 0.582056 second(s), 41 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表