显示图片和显示线条、字符、汉字一样,都是控制LCD屏幕中的一个个像素点完成的,只不过所用的封装函数和软件有所不同,但操作步骤大致相同。
1.软件:
Keil uVision5
Img2Lcd
2.步骤
(1)打开Keil uVision5,并导入可控制LCD显示屏工作的文件夹。例如:
(2)在 lcd.c 文件中输入显示图片的函数。(文章最后附有代码)
(3) 在 lcd.h 文件中声明此函数。
(4) 打开 Img2Lcd 图片取模软件,在软件内打开准备好的图片,图片格式为 jpg 或 gif。
(5)调整参数。
(6) 点击保存,自动生成图片的16进制代码。
(7)将此代码复制粘贴到 lcdfont.h 文件,或直接放在主函数中。
(8) 在主函数 main 中调用函数,注意函数名要对应。函数内共5个参数,分别为 图片左上角的x轴坐标、y轴坐标、图片名称、宽度、高度。(x、y轴坐标控制图片显示位置)。
注意:图片名称要和图片取模器输出的代码名称对应
注意: 宽度和长度要和图片取模器的输出图像的参数对应。
(9)完成后运行并烧录。
成功!
附:
lcd.c 文件代码:
void lcd_show_image(uint16_t x, uint16_t y, const uint16_t *image_data, uint16_t img_width, uint16_t img_height)
{
for (uint16_t row = 0; row < img_height; row++) {
for (uint16_t col = 0; col < img_width; col++) {
uint16_t color = image_data[row * img_width + col];
lcd_draw_point(x + col, y + row, color);
}
}
}
lcd.h 文件代码
void lcd_show_image(uint16_t x, uint16_t y, const uint16_t *image_data, uint16_t img_width, uint16_t img_height);
main.c 文件代码
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./BSP/LCD/lcd.h"const unsigned char gImage_2[107528] = { 0X00,0X10,0XF0,0X00,0XE0,0X00,0X01,0X1B,.......... }; //图片取模代码
int main(void)
{
uint8_t x = 0;
uint8_t lcd_id[12];HAL_Init(); /* 初始化HAL库 */
sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
delay_init(72); /* 延时初始化 */
usart_init(115200); /* 串口初始化为115200 */
led_init(); /* 初始化LED */
lcd_init(); /* 初始化LCD */lcd_clear(WHITE);
lcd_show_image(50,400, (uint16_t *)gImage_2, 240,224); //显示图片
}