《DNK210使用指南 -CanMV版 V1.0》第二十四章 LCD顯示實驗

正点原子發表於2024-09-14

第二十四章 LCD顯示實驗

1)實驗平臺:正點原子DNK210開發板

2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0

3)購買連結:https://detail.tmall.com/item.htm?&id=782801398750

4)全套實驗原始碼+手冊+影片下載地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正點原子官方B站:https://space.bilibili.com/394620890

6)正點原子K210技術交流企鵝群:605557868

本章將介紹初步介紹CanMV下LCD的使用。透過本章的學習,讀者將學習到板載LCD的簡單使用。
本章分為如下幾個小節:
24.1 lcd模組介紹
24.2 硬體設計
24.3 程式設計
24.4 執行驗證

24.1 lcd模組介紹
lcd模組是CanMV內建的模組,lcd模組用於驅動LCD進行一些簡單的顯示或獲取LCD的相關資訊。
lcd模組提供了init()函式,用於初始化LCD,init()函式如下所示:

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

init()用於對LCD進行初始化,初始化時可以傳入部分初始化引數。
type指的是裝置型別,該引數是CanMV的保留引數,不用理會也不可傳入其他非預設值。
freq指的是與LCD通訊的SPI的通訊速率,通常情況下保持預設即可。
color指的是LCD初始化後的全屏顯示的顏色,預設為黑色。
init()函式的使用示例如下所示:

import lcd
lcd.init()

lcd模組提供了width()和height()函式,分別用於獲取LCD的寬度(水平解析度)和高度(垂直解析度),width()和height()函式如下所示:

lcd.width()
lcd.height()

width()和height()函式的使用示例如下所示:

import lcd
width = lcd.width()
height = lcd.height()

lcd模組提供了fill_rectangle()函式,用於繪製一個填充矩形,fill_rectangle函式如下所示:

lcd.fill_rectangle(x, y, w, h, color)

x、y、w和h分別指的是矩形的左上角X和Y座標以及矩形的寬度和高度。
color指的是矩形的填充顏色,該引數可以值元組指定的RGB三個通道的值,如(255,255, 255)或RGB565的整數值,如0x00F8(高低位元組需進行對調),也可以是lcd模組中定義好的顏色常量,如下表所示:


表24.1.1 lcd模組提供的顏色常量

fill_rectangle()函式的使用示例如下所示:

import lcd
lcd.init()
lcd.fill_rectangle(0, 0, 10, 10, lcd.RED)

lcd模組提供了clear()函式,用於清屏LCD顯示,clear()函式如下所示:

lcd.clear(color=lcd.BLACK)

clear()函式用於清屏LCD顯示,即用預設的黑色或指定顏色填充整個LCD螢幕。
color指的是用於填充整個LCD螢幕的顏色,可選引數請見上文中fill_rectangle()函式的color引數描述,若color引數為空,則使用預設的黑色填充整個LCD螢幕。
clear()函式的使用示例如下所示:

import lcd
lcd.init()
lcd.clear(color=lcd.RED)

lcd模組提供了draw_string()函式,用於在LCD上簡單地顯示字串,draw_string()函式如下所示:

lcd.draw_string(x, y, string, fontc=lcd.RED, bgc=lcd.BLACK)

draw_string()函式用於在LCD的指定位置顯示指定的字串,可以指定字串的顏色和背景顏色,但無法指定字串的字型和字號。
x和y分別指的是字串左上角的X和Y座標。
string指的是指定的字串。
fontc和bgc分別指的是字串的字型顏色和背景顏色,可選引數請見上文中fill_rectangle()函式的color引數描述,若fontc或bgc引數為空,則分別使用對應預設的紅色和黑色作為字串的字型顏色和背景顏色。
draw_string()函式的使用示例如下所示:

import lcd
lcd.init()
lcd.draw_string(0, 0, "Hello, DNK210!")

lcd模組提供了display()函式,用於在LCD上顯示一個Image物件,display()函式如下所示:

lcd.display(image, roi, oft)

display()函式用於在LCD的指定位置以指定的大小顯示一個指定的Image物件。
image指的是Image物件,有關image的介紹會在後續的章節中提到,讀者可以暫且認為Image物件就是一張影像。
roi指的是對Image物件感興趣的區域,若未指定,即為影像矩形。
oft指的是偏移座標。
display()函式的使用示例如下所示:

import lcd
import image
img = image.Image(size=(320, 240))
img.draw_rectangle(0, 0, 320, 240, color=(255, 255, 255), fill=True)
img.draw_string(0, 0, "Hello, DNK210!", (255, 0, 0), 2.5)
lcd.init()
lcd.display(img)

lcd模組提供了mirror()函式,用於水平映象LCD的顯示,mirror()函式如下所示:

lcd.mirror(invert)

mirror()函式用於水平映象LCD的顯示,水平映象後,不論是已經顯示再LCD上的畫面或是後續繪製的影像都將以水平映象的方式進行顯示。
invert指的是是否使能LCD的水平映象顯示,當為True時,使能LCD的水平映象顯示,當為False時,禁止LCD的水平映象顯示。
mirror()函式的使用示例如下所示:

import lcd
lcd.init()
lcd.mirror(True)

lcd模組提供了rotation()函式,用於旋轉LCD的顯示,rotation()函式如下所示:

lcd.rotation(dir)

rotation()函式用於旋轉LCD的顯示,旋轉後,不論是已經顯示再LCD上的畫面或是後續繪製的影像都將以設定的旋轉方向進行顯示。
dir指的是LCD旋轉的方向,可選的引數為0~3這四個數,分別對應依次再預設旋轉方向上順時針旋轉90°的方向。
rotation()函式的使用示例如下所示:

import lcd
lcd.init()
lcd.rotation(0)

24.2 硬體設計

24.2.1 例程功能
使用lcd模組初始化LCD,在LCD上顯示一段字串,並不斷更換背景顏色

24.2.2 硬體資源

  1. LCD
    LCD_RD- IO34
    LCD_BL- IO35
    LCD_CS- IO36
    LCD_RST- IO37
    LCD_RS- IO38
    LCD_WR- IO39
    LCD_D0~LCD_D7- SPI0_D0~SPI0_D7

24.2.3 原理圖
本章實驗內容,需要使用到板載的LCD螢幕,正點原子DNK210開發板上的LCD螢幕連線原理圖,如下圖所示:

圖24.2.3.1 LCD螢幕連線原理圖

24.3 程式設計

24.3.1 lcd模組
有關lcd模組的介紹,請見第24.1小節《lcd模組介紹》。

24.3.2 程式流程圖


圖24.3.2.1 LCD顯示實驗流程圖

24.3.3 main.py程式碼
main.py中的指令碼程式碼如下所示:

import lcd
import time
# 初始化LCD
lcd.init()
while True:
    for bg_color in [lcd.WHITE, lcd.BLACK, lcd.BLUE, lcd.MAGENTA, lcd.GREEN, lcd.CYAN, lcd.YELLOW]:
       # 清屏LCD顯示
       lcd.clear(bg_color)
       # 顯示字串
       lcd.draw_string(10, 10, "DNK210", lcd.RED, bg_color)
       lcd.draw_string(10, 20, "LCD", lcd.RED, bg_color)
       lcd.draw_string(10, 30, "ATOM@ALIENTEK", lcd.RED, bg_color)
       time.sleep_ms(1000)

可以看到首先是使用lcd模組對LCD進行初始化,接著在一個迴圈中不斷改變LCD的背景顏色,並在LCD上顯示一段字串。

24.4 執行驗證
將DNK210開發板連線CanMV IDE後,點選CanMV IDE上的“開始(執行指令碼)”按鈕後,可以看到LCD上顯示了一段字串,並不斷地更換背景顏色,如下圖所示:

圖24.4.1 LCD顯示(白色背景)

圖24.4.2 LCD顯示(藍色背景)

相關文章