LCD顯示圖片


前言

lcd 顯示圖片 。可做背景,圖片展示,介紹等。

僅此文記錄學習正點原子stm32F407探索者 tftlcd教程 的一段日子

本文使用硬件:正點原子stm32F407探索者、ST-Link

本文使用軟件:Picture2Hex、Keil uVision5 
(Picture2Hex下載地址:https://pan.baidu.com/s/1H1gYlDUg-udoHburyw0Hiw  提取碼:2pqv )

 該下載地址里還包括了exprgb565data【也是rgb565轉換】、WinHex_19.7【**版,可查看文件的編碼】)

使用方法

  1. 准備一張分辨率至少為(200*100)的圖片。

    比如這樣()

  2. 解壓后並打開 Picture2Hex.exe

  3. 設置參數,width、high(高寬與圖片對應)、RGB(必須為RGB565)、File

  4. 在該軟件 work 目錄下就會生成對應的 圖片 和 .c代碼文件

  5. 打開 這個 .c 文件,會發現在數組里有一堆十六進制代碼,這代碼是RBG565顏色代碼,每一個代表一個色塊。
    LOGO_W和LOGO_H分別為寬和高,FRAME_COUT不知道是啥。

  6. 新建logo.h文件,全選(Ctrl+A)logo.c里代碼后復制(Ctrl+C)粘貼(Ctrl+V)到logo.h中,並把logo.h導入keil中(此處不細講了)

  7. 看上圖出現了 紅叉× ,發現是 uint16_t 未定義,此處最簡單方法是改成 unsigned short ,並把這數組的名稱改為 color (其他名稱也行)

  8. 主函數文件里導入 logo.h

  9. 添加函數, color 為 logo.h 里的數組名 (最后介紹下該函數)

  10.  編譯通過即可,如果照片分辨率太大就會出現單片機內存不夠問題, 可見此處:https://blog.csdn.net/Higashino_Keigo/article/details/88559488

函數介紹

貼上源代碼:

//在指定區域內填充指定顏色塊
//(sx,sy),(ex,ey):填充矩形對角坐標,區域大小為:(ex-sx+1)*(ey-sy+1)   
//color:要填充的顏色
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)
{  
	u16 height,width;
	u16 i,j;
	width=ex-sx+1; 			//得到填充的寬度
	height=ey-sy+1;			//高度
 	for(i=0;i<height;i++) {="" lcd_setcursor(sx,sy+i);="" 設置光標的位置="" lcd_writeram_prepare();="" 開始寫入gram="" for(j="0;j<width;j++)" lcd-="">LCD_RAM=color[i*width+j];//寫入數據
	}		  
}  

main.c:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "logo.h" //導入色塊所在的頭文件

int main(void)
{ 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中斷優先級設置
	delay_init(168);      //延時初始化
	uart_init(115200);		//波特率設置
	
 	LCD_Init();           //LCD初始化 FSMC接口初始化
	POINT_COLOR=BLACK;    //LCD畫筆為黑色
	
	LCD_Color_Fill(1,1,LOGO_W,LOGO_H,color); //指定區域填充色塊(color為色塊數組)
	delay_ms(10000);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM