STM32,正点原子TFTLCD屏显示图片

显示图片和显示线条、字符、汉字一样,都是控制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);  //显示图片 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值