概述
在嵌入式領域,TFT-LCD屏是最常用的顯示解決方案之一,因為它們提供了豐富的顏色和高分辨率的圖像顯示能力。RA4M2作為瑞薩的微控制器系列,具備了強大的處理能力和多種通信接口,非常適合于驅動TFT-LCD顯示屏,該液晶屏st7796或者ILI9488驅動芯片,這兩個屏幕都是兼容的。
最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請:615061293 。
視頻教學
[https://www.bilibili.com/video/BV1Wu4y1W7ig/]
csdn課程
csdn課程更加詳細。
[https://edu.csdn.net/course/detail/36131]
樣品申請
[https://www.wjx.top/vm/wBbmSFp.aspx#]
完整代碼下載
[https://download.csdn.net/download/qq_24312945/88477148]
屏幕接口
屏幕接口如下所示,此分辨率的屏幕提供了320個水平像素和480個垂直像素,使其成為中小型應用的理想選擇。
接線方式
新建工程
工程模板
保存工程路徑
芯片配置
本文中使用R7FA4M2AD3CFP來進行演示。
工程模板選擇
時鐘配置
開發板上的外部高速晶振為12M,需要修改XTAL為12M.
開始SPI配置
點擊Stacks->New Stack->Connectivity->SPI (r_sci_spi)。
SPI屬性配置
IO配置
添加RES、DC、CS、BLK管腳。
頭文件定義
添加對應頭文件。
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"
回調函數
在回調函數中添加發送完畢的判斷。
fsp_err_t err = FSP_SUCCESS;
volatile bool g_transfer_complete = false;
void sci_spi_callback (spi_callback_args_t * p_args)
{
if (SPI_EVENT_TRANSFER_COMPLETE == p_args- >event)
{
g_transfer_complete = true;
}
}
lcd_init.c
這個文件主要是提供TFT LCD顯示屏(基于ILI9488驅動芯片)與RA4M2系列微控制器之間的交互功能。
void LCD_Writ_Bus(uint8_t dat): 此函數用于將8位數據通過SPI發送到LCD。先前使用的是位操作來手動發送數據,但現在改用R_SCI_SPI_Write來處理。
左邊為所提供的代碼,右邊為修改為R_SCI_SPI_Write發送。
lcd.c
這段代碼主要是為液晶屏(LCD)提供圖形和文字顯示的功能。
有如下的功能。
LCD_Fill 函數:
用于在指定的區域內填充特定的顏色。
LCD_DrawPoint 函數:
在液晶屏的指定位置畫一個點,并給這個點賦予指定的顏色。
LCD_DrawLine 函數:
畫一條從起始坐標到終止坐標的直線,并給這條線賦予指定的顏色。
LCD_DrawRectangle 函數:
畫一個矩形框,用戶可以指定框的起始坐標、終止坐標和顏色。
Draw_Circle 函數:
畫一個圓,用戶可以指定圓心坐標、半徑和顏色。
LCD_ShowChinese 函數:
用于在液晶屏上顯示漢字串。根據給定的字號,這個函數會選擇對應大小的漢字字庫來顯示漢字。
LCD_ShowChinese12x12、LCD_ShowChinese16x16、LCD_ShowChinese24x24 函數:
這三個函數是為不同大小的漢字(如12x12、16x16、24x24)提供的顯示功能。每個函數都會查找對應的字庫來為特定大小的漢字進行顯示。
LCD_ShowChinese32x32:此函數用于顯示一個32x32的漢字。它首先查找與輸入匹配的漢字,然后顯示該漢字。您可以選擇疊加或非疊加模式來顯示。
LCD_ShowChar:此函數用于顯示一個字符。它根據輸入字符的尺寸(如12x6、16x8等)調用相應的字符數組,并在LCD上顯示該字符。同樣,您可以選擇疊加或非疊加模式來顯示。
LCD_ShowString:此函數用于顯示一個字符串。它調用LCD_ShowChar函數逐字符地顯示整個字符串。
mypow:這是一個簡單的數學函數,用于計算m的n次方。
LCD_ShowIntNum:此函數用于顯示一個整數。它會將整數分解成單獨的數字,并使用LCD_ShowChar函數逐一顯示。
LCD_ShowFloatNum1:此函數用于顯示一個浮點數(具有兩位小數)。它首先將浮點數轉換為整數,然后按上述方式顯示該整數,同時在適當的位置插入小數點。
LCD_ShowPicture:此函數用于顯示一張圖片。它接受一個圖片數組作為輸入,該數組包含圖片的RGB值,并將圖片數據寫入LCD。
設置區域顏色
設置區域顏色可以使用LCD_Fill函數,設置全屏顏色如下所示。
err = R_SCI_SPI_Open(&g_spi0_ctrl, &g_spi0_cfg);
assert(FSP_SUCCESS == err);
LCD_Init();//LCD初始化
LCD_Fill(0,0,320,480,RED) ;
LCD_Fill(0,0,320,480,WHITE) ;
顯示字符串
調用LCD_ShowChar函數逐字符地顯示整個字符串。
LCD_Init();//LCD初始化
LCD_Fill(0,0,320,480,RED) ;
LCD_Fill(0,0,320,480,WHITE) ;
LCD_ShowString(0,0,"RA4M2",BLACK,RED,24,0);
LCD_ShowString(32,32,"HELLO!",BLACK,WHITE,24,0);
顯示漢字
LCD_ShowChinese 函數用于在液晶屏上顯示漢字串。根據給定的字號,這個函數會選擇對應大小的漢字字庫來顯示漢字
使用取模軟件進行漢字字模生成,設置如下所示。
輸入需要取模的漢字,這里設置大小為32*32.
將字模復制到例程lcdfont.h文件夾 如下數組內
注:每個字的字模前需要添加這個漢字,并用雙引號括起來然后加上逗號!
驅動代碼如下所示。
/* USER CODE BEGIN 2 */
LCD_Init();//LCD初始化
LCD_Fill(0,0,320,480,RED) ;
LCD_Fill(0,0,320,480,WHITE) ;
LCD_ShowString(0,0,"RA4M2",BLACK,RED,24,0);
LCD_ShowString(32,32,"HELLO!",BLACK,WHITE,24,0);
LCD_ShowChinese32x32(0,64,"記",RED,GREEN,32,0);
LCD_ShowChinese32x32(32,64,"帖",RED,GREEN,32,0);
/* USER CODE END 2 */
顯示圖片
LCD_ShowPicture此函數用于顯示一張圖片。它接受一個圖片數組作為輸入,該數組包含圖片的RGB值,并將圖片數據寫入LCD。
打開Img2Lcd軟件,設置如下所示,需要注意的是24位真彩色。
24位真彩色配置如下所示。
配置好分辨率之后點擊一下小箭頭,最下方會出現輸出的實際比例。
然后點擊保存,然后將生成的數組復制到到例程pic.h文件內。
驅動代碼如下所示。
while (1)
{
LCD_ShowPicture(0,0,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(0,0,120,180,WHITE) ;
LCD_ShowPicture(40,60,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(40,60,160,240,WHITE) ;
LCD_ShowPicture(80,120,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(80,120,200,300,WHITE) ;
LCD_ShowPicture(120,180,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(120,180,240,360,WHITE) ;
LCD_ShowPicture(160,240,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(160,240,280,420,WHITE) ;
LCD_ShowPicture(200,300,120,180,gImage_2);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);
LCD_Fill(200,300,320,480,WHITE) ;
}
結果演示
審核編輯 黃宇
-
驅動
+關注
關注
12文章
1838瀏覽量
85262 -
瑞薩
+關注
關注
35文章
22308瀏覽量
86240 -
SPI
+關注
關注
17文章
1706瀏覽量
91507 -
TFT-LCD
+關注
關注
13文章
151瀏覽量
31800
發布評論請先 登錄
相關推薦
評論