TFT-LCD屏幕显示图片

这篇具有很好参考价值的文章主要介绍了TFT-LCD屏幕显示图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

TFT-LCD屏幕显示图片

TFT_LCD显示图片时,图片大小选择要适配屏幕大小,如果要竖屏显示的话,则屏幕宽x高为240x320,所以图片也要找240x320的,

如果是横屏显示,则屏幕宽x高为320x240,所以图片也要找320x240的

图片取模软件 —— Image2Lcd v2.9

因为本次实验是竖屏显示,所以先在网上找一张240x320的图片,然后用图片取模软件打开

lcd显示图片,TFT-LCD,单片机,stm32,嵌入式硬件,学习

输出数据类型选择C语言数据,扫描模式为水平,输出灰度默认是单色的,因为屏幕是16位的,所以要改为16位真彩色,最大宽度和高度与图片一致,取消包含图像头数据,勾选高位在前,这与后面编写代码有关,然后点击下方的16位彩色,在颜色位数上选择RGB565的数据格式;然后就可点击保存,命名为Picture1.h,文件里会有图片的取模数据,后续在代码中导入该头文件直接使用即可

代码

Picture1.h

这个数组就是用取模软件取出的图片数据,数据比较大,有153600个字节,差不多150KB,一定要用const修饰,放到STM32的内部Flash中,因为图片大小为320*240个像素点,每个像素点由16位确定,共两个字节,所以320 * 240 * 2 = 153600

STM32F103ZET6的Flash大小为512KB,所以同样大小的图片最多只能存放三张;如果用外部Flash芯片如16M或者64M大小的,则可以放更多的图片

const unsigned char gImage_Picture1[153600] = { /* 0X10,0X10,0X00,0XF0,0X01,0X40,0X01,0X1B, */
0XA4,0X0C,0X93,0XCB,0XA4,0X2D,0XAC,0X8E,0XA4,0X0C,0XA4,0X0C,0XB4,0X8E,0XBC,0XAE,
0XAC,0X2D,0XBC,0XAE,0XC4,0XEF,0X8B,0X49,0X8B,0X48,0XAC,0X2C,0XC4,0XCE,0XC4,0XAE,
0XC4,0XCE,0XCC,0XEE,0XC4,0X8D,0XDD,0X50,0XD5,0X50,0XC4,0XAE,0XAB,0XEB,0XC4,0XCE,
0XCC,0XEF,0XA3,0XEB,0XC4,0XCF,0XEE,0X14,0XD5,0X30,0XBC,0X6D,0XCC,0XCE,0XCC,0XEF,
TFT_LCD.c

在前面显示中英文代码基础上增加这个显示图片的函数

首先同样要设置窗口,然后用switch语句判断图片序号,用一个常量指针指向不同图片序号的图片数组;再逐行写入图片数据

/**
 * @name   LCD_ShowPicture
 * @brief  LCD屏幕显示图片
 * @param  usXstar:窗口起点x轴坐标
 * 			usYstar:窗口起点y轴坐标
 * 			usPicH:图片的水平分辨率
 * 			usPicV:图片的垂直分辨率
 * 			ucPicNum:图片序号
 * @retval None  
 */
static void LCD_ShowPicture(uint16_t usXstar,uint16_t usYstar,uint16_t usPicH,uint16_t usPicV,uint8_t ucPicNum)
{
	uint32_t uiIndex;
	const uint8_t * pcPic = NULL;
	//设置窗口大小
	LCD_SetWindows(usXstar,usYstar,usPicH,usPicV);

	//获取图像数据首地址
	switch (ucPicNum)
	{
		case 1: pcPic = gImage_Picture1;break;
		case 2: pcPic = gImage_Picture2;break;
		case 3: pcPic = gImage_Picture3;break;
		default: pcPic = gImage_Picture1;break;
	}
	
	//逐行写入图片数据
	/*
	因为TFT-LCD屏幕是16位的,即每个像素点的数据是16位,占两个字节,usPicH*usPicV表示图片共有多少个像素点,
	总共的像素点乘以2就表示图片取模数组里字节的个数,如240*320*2 = 153600
	*/
	for(uiIndex=0;uiIndex<usPicH*usPicV*2;uiIndex+=2)
	{
		//因为图片取模时是数据高位在前,每次都是写两个字节(16位),所以要将第一个字节左移8位,再或上第二个字节作低8位
		LCD_WRITE_DATA((pcPic[uiIndex]<<8) | pcPic[uiIndex+1]);
	}
}
System.c

系统运行函数中直接调用TFT_LCD显示图片函数,x,y轴的坐标都是从0开始,传入屏幕的宽240,高320,图片序号为1,烧录代码后便能显示图片,代码量比较大,烧录慢要等待

/*
* @name   Run
* @brief  系统运行
* @param  None
* @retval None   
*/
static void Run()
{
  TFT_LCD.LCD_ShowPicture(0,0,LCD_WIGHT,LCD_HIGHT,1);             //屏幕显示图片
}

显示效果

图片1
lcd显示图片,TFT-LCD,单片机,stm32,嵌入式硬件,学习
图片2
lcd显示图片,TFT-LCD,单片机,stm32,嵌入式硬件,学习文章来源地址https://www.toymoban.com/news/detail-785766.html

到了这里,关于TFT-LCD屏幕显示图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX教程22 FSMC - 8080并行接口TFT-LCD驱动

    开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 XCOM V2.6串口助手 使用STM32CubeMX软件配置STM32F407开发板 FSMC接口驱动8080并行接口TFT-LCD显示 ,具体为使用FSMC Bank 1-NOR/PSRAM4,片选信号为NE4(PG12),TFT-L

    2024年01月23日
    浏览(48)
  • 使用python和单片机驱动lcd屏幕

    驱动屏幕的单片机的选择取决于你的具体需求和屏幕的接口类型。根据搜索结果¹²,一般来说,有以下几种常见的驱动方式: SPI接口:使用4根线(CS、SCL、SDA、DC)进行通信,速度较快,占用端口较少,适合用于分辨率较低的屏幕,如ST7789、ST7735等。 IIC接口:使用2根线(

    2024年02月09日
    浏览(44)
  • ESP32 入门笔记08:1.54寸(240*240)彩色TFT 显示高清IPS LCD 屏幕 SPI接口

    TFT 一般指薄膜晶体管。 薄膜晶体管(Thin Film Transistor,简称TFT)是一种器件。 ZJY154T-PG04厚.pdf ST7789VW芯片手册.pdf (见资料下载处) ST7789屏幕驱动电路图 参考:ESP32 入门笔记01:乐鑫ESP32-DevKitC开发板信息、开发环境搭建以及学资料准备 参考:使用DOIT ESP32 DEVKIT V1驱动屏幕ST7789

    2023年04月12日
    浏览(57)
  • 【快速上手STM32】SPI通信协议&&1.8寸TFT-LCD(ST7735S)

    SPI,英文全称Serial Peripheral Interface,即串行外围设备接口,是一种高速、全双工、同步的串行通信总线。 我们之前说过I2C,那么我们就拿I2C和SPI做个对比。 SPI和I2C对比,优势在于SPI的传输速率比I2C快得多,劣势在于SPI需要用的通信线比较多。 I2C只需要两根线,而SPI至少需要

    2024年04月27日
    浏览(35)
  • 【单片机】16-LCD1602和12864和LCD9648显示器

    (1)显示器,常见显示器:电视,电脑 (2)LCD(Liquid Crystal Display),液晶显示器,原理介绍 (3)LCD应用领域:手机,电脑 (4)将来取代LCD:LED,OLED【全面屏---软性】 1.像素(分辨率) 显示单元【液晶分子】 但是实际上: 像素!=分辨率 比如:出厂时电脑的像素已经确

    2024年02月08日
    浏览(58)
  • 单片机lcd1602的显示

    首先,你需要了解LCD1602的引脚功能。LCD1602有16个引脚,其中包括: Gnd:电源地脚 Vcc:5V电源正极 VL:液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高 RS:寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器 RW:读写信号线,高电平(

    2024年01月17日
    浏览(38)
  • 51单片机矩阵键盘——LCD1602显示

    本次的实验需要用到LCD1602液晶屏,需要用到LCD1602.c 与LCD1602.h文件链接: https://download.csdn.net/download/YLG_lin/86404949 使用矩阵键盘随意按下按键,LCD1602第二行前两位就会显示对应按键按下的数字。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用

    2023年04月09日
    浏览(42)
  • 51单片机 | LCD1602 液晶显示实验

      在前面章节,我们已经学习过几种显示装置,例如静态数码管、动态数码管、 8*8LED 点阵、串口通信。使用它们可以直观显示一些字符数据,但是它们也有各种局限性,比如显示字符数据太少,硬件设计复杂、代码编写难度大等。这一章就来介绍一种非常简单且常用的显

    2023年04月11日
    浏览(60)
  • 51单片机LCD1602液晶屏显示方法

    以显示hello,world!    2022.10.17  为例。 首先把LCD1602的模块化程序添加到项目目录中,模块化方法在51单片机之程序模块化_学习笔记吧的博客-CSDN博客这里可以学习。 实验程序: LCD1602.c文件代码: LCD1602.h文件代码: 把这两个代码,分别添加到LCD1602.c 和 LCD1602.h 文件,然后添加

    2023年04月08日
    浏览(49)
  • 【51单片机练习1——超声波测距+LCD12864显示】

    PS:这是人生中的第一篇博客,记录了我人生中的第一次实习工作。与其说是博客文章,这些更像是一个小白的流水账日记,可能会有很多错误和有待优化的地方,希望各位大佬可以多多提出。如有问题可以私信联系。 行文过程中,欲说尽心中无限事,感慨万千。不过各位“

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包