XR806開發板ST7789LCD屏幕測試
1
屏幕硬件
連接
本文使用的LCD屏幕的原理圖如下,可以確定LCD屏幕的控制引腳接線。
XR806與LCD屏幕的控制引腳分布如下
實際的連接效果如圖所示
2
驅動編寫
ST7789的驅動使用中景園的LCD驅動庫,驅動文件包括:
lcd.c
lcd.h
lcd_init.c
lcd_init.h
lcd_font.h
在XR806的示例程序中GPIO工程的基礎上進行移植。在gpio示例文件夾中添加lcd的驅動代碼。
移植時要實現對LCD引腳的控制,在lcd_init.h中添加以下代碼
#include "driver/chip/hal_gpio.h" #include "kernel/os/os.h" #define LCD_SCLK_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_7, GPIO_PIN_LOW) #define LCD_SCLK_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_7, GPIO_PIN_HIGH) #define LCD_MOSI_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_4, GPIO_PIN_LOW) #define LCD_MOSI_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_4, GPIO_PIN_HIGH) #define LCD_RES_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_5, GPIO_PIN_LOW) #define LCD_RES_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_5, GPIO_PIN_HIGH) #define LCD_DC_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_3, GPIO_PIN_LOW) #define LCD_DC_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_3, GPIO_PIN_HIGH) #define LCD_CS_Clr() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_6, GPIO_PIN_LOW) #define LCD_CS_Set() HAL_GPIO_WritePin(GPIO_PORT_B, GPIO_PIN_6, GPIO_PIN_HIGH) //硬件上沒有給出控制接口,這里不做定義 #define LCD_BLK_Clr() #define LCD_BLK_Set()
在lcd_init.c中添加引腳的初始化函數,并替換延時函數為OS_MSleep,相關的代碼如下:
#include "lcd_init.h" void LCD_GPIO_Init(void) { GPIO_InitParam param; param.driving = GPIO_DRIVING_LEVEL_1; param.mode = GPIOx_Pn_F1_OUTPUT; param.pull = GPIO_PULL_NONE; HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_3, ¶m); HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_4, ¶m); HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_5, ¶m); HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_6, ¶m); HAL_GPIO_Init(GPIO_PORT_B, GPIO_PIN_7, ¶m); } void LCD_Init(void) { LCD_GPIO_Init(); LCD_RES_Clr(); OS_MSleep(100);//替換延時函數 LCD_RES_Set(); OS_MSleep(100); //以下代碼忽略 }
在main.c中添加以下代碼
int main(void) { LCD_Init(); OS_MSleep(100); LCD_Fill(0, 0, LCD_W, LCD_H, RED); // LCD_ShowString(4, 0, "XR806 LCD Test", RED, CYAN, 16, 0); LCD_DrawRectangle(0, 0, LCD_W - 1, LCD_H - 1, MAGENTA); LCD_DrawRectangle(1, 1, LCD_W - 2, LCD_H - 2, MAGENTA); while (1) { OS_MSleep(1000); LCD_Fill(0, 0, LCD_W, LCD_H, BLUE); OS_MSleep(1000); LCD_Fill(0, 0, LCD_W, LCD_H, GREEN); OS_MSleep(1000); LCD_Fill(0, 0, LCD_W, LCD_H, YELLOW); OS_MSleep(1000); LCD_Fill(0, 0, LCD_W, LCD_H, LIGHTGREEN); printf("XR806 LCD Test "); } return 0; }
3
屏幕驅動
效果
編譯下載后,可以看到屏幕的顏色切換以及串口的數據輸出
審核編輯:劉清
-
LCD屏
+關注
關注
0文章
126瀏覽量
15832 -
GPIO
+關注
關注
16文章
1246瀏覽量
53386 -
串口輸出
+關注
關注
0文章
16瀏覽量
7616 -
xr806
+關注
關注
0文章
14瀏覽量
1421
原文標題:XR806開發板進行ST7789LCD屏幕測試
文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
基于全志XR806開發板的家用環境監測傳感器設計

評論