ILI9341_SPI屏的使用教程目錄
引言
最近我們在做STM32單片機的實訓,實訓中用到了ILI9341_SPI屏,但是老師給的標準庫的spi庫,雖然標準庫我也會一點,但是因爲種種原因(比如可能是因爲懶)我在使用STM32CubMX,因此我試着把ILI9341_SPI的標準庫程序移植到了HAL庫上。
例程鏈接: STM32HAL庫ILI9341_SPI例程及用到取模軟件.
接線
STM32CubMX配置
如果不使用STM32CubMX可以跳過直接看移植過程
先創建一個STM32CubMX(芯片我用的STM32F103C6)工程,創建工程、設置時鐘、設置IDE、設置分.c/.h輸出,前面的我就不演示了,設置完後再將ILI9341_SPI屏用到的幾個引腳爲輸出模式(如下圖),引腳連接在前面,然後生成代碼。這裏我的引腳最大輸出速度設置的是高,但是在後面顯示圖片的時候發現圖片亂碼,檢查後發現因爲我設置的40MHZ的內部時鐘,而引腳最大輸出速度設置爲高好像是50MHZ,改爲Medium,就可以正常顯示了,這裏根據自己設置的時鐘主頻來選擇引腳最大輸出速度
ILI9341_SPI庫函數移植
將ILI9341_SPI程序複製到生成代碼的文件夾中
在工程中添加ILI9341_SPI庫
## 代碼移植
在main.c中添加:
#include "sys.h"
#include "lcd.h"
#include "spi.h"
#include "GUI.h"
在main.h中添加:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define delay_ms(x) HAL_Delay(x)
#define Delay_ms(x) HAL_Delay(x)
編譯一下程序就算好了
顯示字符串例程
在main函數中添加
LCD_Init();
Show_Str(0,16,BLACK,0XFFFF,(u8 *)"666666",16,1);
Show_Str函數的具體使用方法自己看函數說明吧,挺詳細的
效果演示:
進階操作
顯示中文字符
想要在LCD屏上默認只能顯示英文字符和數字,想要顯示中文要在取字模軟件中取字模添加到font.h中
打開取字模軟件,選擇取模方式: 橫向取模、 字節不倒敘
輸入要顯示的中文後按下Ctrl+Enter
設置取模方式生成點陣
移植點陣
將生成的點陣放到font.h中,可以再GUI.c中找到該頭文件跳轉進去,找到tfont16(可能是因爲生成的是1616的點陣,下面還有tfont24、tfont32可能對應的2424的點陣和32*32的點陣,這個我沒用到,有大佬知道可以在評論區說一下)數組將點陣按照下列格式放入該數組:
效果演示
顯示圖片
調整圖片大小
使用畫圖打開要顯示的圖片,按像素重新調整大小爲合適尺寸(不要超過屏幕大小)
圖片取模
打開圖片取模軟件按下圖設置給圖片取模:
將生成的.h文件保存到ILI9341_SPI\Photo文件夾中:
使用方法
在main.c中包含頭文件:
#include "test.h"
在mainz函數中加入函數:
Paint_Bmp(0,48,100,87,gImage_test); //圖片左上角座標(0,48),圖片大小100*87,test.h中的數組gImage_test
編譯後如果沒有出錯就完成了