[活动专区] 【AT-START-WB415测评】硬件SPI驱动LCD显示GIF

[复制链接]
 楼主| 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,正好一个循环完成
  1. int main(void)
  2. {
  3.     uint32_t num = 0;
  4.    
  5.     system_clock_config();
  6.     at32_board_init();
  7.     gpio_config();
  8.     spi_config();
  9.     LCD_Init();
  10.     PrintfClockInfo("clock acquisition, wait a minute...");
  11.    
  12.     while(1)
  13.     {
  14.         //delay_ms(1000);
  15.         //at32_led_toggle(LED3);
  16.         //printf("we are family !\r\n");
  17.         
  18.         at32_led_toggle(LED3);
  19.         LCD_DrawPic_ZZZ(num,0,0,bit80x80);
  20.         delay_ms(30);
  21.         
  22.         if(++num >= 179)
  23.         {
  24.             num =0;
  25.         }
  26.         
  27.     }
  28. }
使用官方自带的串口需要注意的是,需要 取消勾选 C99 Mode 和 GNU extensions 两项,否则会出错。
软件处理像素

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

  2. /*----------------------------------------------------------------------------*/
  3. /*----------------------------------------------------------------------------*/
  4. //画图
  5. void LCD_DrawPic_ZZZ(u8 index, u16 x, u16 y,const unsigned char *p)
  6. {
  7.     u8 n;
  8.           u32 i;
  9.         u16 picX;
  10.     u16 temp;
  11.    
  12.         LCD_SetWindows(x,y,x+80-1,y+80-1);
  13.     i = index*800; //bmp1 = 800 bytes
  14.     for(; i<800+index*800; i++)
  15.         {       
  16.                  picX = *(p+i);
  17.         for(n=0,temp=0; n<8; n++)
  18.         {
  19.             temp = (picX & BIT((7-n))) >> (7-n);
  20.             if(temp>0) temp=0xffff;
  21.             Lcd_WriteData_16Bit(temp);
  22.         }
  23.         }
  24. }
图片太大,就不上传了。
最后附上代码
AT-START-WB415-Demo-v1.1.zip (93.4 KB, 下载次数: 16)
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模块
 楼主| 740071911 发表于 2022-11-5 12:16 | 显示全部楼层
jtracy3 发表于 2022-11-5 12:06
你这是将图片转换为单个的文件了啊。

gif不就是一个个图片吗
macpherson 发表于 2022-11-5 13:52 | 显示全部楼层
这个git文件是需要自己来解析的吗?
minzisc 发表于 2022-11-5 14:17 | 显示全部楼层
能不能把文件保存到sd卡,然后读取显示?
 楼主| 740071911 发表于 2022-11-5 14:44 | 显示全部楼层
minzisc 发表于 2022-11-5 14:17
能不能把文件保存到sd卡,然后读取显示?

那就需要连接一个sd模块和文件系统
 楼主| 740071911 发表于 2022-11-5 14:46 | 显示全部楼层
macpherson 发表于 2022-11-5 13:52
这个git文件是需要自己来解析的吗?

对的,网上也有gif转换工具
mattlincoln 发表于 2022-12-3 13:42 | 显示全部楼层
这个gif居然要生成这么多图片的。
sanfuzi 发表于 2022-12-3 13:51 | 显示全部楼层
能不能使用SD卡解析这个数据呢?
deliahouse887 发表于 2022-12-3 14:11 | 显示全部楼层
AT-START-WB415的蓝牙功能是不是可以接收图片数据呢?
jkl21 发表于 2022-12-3 14:59 | 显示全部楼层
保存图片需要多大的空间?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

48

主题

883

帖子

5

粉丝
快速回复 返回顶部 返回列表