打印
[活动专区]

【AT-START-WB415测评】硬件SPI驱动LCD显示GIF

[复制链接]
1058|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
740071911|  楼主 | 2022-8-23 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

之前也显示过gif,但是因为mcu空间不够,gif显示不全,有点遗憾。
AT-START-WB415开发板,MCU有256K flash,正好够我显示gif。
首先将gif分割为179张图片,每幅bmp像素80x80,总时间为5500毫秒,彩色屏显示(黑,白)为(0,0xffff)二值模式。
即一个像素一个int型,一张bmp需要6400*2=12800byte,179张bmp=12800*179=2.2Mbytes,所以单片机空间是远远不够的。
节省空间的办法,可以用先用(0,0xff)保存黑白两色,显示时通过软件处理,一张图只要6400bytes,则179张图需要1.1Mbyte字节。
以此类推,用0表示黑色像素,用1保存白色像素,(0,1)二进制模式,软件处理,将8个像素组合为1字节存储再单片机内,一张图只要800bytes,
最后179张需要140Kbytes。


每幅图显示时间为30ms,一个周期5500ms,正好一个循环完成
int main(void)
{
    uint32_t num = 0;
   
    system_clock_config();
    at32_board_init();
    gpio_config();
    spi_config();
    LCD_Init();
    PrintfClockInfo("clock acquisition, wait a minute...");
   
    while(1)
    {
        //delay_ms(1000);
        //at32_led_toggle(LED3);
        //printf("we are family !\r\n");
        
        at32_led_toggle(LED3);
        LCD_DrawPic_ZZZ(num,0,0,bit80x80);
        delay_ms(30);
        
        if(++num >= 179)
        {
            num =0;
        }
        
    }
}
使用官方自带的串口需要注意的是,需要 取消勾选 C99 Mode 和 GNU extensions 两项,否则会出错。
软件处理像素

#define BIT(x) ((unsigned int)((unsigned int)1<<x))

/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
//画图
void LCD_DrawPic_ZZZ(u8 index, u16 x, u16 y,const unsigned char *p)
{
    u8 n;
          u32 i;
        u16 picX;
    u16 temp;
   
        LCD_SetWindows(x,y,x+80-1,y+80-1);
    i = index*800; //bmp1 = 800 bytes
    for(; i<800+index*800; i++)
        {       
                 picX = *(p+i);
        for(n=0,temp=0; n<8; n++)
        {
            temp = (picX & BIT((7-n))) >> (7-n);
            if(temp>0) temp=0xffff;
            Lcd_WriteData_16Bit(temp);
        }
        }
}
图片太大,就不上传了。
最后附上代码
AT-START-WB415-Demo-v1.1.zip (93.4 KB)

使用特权

评论回复
沙发
jtracy3| | 2022-11-5 12:06 | 只看该作者
你这是将图片转换为单个的文件了啊。

使用特权

评论回复
板凳
chenjun89| | 2022-11-5 12:13 | 只看该作者
外挂一个flash存储芯片

使用特权

评论回复
地板
740071911|  楼主 | 2022-11-5 12:15 | 只看该作者
chenjun89 发表于 2022-11-5 12:13
外挂一个flash存储芯片

板载没有flash,自己也没有flash模块

使用特权

评论回复
5
740071911|  楼主 | 2022-11-5 12:16 | 只看该作者
jtracy3 发表于 2022-11-5 12:06
你这是将图片转换为单个的文件了啊。

gif不就是一个个图片吗

使用特权

评论回复
6
macpherson| | 2022-11-5 13:52 | 只看该作者
这个git文件是需要自己来解析的吗?

使用特权

评论回复
7
minzisc| | 2022-11-5 14:17 | 只看该作者
能不能把文件保存到sd卡,然后读取显示?

使用特权

评论回复
8
740071911|  楼主 | 2022-11-5 14:44 | 只看该作者
minzisc 发表于 2022-11-5 14:17
能不能把文件保存到sd卡,然后读取显示?

那就需要连接一个sd模块和文件系统

使用特权

评论回复
9
740071911|  楼主 | 2022-11-5 14:46 | 只看该作者
macpherson 发表于 2022-11-5 13:52
这个git文件是需要自己来解析的吗?

对的,网上也有gif转换工具

使用特权

评论回复
10
mattlincoln| | 2022-12-3 13:42 | 只看该作者
这个gif居然要生成这么多图片的。

使用特权

评论回复
11
sanfuzi| | 2022-12-3 13:51 | 只看该作者
能不能使用SD卡解析这个数据呢?

使用特权

评论回复
12
deliahouse887| | 2022-12-3 14:11 | 只看该作者
AT-START-WB415的蓝牙功能是不是可以接收图片数据呢?

使用特权

评论回复
13
jkl21| | 2022-12-3 14:59 | 只看该作者
保存图片需要多大的空间?              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:想低声说句不在乎,可会飞的心总是在高处!

47

主题

865

帖子

5

粉丝