0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32H5開發(fā)(6)----SPI驅(qū)動TFT-LCD屏

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2023-12-01 16:45 ? 次閱讀

概述

嵌入式領(lǐng)域,TFT-LCD屏是最常用的顯示解決方案之一,因為它們提供了豐富的顏色和高分辨率的圖像顯示能力。STM32H5作為ST的高性能微控制器系列,具備了強大的處理能力和多種通信接口,非常適合于驅(qū)動TFT-LCD顯示屏,該液晶屏st7796或者ILI9488驅(qū)動芯片,這兩個屏幕都是兼容的。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。

樣品申請

[https://www.wjx.top/vm/PpC1kRR.aspx]

視頻教學(xué)

[https://www.bilibili.com/video/BV1JN411s7ni/](

源碼下載

[https://download.csdn.net/download/qq_24312945/88477148]

屏幕接口

屏幕接口如下所示,此分辨率的屏幕提供了320個水平像素和480個垂直像素,使其成為中小型應(yīng)用的理想選擇。
在這里插入圖片描述
在這里插入圖片描述

接線方式

在這里插入圖片描述

STM32CUBEMX配置

主頻配置

屏幕數(shù)據(jù)由spi驅(qū)動,所以主頻需要快點。
在這里插入圖片描述

SPI配置

主要使用SPI的sck和mosi管腳進行時鐘和數(shù)據(jù)的輸出。
在這里插入圖片描述

將IO口速率修改為最快。
在這里插入圖片描述

IO配置

添加RES、DC、CS、BLK管腳。,管腳速率也修改為最快。

在這里插入圖片描述

配置ICACHE

在STM32U5系列微控制器中,ICACHE是指指令緩存(Instruction Cache)。ICACHE是一個硬件緩存單元,用于提高處理器執(zhí)行指令的效率。具體來說,當(dāng)處理器需要執(zhí)行指令時,它首先檢查指令是否已經(jīng)在ICACHE中緩存。如果指令已經(jīng)在ICACHE中緩存,則處理器可以直接從ICACHE中讀取指令,從而避免了從閃存或其他存儲器中讀取指令的時間延遲。
通過使用ICACHE,STM32U5系列微控制器可以顯著提高處理器執(zhí)行指令的速度,從而提高系統(tǒng)的整體性能。在使用ICACHE時,需要特別注意緩存的一致性,以確保指令的正確性和系統(tǒng)的穩(wěn)定性。
在這里插入圖片描述

lcd_init.c

這個文件主要是提供TFT LCD顯示屏(基于ILI9488驅(qū)動芯片)與STM32H5系列微控制器之間的交互功能。
void LCD_Writ_Bus(uint8_t dat): 此函數(shù)用于將8位數(shù)據(jù)通過SPI發(fā)送到LCD。先前使用的是位操作來手動發(fā)送數(shù)據(jù),但現(xiàn)在改用HAL庫函數(shù)HAL_SPI_Transmit來處理。
左邊為所提供的代碼,右邊為修改為HAL_SPI_Transmit發(fā)送。
在這里插入圖片描述

lcd.c

這段代碼主要是為液晶屏(LCD)提供圖形和文字顯示的功能。
有如下的功能。
LCD_Fill 函數(shù):
用于在指定的區(qū)域內(nèi)填充特定的顏色。
LCD_DrawPoint 函數(shù):
在液晶屏的指定位置畫一個點,并給這個點賦予指定的顏色。
LCD_DrawLine 函數(shù):
畫一條從起始坐標(biāo)到終止坐標(biāo)的直線,并給這條線賦予指定的顏色。
LCD_DrawRectangle 函數(shù):
畫一個矩形框,用戶可以指定框的起始坐標(biāo)、終止坐標(biāo)和顏色。
Draw_Circle 函數(shù):
畫一個圓,用戶可以指定圓心坐標(biāo)、半徑和顏色。
LCD_ShowChinese 函數(shù):
用于在液晶屏上顯示漢字串。根據(jù)給定的字號,這個函數(shù)會選擇對應(yīng)大小的漢字字庫來顯示漢字。
LCD_ShowChinese12x12、LCD_ShowChinese16x16、LCD_ShowChinese24x24 函數(shù):
這三個函數(shù)是為不同大小的漢字(如12x12、16x16、24x24)提供的顯示功能。每個函數(shù)都會查找對應(yīng)的字庫來為特定大小的漢字進行顯示。
LCD_ShowChinese32x32:此函數(shù)用于顯示一個32x32的漢字。它首先查找與輸入匹配的漢字,然后顯示該漢字。您可以選擇疊加或非疊加模式來顯示。
LCD_ShowChar:此函數(shù)用于顯示一個字符。它根據(jù)輸入字符的尺寸(如12x6、16x8等)調(diào)用相應(yīng)的字符數(shù)組,并在LCD上顯示該字符。同樣,您可以選擇疊加或非疊加模式來顯示。
LCD_ShowString:此函數(shù)用于顯示一個字符串。它調(diào)用LCD_ShowChar函數(shù)逐字符地顯示整個字符串。
mypow:這是一個簡單的數(shù)學(xué)函數(shù),用于計算m的n次方。
LCD_ShowIntNum:此函數(shù)用于顯示一個整數(shù)。它會將整數(shù)分解成單獨的數(shù)字,并使用LCD_ShowChar函數(shù)逐一顯示。
LCD_ShowFloatNum1:此函數(shù)用于顯示一個浮點數(shù)(具有兩位小數(shù))。它首先將浮點數(shù)轉(zhuǎn)換為整數(shù),然后按上述方式顯示該整數(shù),同時在適當(dāng)?shù)奈恢貌迦胄?shù)點。
LCD_ShowPicture:此函數(shù)用于顯示一張圖片。它接受一個圖片數(shù)組作為輸入,該數(shù)組包含圖片的RGB值,并將圖片數(shù)據(jù)寫入LCD。

設(shè)置區(qū)域顏色

設(shè)置區(qū)域顏色可以使用LCD_Fill函數(shù),設(shè)置全屏顏色如下所示。

/* USER CODE BEGIN 2 */
	LCD_Init();//LCD初始化
	LCD_Fill(0,0,320,480,RED)	;	
	LCD_Fill(0,0,320,480,WHITE)	;	
  /* USER CODE END 2 */

顯示字符串

調(diào)用LCD_ShowChar函數(shù)逐字符地顯示整個字符串。

/* 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,"STM32H5",BLACK,RED,24,0);
	LCD_ShowString(32,32,"HELLO!",BLACK,WHITE,24,0);
	
  /* USER CODE END 2 */

顯示漢字

LCD_ShowChinese 函數(shù)用于在液晶屏上顯示漢字串。根據(jù)給定的字號,這個函數(shù)會選擇對應(yīng)大小的漢字字庫來顯示漢字
使用取模軟件進行漢字字模生成,設(shè)置如下所示。
在這里插入圖片描述

輸入需要取模的漢字,這里設(shè)置大小為32*32.
在這里插入圖片描述

將字模復(fù)制到例程lcdfont.h文件夾 如下數(shù)組內(nèi)
注:每個字的字模前需要添加這個漢字,并用雙引號括起來然后加上逗號!
在這里插入圖片描述

驅(qū)動代碼如下所示。

/* 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,"STM32H5",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);
		HAL_Delay(500);

  /* USER CODE END 2 */

顯示圖片

LCD_ShowPicture此函數(shù)用于顯示一張圖片。它接受一個圖片數(shù)組作為輸入,該數(shù)組包含圖片的RGB值,并將圖片數(shù)據(jù)寫入LCD。
打開Img2Lcd軟件,設(shè)置如下所示,需要注意的是24位真彩色。
在這里插入圖片描述
24位真彩色配置如下所示。
在這里插入圖片描述

配置好分辨率之后點擊一下小箭頭,最下方會出現(xiàn)輸出的實際比例。
在這里插入圖片描述

然后點擊保存,然后將生成的數(shù)組復(fù)制到到例程pic.h文件內(nèi)。
在這里插入圖片描述

驅(qū)動代碼如下所示。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		LCD_ShowPicture(0,0,120,180,gImage_2);	
		HAL_Delay(500);		
		LCD_Fill(0,0,120,180,WHITE)	;			
		LCD_ShowPicture(40,60,120,180,gImage_2);	
		HAL_Delay(500);			
		LCD_Fill(40,60,160,240,WHITE)	;				
		LCD_ShowPicture(80,120,120,180,gImage_2);	
		HAL_Delay(500);			
		LCD_Fill(80,120,200,300,WHITE)	;				
		LCD_ShowPicture(120,180,120,180,gImage_2);		
		HAL_Delay(500);			
		LCD_Fill(120,180,240,360,WHITE)	;		
		LCD_ShowPicture(160,240,120,180,gImage_2);	
		HAL_Delay(500);			
		LCD_Fill(160,240,280,420,WHITE)	;		
		LCD_ShowPicture(200,300,120,180,gImage_2);	
		HAL_Delay(500);
		LCD_Fill(200,300,320,480,WHITE)	;	




    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

結(jié)果演示

在這里插入圖片描述

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10826

    瀏覽量

    352428
  • TFT-LCD
    +關(guān)注

    關(guān)注

    12

    文章

    150

    瀏覽量

    31640
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    278

    瀏覽量

    14618
收藏 人收藏

    評論

    相關(guān)推薦

    STM32H5開發(fā)(2)----新特性

    STM32H5開發(fā)(2)----新特性
    的頭像 發(fā)表于 12-01 14:53 ?570次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(2)----新特性

    STM32H5開發(fā)(3)----電源控制和RCC

    STM32H5開發(fā)(3)----電源控制和RCC
    的頭像 發(fā)表于 12-01 14:59 ?827次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(3)----電源控制和RCC

    瑞薩e2studio(26)----SPI驅(qū)動TFT-LCD

    在嵌入式領(lǐng)域,TFT-LCD是最常用的顯示解決方案之一,因為它們提供了豐富的顏色和高分辨率的圖像顯示能力。RA4M2作為瑞薩的微控制器系列,具備了強大的處理能力和多種通信接口,非常適合于驅(qū)動
    的頭像 發(fā)表于 12-01 16:35 ?637次閱讀
    瑞薩e2studio(26)----<b class='flag-5'>SPI</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>TFT-LCD</b><b class='flag-5'>屏</b>

    瑞薩e2studio----SPI驅(qū)動TFT-LCD

    在嵌入式領(lǐng)域,TFT-LCD是最常用的顯示解決方案之一,因為它們提供了豐富的顏色和高分辨率的圖像顯示能力。RA4M2作為瑞薩的微控制器系列,具備了強大的處理能力和多種通信接口,非常適合于驅(qū)動
    的頭像 發(fā)表于 08-07 17:46 ?1091次閱讀
    瑞薩e2studio----<b class='flag-5'>SPI</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>TFT-LCD</b><b class='flag-5'>屏</b>

    如何使用STM32CubeMX配置STM32F767IGT6 的 LTDC外設(shè)驅(qū)動TFT-LCD

    驅(qū)動 TFT-LCD (RGB)屏幕。1. 準(zhǔn)備工作硬件準(zhǔn)備開發(fā)板:首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是STM32F767IGT6的核心板
    發(fā)表于 08-10 06:02

    如何使用TFT-LCD顯示

    藍橋杯嵌入式開發(fā)板上有一個2.4寸TFT-LCD顯示,在比賽中是必須要使用的模塊,關(guān)于它的驅(qū)動程序,官方已經(jīng)提供了,我們只要學(xué)會如何使用就行了。在
    發(fā)表于 10-27 07:53

    使用STM32CubeMX配置STM32F767IGT6的硬件FMC外設(shè)驅(qū)動TFT-LCD屏幕

    本篇詳細的記錄了如何使用STM32CubeMX配置 STM32F767IGT6 的硬件FMC外設(shè)驅(qū)動TFT-LCD屏幕。1. 準(zhǔn)備工作硬件準(zhǔn)備開發(fā)
    發(fā)表于 11-04 07:08

    如何使用STM32CubeMX驅(qū)動16bit TFT-LCD屏幕

    本篇詳細的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動16bit TFT-LCD
    發(fā)表于 02-09 06:05

    TFT-LCD驅(qū)動IC設(shè)計

    TFT-LCD驅(qū)動IC設(shè)計 Introduction to Liquid-Crystal Display
    發(fā)表于 10-16 13:22 ?103次下載
    <b class='flag-5'>TFT-LCD</b><b class='flag-5'>驅(qū)動</b>IC設(shè)計

    TFT-LCD顯示原理及驅(qū)動介紹的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是TFT-LCD顯示原理及驅(qū)動介紹的詳細資料說明主要內(nèi)容包括了:1.TFT LCD 簡介,2.TFT-LCD 面板
    發(fā)表于 12-14 08:00 ?0次下載
    <b class='flag-5'>TFT-LCD</b>顯示原理及<b class='flag-5'>驅(qū)動</b>介紹的詳細資料說明

    STM32CubeMX | 32-使用硬件FMC驅(qū)動TFT-LCD屏幕(MCU

    本篇詳細的記錄了如何使用STM32CubeMX配置 STM32F767IGT6 的硬件FMC外設(shè)驅(qū)動TFT-LCD屏幕。1. 準(zhǔn)備工作硬件準(zhǔn)備開發(fā)
    發(fā)表于 10-29 09:36 ?30次下載
    <b class='flag-5'>STM32</b>CubeMX | 32-使用硬件FMC<b class='flag-5'>驅(qū)動</b><b class='flag-5'>TFT-LCD</b>屏幕(MCU<b class='flag-5'>屏</b>)

    STM32單片機基礎(chǔ)17——使用硬件SPI驅(qū)動TFT-LCD(ST7789)

    本篇詳細的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動16bit TFT-LCD
    發(fā)表于 11-21 17:21 ?62次下載
    <b class='flag-5'>STM32</b>單片機基礎(chǔ)17——使用硬件<b class='flag-5'>SPI</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>TFT-LCD</b>(ST7789)

    STM32Cube_17】使用硬件SPI驅(qū)動TFT-LCD(ST7789)

    本篇詳細的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件SPI外設(shè)與ST7789通信,驅(qū)動16bit TFT-LCD
    發(fā)表于 12-05 19:36 ?92次下載
    【<b class='flag-5'>STM32</b>Cube_17】使用硬件<b class='flag-5'>SPI</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>TFT-LCD</b>(ST7789)

    STM32CubeIDE TFT-LCD顯示

    隨言:TFT-LCD的8080并口時序可以與ST的FSMC總線上操作SRAM的時序類似。故把TFT-LCD掛在SRAM上就能想操作SRAM一樣操作TFT-LCD顯示了。硬件:STM32
    發(fā)表于 01-17 12:01 ?25次下載
    <b class='flag-5'>STM32</b>CubeIDE <b class='flag-5'>TFT-LCD</b>顯示

    AN2790 TFT-LCD與高密度STM32F10xxxFSMC接口

    AN2790 TFT-LCD與高密度STM32F10xxxFSMC接口
    發(fā)表于 11-24 08:30 ?1次下載
    AN2790 <b class='flag-5'>TFT-LCD</b><b class='flag-5'>屏</b>與高密度<b class='flag-5'>STM32</b>F10xxxFSMC接口