一、簡介
LCD的應用很廣泛,簡單如手表上的液晶顯示屏,儀表儀器上的液晶顯示器或者是電腦筆記本上的液晶顯示器,都使用了LCD。在一般的辦公設備上也很常見,如傳真機,復印機,以及一些娛樂器材玩具等也常常見到LCD的足跡。
本小節使用的是ST7789V, 用于單片驅動262K色圖像TFT-LCD, 包含 720(240*3色) x 320 線輸出, 可以直接以SPI協議, 或者8位/9位/16位/18位并行連接外部控制器。ST7789V顯示數據存儲在片內240x320x18 bits內存中, 顯示內存的讀寫不需要外部時鐘驅動。
接下來先看本案例的實際操作視頻。
二、硬件電路設計
模塊整體硬件電路如圖1所示,電路中包含了電源電路、液晶接口以及小凌派-RK2206開發板連接的相關引腳。
圖1 硬件電路圖
其中,液晶屏ST7789V的相關引腳資源如圖2所示。
圖2 液晶屏ST7789V硬件資源示意圖
其中,LCD液晶屏引腳功能描述,如下表1所示。
表1 LCD液晶屏引腳功能表
序號 |
LCD引腳 |
功能描述 |
1 |
D/C |
指令/數據選擇端,L:指令,H:數據 |
2 |
RESET |
復位信號線,低電平有效 |
3 |
SPI_MOSI |
SPI數據輸入信號線 |
4 |
SPI_CLK |
SPI時鐘信號線 |
5 |
SPI_CS |
SPI片選信號線,低電平有效 |
6 |
GND |
電源地引腳 |
7 |
5V |
5V電源輸入引腳 |
其中,LCD液晶屏與小凌派-RK2206開發板連接如圖3所示。
圖3 2.4寸液晶屏和小凌派-RK2206開發板連接圖
三、軟件設計
本章節將利用小凌派-RK2206開發板上的GPIO和SPI接口方式來點亮2.4寸液晶屏,并實現ASCII字符的顯示及漢字的顯示。
1. 主程序設計
如圖4所示為LCD液晶屏主程序流程圖,開機LiteOS系統初始化后,進入主程序。主程序首先進行GPIO和SPI總線初始化,然后配置LCD液晶屏設備,最后進入循環中。在循環中,主程序控制SPI對LCD液晶屏進行ASCII字符和漢字顯示。
圖4 主程序流程圖
2. LCD初始化程序設計
LCD初始化程序主要分為GPIO和SPI總線初始化,配置LCD兩部分。
其中,GPIO初始化首先用LzGpioInit()函數將GPIO0_PC3初始化為GPIO引腳,然后用LzGpioSetDir()將引腳設置為輸出模式,最后調用LzGpioSetVal()輸出低電平。
SPI初始化首先用SpiIoInit()函數將GPIO0_PC0復用為SPI0_CS0n_M1,GPIO0_PC1復用為SPI0_CLK_M1,GPIO0_PC2復用為SPI0_MOSI_M1。其次調用LzI2cInit()函數初始化SPI0端口。
配置LCD主要是配置ST7789V的工作模式,具體代碼如下所示:
3. LCD的點數據設計
ST7789V采用SPI通信方式,數據傳輸協議如下:
4-Line Serial Interface => 16-bit/pixel(RGB 5-6-5-bit input),65K-Color,3Ah="05h"
數據傳輸時序圖如圖5所示。
圖5 ST7789V液晶屏SPI數據傳輸時序圖
也就是每個像素占用2個字節,RGB為5+6+5。因此,往LCD液晶屏發送某一個像素信息的程序如下所示:
4. LCD的ASCII字符顯示設計
預先將規定字號的ASCII字符的LCD液晶屏像素信息存放于在lcd_font.h源代碼文件中。該表格依照ASCII的數值來存放像素信息。例如:空格的ASCII數值是0x0,則程序將像素放到第一行像素中,如下源代碼所示。
當需要將某一個字號的ASCII字符投射到LCD液晶屏時,程序根據字號大小找到對應的字號的ASCII字符像素表,然后根據ASCII字符的數值找到對應的像素行,最后將該像素行數據依次通過SPI總線發送給LCD液晶屏。如下源代碼所示。
5. LCD的漢字顯示設計
同上原理,程序將某一個特定字號的漢字信息存放于一個數據結構體數組中。該數據結構體包含字體編碼Index和像素數據Msk。具體原代碼如下所示。
通過漢字像素軟件將對應的漢字和像素存放于lcd_font.h文件中。具體源代碼如下所示。
當程序需要將某一個特定字號的漢字投射到LCD液晶屏時,程序就根據對應的字號查找對應字號的tfontXX數組,并將對應的像素行數據發送給LCD液晶屏。具體源代碼如下所示。
四、編譯過程
1、打開sdk下面路徑的文件
/vendor/lockzhiner/rk2206/samples/b4_lcd/lcd_example.c
注意:Gitee已有相關源代碼,請大家根據上述的需求修改相關源代碼。
網址:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/tree/master/vendor/lockzhiner/rk2206/samples/b4_lcd
2、修改編譯腳本
修改 vendor/lockzhiner/rk2206/sample 路徑下 BUILD.gn 文件,指定 lcd_example 參與編譯。
"./b4_lcd:lcd_example",
修改 device/lockzhiner/rk2206/sdk_liteos 路徑下 Makefile 文件,添加 -llcd_example 參與編譯。
hardware_LIBS = -lhal_iothardware -lhardware -llcd_example
3、編譯固件
hb set -root .
hb set
hb build -f
來源:凌智電子
-
lcd
+關注
關注
34文章
4429瀏覽量
167787 -
開發板
+關注
關注
25文章
5081瀏覽量
97692 -
RK2206
+關注
關注
0文章
34瀏覽量
1793
發布評論請先 登錄
相關推薦
評論