1. 使用取模软件对图片取模

取模软件使用Img2LCD,附上下载链接

首先准备一张用于显示的图片,修改图片像素值为240*240
【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_数据
在取模软件中打开图片:
【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_取模_02
【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_TFT-LCD_03
【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_TFT-LCD_04

2. 编写图片显示函数
/**
 * @brief		显示图片函数
 * @param   x,y		起点坐标
 * @param   width	图片宽度
 * @param   height	图片高度
 * @param   p —— 图片缓存数据起始地址
 * @note		Image2Lcd取模方式:C语言数据/水平扫描/16位真彩色(RGB565)/高位在前		其他的不要选
 * @return  none
 */
void LCD_Show_Image(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *p)
{
		uint32_t img_size = width * height * 2;		//图片所占字节数
		uint32_t remain_size = img_size;									//图片每次发送后剩余的字节数
		uint8_t i = 0;
	
		/* 错误检测 */
    if(x + width > LCD_Width || y + height > LCD_Height)
    {
        return;
    }
				
    LCD_Address_Set(x, y, x + width - 1, y + height - 1);

    LCD_WR_RS(1);

		/* SPI每次最大发送2^16 = 65536个数据,图片最大大小为240*240*2 = 115200,会超过此大小,所以设计循环发送算法 */
		for(i = 0;i <= img_size / 65536; i++)
		{
			if(remain_size / 65536 >= 1)
			{
				LCD_SPI_Send((uint8_t *)p, 65535);
				p += 65535;
				remain_size -= 65535;
			}
			else
			{
				LCD_SPI_Send((uint8_t *)p, remain_size % 65535);
			}		
		}  
}

测试代码:

int main(void)
{
 	HAL_Init();
	LCD_Init();
	LCD_Show_Image(0,0,240,240,gImage_bear);
	LCD_ShowCharStr(70,240-24,140,"Starting...",WHITE,BLUE,24);
	
	while (1);
}

测试结果如下:
【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_字节数_05