【雕爺學(xué)編程】MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

配套 2.4寸LCD屏 ST7789驅(qū)動器芯片(24P 320X240)


ST7789驅(qū)動器芯片2.4寸LCD屏(24P 320X240)

主要參數(shù)

1. 模塊名稱:液晶顯示模塊

2. 型號:KD024C-4

3. 同類型型號:?

4. 兼容型號:

5. 顯示模式:TFT

6. 顯示色彩:65/262K

7. 分辨率: 240*320

8. 點(diǎn)距: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. 點(diǎn)陣區(qū)面積:36.72*48.96mm

15. 亮度:300cd/m2

16. 對比度:500

17. 接口類型: 8/9/16/18位8080并口

? ?? ?? ?? ?? ?? ? 16/18位RGB接口

? ?? ?? ?? ?? ?? ???3/4線SPI接口

18. 引腳數(shù):24

19. 引腳距離:0.5mm

20. 連接類型: FPC插接型

21. 工作電壓:3.3V

22. 背光燈顏色及類型: 白色LED背光

23. 背光電路:4 LED 并聯(lián), 共陽

If=80mA, Vf =3.2V

24. 使用壽命:100000h

25. 工作溫度:-20----70°C?

26. 儲存溫度:-30----80°C?

27. 質(zhì)量體系認(rèn)證:ISO9001:2008

28. 產(chǎn)品認(rèn)證:RoHS



#MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

#測試程序之一:顯示英文


#MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

#測試程序之一:顯示英文

import lcd

lcd.init()

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


lcd 屏幕顯示驅(qū)動

lcd.display(image, roi=Auto)

在液晶屏上顯示一張 image(GRAYSCALE或RGB565)。

roi 是一個感興趣區(qū)域的矩形元組(x, y, w, h)。若未指定,即為圖像矩形

若 roi 寬度小于lcd寬度,則用垂直的黑色邊框使 roi 居于屏幕中心(即用黑色填充未占用區(qū)域)。

若 roi 寬度大于lcd寬度,則 roi 居于屏幕中心,且不匹配像素不會顯示(即液晶屏以窗口形態(tài)顯示 roi 的中心)。

若 roi 高度小于lcd高度,則用垂直的黑色邊框使 roi 居于屏幕中心(即用黑色填充未占用區(qū)域)。

若 roi 高度大于lcd高度,則 roi 居于屏幕中心,且不匹配像素不會顯示(即液晶屏以窗口形態(tài)顯示 roi 的中心)。

roi 是鍵值參數(shù),必須在函數(shù)調(diào)用中通過寫入 roi= 來顯式地調(diào)用。


#MicroPython動手做(05)——零基礎(chǔ)學(xué)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)



lcd 屏幕顯示驅(qū)動函數(shù)

1. lcd.init(type=1, freq=15000000, color=lcd.BLACK)

初始化 LCD 屏幕顯示

參數(shù)

type: LCD 的類型(保留給未來使用):

0: None

1: lcd shield(默認(rèn)值)

type 是鍵值參數(shù),必須在函數(shù)調(diào)用中通過寫入 type= 來顯式地調(diào)用

freq: LCD (實際上指 SPI 的通訊速率) 的頻率

color: LCD 初始化的顏色, 可以是 16 位的 RGB565 顏色值,比如 0xFFFF; 或者 RGB888 元組, 比如 (236, 36, 36), 默認(rèn) lcd.BLACK

2. lcd.clear()

將液晶屏清空為黑色或者指定的顏色。

參數(shù)

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

3. lcd.freq(freq)

設(shè)置或者獲取 LCD (SPI) 的頻率

Paremeters

freq: LCD (SPI) 的頻率

Return

LCD 的頻率

4. lcd.direction(dir)

在 v0.3.1 之后已經(jīng)被舍棄, 請使用lcd.rotation 和 lcd.invert代替, 如非必要請勿使用, 接口仍會被保留用于調(diào)試使用

設(shè)置屏幕方向, 以及是否鏡像等

參數(shù)

dir: 正常情況下推薦 lcd.YX_LRUD 和 lcd.YX_RLDU, 另外還有其它值,交換 XY 或者 LR 或者 DU即可


#MicroPython動手做(05)——零基礎(chǔ)學(xué)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


#MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

#實驗程序之四:測試Microphone陣列算法

fromMaiximportMIC_ARRAYasmic

importlcd

lcd.init()

mic.init()

whileTrue:

? ? 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()



#MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

#實驗程序之五:圖形與hello maixpy

import lcd, time

import image

bg = (236,36,36)

lcd.init(freq=15000000)

lcd.direction(lcd.YX_RLDU)

img = image.Image()

img.draw_string(60, 100, "hello maixpy", scale=2)

img.draw_rectangle((120,120,30,30))

img.draw_circle((150,140, 80))

img.draw_cross((250,40))

img.draw_arrow((250,200,20,200), color=(236,36,36))

lcd.display(img)


#MicroPython動手做(05)——零基礎(chǔ)學(xué)MaixPy之LCD液晶屏

#實驗程序之六:碰碰球演示

import image, lcd

lcd.init(freq=20000000)

i = 0

dir = 1

while(True):

? ? img = image.Image(copy_to_fb=1)

? ? img.clear()

? ? img.draw_rectangle(i,50,50,50)

? ? lcd.display(img)

? ? if dir:

? ?? ???i += 5

? ?? ???if i==270:

? ?? ?? ???dir = 0

? ? else:

? ?? ???i -= 5

? ?? ???if i==0:

? ?? ?? ?? ?dir = 1


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容