【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片
原创
MCUlover666
2022-01-11 09:44:17
©著作权
文章标签
取模
数据
字节数
TFT-LCD
文章分类
物联网
©著作权归作者所有:来自51CTO博客作者MCUlover666的原创作品,请联系作者获取转载授权,否则将追究法律责任
1. 使用取模软件对图片取模
取模软件使用Img2LCD,附上下载链接。
首先准备一张用于显示的图片,修改图片像素值为240*240: 在取模软件中打开图片:![【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_TFT-LCD_02](https://s2.51cto.com/images/blog/202112/31111658_61ce762a232a320748.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184) ![【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_字节数_03](https://s2.51cto.com/images/blog/202112/31111658_61ce762a34aef682.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184) ![【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片_数据_04](https://s2.51cto.com/images/blog/202112/31111658_61ce762a47d1c51251.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
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 = 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](https://s2.51cto.com/images/blog/202112/31111658_61ce762a640d167533.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
赞
收藏
评论
分享
举报
上一篇:【Hexo搭建个人博客】(十一)使用Appveyor持续集成博客(备份Hexo博客源文件)
下一篇:【玩转嵌入式屏幕显示】(三)TFT-LCD屏幕打点 + 画线 + 画矩形 + 画圆Bresenham算法实现(基于打点函数,算法可移植到任何屏幕的驱动程序之上)
|