大家记得转发,让更多的的想要学习的小伙伴看到,还可以关注我,获得更多教程呢!!!
大家记得转发,让更多的的想要学习的小伙伴看到,还可以关注我,获得更多教程呢!!!
至于怎么在显示屏上画线,写字,请点击基础教程帮你点亮屏幕很Easy!
液晶屏显示程序设计
—— 图像显示
By ying悦1SD
演示效果
![11ab16d614854158d7a6a91a4ea72669.png](https://i-blog.csdnimg.cn/blog_migrate/522ba86d50d5b3ad9fe06fef356d0ecf.jpeg)
1. 选取图片
![5bb6991ce45885e6ee230913c6a34ee0.png](https://i-blog.csdnimg.cn/blog_migrate/e5603ce626c59398e736a8987a7a22eb.jpeg)
2. 软件设置
![d6bcaada8b8e8e0bdc09790f80f5bb21.png](https://i-blog.csdnimg.cn/blog_migrate/03aadc2e3413c6688c6beaf5185cbdf1.jpeg)
用Image2lcd获取图像数据
![32ebcb6ab58314eccbc53241ba41231e.png](https://i-blog.csdnimg.cn/blog_migrate/5bc74fb3a29c711e52bafa03a37ba3d1.jpeg)
3.打开文件
1.参数设置
2.设置图像大小后点击箭头确认
2. (注意图片尺寸不能大于240*320)
![e0e9ca8bd6332733f5b0c57b0002c81a.png](https://i-blog.csdnimg.cn/blog_migrate/6e99c25568bb5902b5ac377c519d1e67.jpeg)
用Image2lcd获取图像数据
![c35e08de6cb75eb8eb31d579535336d1.png](https://i-blog.csdnimg.cn/blog_migrate/820acae64071f66041d3871cc6b8d27f.jpeg)
4.保存数据
点击“保存”
![ec02fc8f6e4d0ae66f6a35a010ecbb72.png](https://i-blog.csdnimg.cn/blog_migrate/5926aa495e7f8d586524387256e8c595.jpeg)
![e0e971c75a41376db17a8320df9922ca.png](https://i-blog.csdnimg.cn/blog_migrate/84e6b324dd56f2e2735b68804233b188.jpeg)
保存在.C文件
![2729306aaebc68cf59a215379509de7f.png](https://i-blog.csdnimg.cn/blog_migrate/d0c5cc7d39faf160420856424ced76e8.jpeg)
2. 用Image2lcd获取图像数据
![fbf1e0b8cba4be8ab386af4964a68aa6.png](https://i-blog.csdnimg.cn/blog_migrate/9d71c015737aa234b66cfe57de86f91c.jpeg)
图像宽度图像高度
表头
图像数据:320*240*2=153600字节PicWidthg Im age _ pic[3]* 256 PicHeighg Im age _ pic[5]* 256· g Im age _ pic[2];· g Im age _ pic[4];
图像数据从gImage_pic[8]开始
3. 添加图像数据到工程
在user目录新建文件pic.c,pic.h,复制所有图像数据到pic.c,在pic.h 中申明图像数组。 在需要引用图像数据的c文件中添加 #include “pic.h”
· 在user目录新建文件pic.c,pic.h,复制所有图像数据到pic.c,在pic.h
中申明图像数组。
· 在需要引用图像数据的c文件中添加 #include "pic.h"
4. 设计图像显示函数
![efd42d4436f8d6f0984a67c35cf55c8f.png](https://i-blog.csdnimg.cn/blog_migrate/11bddf3e9217a5275cccc9a1e449af19.jpeg)
void ILI9341_DispImage( uint16_t usX, uint16_t usY, const uint8_t pImage[] ) {uint16_t temp,ImageWidth,ImageHeigh; uint32_t i;ImageWidth = pImage[3]*256+pImage[2];ImageHeigh = pImage[5]*256+pImage[4];ILI9341_OpenWindow ( usX, usY, ImageWidth , ImageHeigh ); ILI9341_Write_Cmd ( macCMD_SetPixel );for(i=0;i
5. 调整液晶屏显示方向
![235e5512c3c2058b61c546e020c4502e.png](https://i-blog.csdnimg.cn/blog_migrate/45b5849a7d1edc0a9416c8d18769d4ad.jpeg)
1. 竖屏
2. 横屏
3. 横屏x翻转
4. 竖屏xy翻转
图像正确打开方式
![4c6a41c0f97626972a1f3353e1e4c538.png](https://i-blog.csdnimg.cn/blog_migrate/889d6eb4dc4ad89c011299faaee8fd2d.jpeg)
· 将图片放入SD卡,直接读取sd卡文件在屏幕上显示,需要知识点:
1. STM32 SDIO接口工作原理
• stm32f10x_sdio.c,stm32f10x_sdio.h
2. fat32文件系统
· 如何从sd卡中查找文件名
3. bmp文件格式
· 如何从bmp文件中读取图像数据
4. jpeg等文件格式及解码算法。
· 如何从经过压缩的图片文件中读取图像数据
设计要求
· 开发板具有3.2寸TFT-LCD显示屏,分辨率为320*240,并提供板级驱动包,提供基本显示设置函数,基本功能函数。在此基础上设计程序,在液晶屏上显示个人简介,要求附本人照片,版式、内容不限。
具体操作(重点来了)配置工程请点击工程配置
第一步添加生成的图像数据(前提是你已经配置好工程)
![5cae653b421e1a1c2f72df39206bf660.png](https://i-blog.csdnimg.cn/blog_migrate/d2022bfda98cf27a6488a217831b022a.jpeg)
第二步添加申明
![23550e9ea7e77108527e3ce47852b623.png](https://i-blog.csdnimg.cn/blog_migrate/35a462c243696d96c503de0761f79480.jpeg)
第三步写入代码
![52e9f7151c6f25fb1f1060ea667f3a49.png](https://i-blog.csdnimg.cn/blog_migrate/cac61318184182131cca54553b2b0d2c.jpeg)
![9e92ce65ea7432f03abb2812f93cf352.png](https://i-blog.csdnimg.cn/blog_migrate/e5087d39f7548617c9e1b9091360bfe9.jpeg)
详细代码:
#include "ui.h"#define LEDRED_ONGPIO_ResetBits(GPIOB, GPIO_Pin_5)#define LEDGREEN_ONGPIO_ResetBits(GPIOB, GPIO_Pin_0)#define LEDGREEN_OFFGPIO_SetBits(GPIOB, GPIO_Pin_0)#define LEDRED_ONGPIO_ResetBits(GPIOB, GPIO_Pin_5)#define LEDRED_OFFGPIO_SetBits(GPIOB, GPIO_Pin_5)u8UICnt=0;u16 Get_TouchKey( void ){u16 KeyTemp;strType_XPT2046_Coordinate Coordinate;if ( ucXPT2046_TouchFlag == 1 ) //Èç¹û´¥ÃþÁËÆÁÄ»{if( UICnt==0 )//UI00´¥ÆÁ¼üʶ±ð{if ( XPT2046_Get_TouchedPoint ( & Coordinate, & strXPT2046_TouchPara ) ) //»ñÈ¡´¥ÃþµãµÄ×ø±ê{if( Coordinate.x>50 && Coordinate.x<150 && Coordinate.y>220 && Coordinate.y<250 )KeyTemp = 101;else if( Coordinate.x>88 && Coordinate.x<152 && Coordinate.y>80 && Coordinate.y<100 )KeyTemp = 102;else if( Coordinate.x>164 && Coordinate.x<228 && Coordinate.y>80 && Coordinate.y<100 )KeyTemp = 103;//...}}else if( UICnt==1 )//UI01´¥ÆÁ¼üʶ±ð{if ( XPT2046_Get_TouchedPoint ( & Coordinate, & strXPT2046_TouchPara ) ) //»ñÈ¡´¥ÃþµãµÄ×ø±ê{if( Coordinate.x>0 && Coordinate.x<=239 && Coordinate.y>0 && Coordinate.y<=320 )KeyTemp = 111;//...}}else if( UICnt==2 )//UI02´¥ÆÁ¼üʶ±ð{if ( XPT2046_Get_TouchedPoint ( & Coordinate, & strXPT2046_TouchPara ) ) //»ñÈ¡´¥ÃþµãµÄ×ø±ê{if( Coordinate.x>0 && Coordinate.x<=239 && Coordinate.y>0 && Coordinate.y<=320 )KeyTemp = 121;//...}}else if( UICnt==3 )//UI03´¥ÆÁ¼üʶ±ð{if ( XPT2046_Get_TouchedPoint ( & Coordinate, & strXPT2046_TouchPara ) ) //»ñÈ¡´¥ÃþµãµÄ×ø±ê{if( Coordinate.x>0 && Coordinate.x<=239 && Coordinate.y>0 && Coordinate.y<=320 )KeyTemp = 131;//...}}//...}else KeyTemp = 0;return KeyTemp;}//UI00 Ö÷½çÃævoid UI00( void ){u16 TouchKey;//1. »æÖÆͼÐνçÃæILI9341_Clear( 0,0,macILI9341_Default_Max_Width,macILI9341_Default_Max_Heigth,macWHITE );ILI9341_DispImage( 0,0,gImage_2);ILI9341_DispString_EN_32(50,220,"Open Lock