STM32ExampleCode-02-LCD

STM32ExampleCode-02-LCD

1. 简介

文章教程采用的是一块1.8寸的SPI通信的TFT LCD,分辨率128*160,驱动IC为ST7735S,具体见下图:
1682067180085

2.下载例程

完整例程下载:Gitee下载:STM32ExampleCode_02_LCD

article002_02.png

3. LCD驱动

在目录“\HARDWARE”下有一个LCD驱动文件:
image-1682067242532
其中lcd.c、lcd.h、lcd_init.c、lcd_init.h完成的是LCD初始化基本配置与LCD的基本功能的实现,如修改引脚等。
image-1682067265656
lcd_picture文件中包含用户需要的字模和位图等
1682067276511

4. 图片取模软件

黑白的位图取模方式可以参考在“STM32ExampleCode_01_OLED"文章中的PCtoLCD2002.exe的使用方法,主要区别就是在本次的例程中,导出设置为:
1682067358470
image-1682067381855
然后将生成的字模数据保存到lcd_picture.h中的汉字数组hanzi16[][32]中,如下图所示:
image-1682067407254

4. 图片取模软件Image2Lcd

由于我们使用的是LCD 彩屏,我们可以对彩色图片进行取模并显示在屏幕上,针对彩色图片的取模,使用的是Image2Lcd软件。

1)准备JPEG图片

准备一个我们需要的JPG文件,例如IOT趣制作logo.jpg文件
image-1682067451908

2) 下载软件

Image2Lcd点击下载(源于网络)

3) 打开软件

点击左上角“打开”,选择上面的图片。
image-1682067469008
image-1682067477895

4)调整输出设置

按下图调整输出设置,然后点击保存:
image-1682067483599
image-1682067489832

5)导入图形数据

将生成的数组拷贝到lcd_picture.h中
image-1682067527022

5. 主函数添加初始化与显示

/*
*********************************************************************************************************
* 函 数 名: main
* 功能说明: 主函数
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************
*/
int main(void)
{
	delay_init();						//delay初始化
	uart_init(115200);		
	printf("OK\r\n");
	
	LCD_Init();										//LCD初始化	
	LCD_Clear_color(LGRAYBLUE);		//LCD刷新全屏,填充背景色
	
	LCD_Fill(0,0,128,16,LIGHTGREEN);		//LCD刷新状态栏
	
	//显示彩色图片
	LCD_Image(32,32, 64, 64,gImage_funiot_logo); 
	//显示单色图片
	LCD_Draw_Picture(0,0, 16, 16, xinhaoBMP16,LIGHTGREEN);       			// 单色图片显示函数:状态栏"定位"logo
	
	//显示字符串或数字"Time:08:33"(模拟时间)
	LCD_ShowString(60,2,(const unsigned char *)"Time:08:33",BLACK,LIGHTGREEN,12,0);		//LCD状态栏显示“Time:08:33”
	LCD_ShowString(30,100,(const unsigned char *)"IOT",BLACK,LGRAYBLUE,16,0);					//LCD状态栏显示“IOT”
		//显示汉字(单色位图)
	LCD_Draw_Picture(55,100, 55+16, 100+16, hanzi16[0],LGRAYBLUE);         		// 显示文字:趣
	LCD_Draw_Picture(55+16,100, 55+16*2, 100+16, hanzi16[1],LGRAYBLUE);    		// 显示文字:制
	LCD_Draw_Picture(55+16*2,100, 55+16*3, 100+16, hanzi16[2],LGRAYBLUE);  		// 显示文字:作

	while(1)
	{
		delay_ms(400);
	}
}

6. 编译烧录运行

db11fee37ad66df7bb9c47d5c2eddc7


Licensed under CC BY-NC-SA 4.0