51单片机存储图片必须用TF卡+25X16之类的方案吗
如题,我要做几个图片显示,实际并不大,但是肯定超过了64K,现在看到的方案是把图片存在TF卡里,然后单片机读取TF卡存到flash里面,再读出来,显示到TFT显示屏上。因为显示板尺寸有限,有没有其他方案,不想用到TF卡,能否有其他方案把图片存在FLASH里面,然后显示在屏幕上。 分辨率? 色彩位深度?刷新速度?
上压缩算法可以小很多,但对算力有要求 t3486784401 发表于 2022-4-2 14:46
分辨率? 色彩位深度?刷新速度?
上压缩算法可以小很多,但对算力有要求 ...
(引用自2楼)
目前对速度要求不高吧,目前要解决存储问题,就是2.8寸普通的9341驱动芯片的屏幕 你是想问,不通过tf卡,怎么样才能把图片下载到flash里面吗?你可以用个串口,接到电脑上,用电脑发图片下来保存到flash。 yyts 发表于 2022-4-2 15:13
你是想问,不通过tf卡,怎么样才能把图片下载到flash里面吗?你可以用个串口,接到电脑上,用电脑发图片下 ...
(引用自4楼)
嗯嗯,谢谢大佬指点,这样的话还得单独写一个串口转发数据的程序吧{:lol:} 图片可以直接编译到固化文件内 寻思 发表于 2022-4-2 15:29
嗯嗯,谢谢大佬指点,这样的话还得单独写一个串口转发数据的程序吧...
(引用自5楼)
可以用CH341之类的工具直接写进Flash。 shiva_shiva 发表于 2022-4-2 15:30
图片可以直接编译到固化文件内
(引用自6楼)
单片机Flash没那么大哦。 寻思 发表于 2022-4-2 15:29
嗯嗯,谢谢大佬指点,这样的话还得单独写一个串口转发数据的程序吧...
(引用自5楼)
有SPI闪存编程器,焊接前先把图片烧写进去 寻思 发表于 2022-4-2 15:29
嗯嗯,谢谢大佬指点,这样的话还得单独写一个串口转发数据的程序吧...
(引用自5楼)
那就把spi flash的接口留出来,用spi flash的烧写器接到电脑下载进去(一般有配软件) 寻思 发表于 2022-4-2 15:29
嗯嗯,谢谢大佬指点,这样的话还得单独写一个串口转发数据的程序吧...
(引用自5楼)
xmodem标准协议不用写 lovejp1981 发表于 2022-4-2 15:37
单片机Flash没那么大哦。
(引用自8楼)
啊?我看楼主也没说外部flash,就认为是片内flash了。51 flash没有128KB的? shiva_shiva 发表于 2022-4-2 16:22
啊?我看楼主也没说外部flash,就认为是片内flash了。51 flash没有128KB的?
(引用自12楼)
没用过51不太清楚,AVR反正是想放个图片难。既然楼主外挂Flash,那肯定是不够用。 shiva_shiva 发表于 2022-4-2 16:22
啊?我看楼主也没说外部flash,就认为是片内flash了。51 flash没有128KB的?
(引用自12楼)
STC32可以,128KB,有8/16位TFT接口和DMA,KEIL需要安装C251编译器.
如果只能是要STC8系列的话,就可以考虑STC8A8K64D4,以及STC8H8K64U(B版),STC8H4K64TLR等,这些都有8/16位TFT接口和DMA.以保证速度足够快 51来驱动9341有点费力啊,估计好几秒才能刷一副图片。图片可以放25Q064之类的SPI flash 中,用编程器提前把BMP图片放进去。 本帖最后由 tomzbj 于 2022-4-2 21:17 编辑
spiflash呗, w25q16什么的
如果是很简单的图形, 可以用调色板技术,当年dos时代的东西。
不超过16种颜色的话, 一个像素只需要半个字节,320*240的图片可以压到30多k。不超过256种颜色就是一个像素一个字节。 除了连硬件,软件上能做的就是压缩了,各种压缩算法。
JPG 就算了,51 那点内存装 huffman 表太费劲,不过也有似乎 elm-chan 也写过类似的精简库,大概需要 KB 级别内存。
针对常见 BMP 的话,开销比较小的是降低颜色数,会损失一部分图像质量。但如果有抖动器的话效果还行。
以一张 bing 每日一图为例,裁剪成 320x240 尺寸,依次压缩至 256色/16色/4色,抛开调色盘数据可以估算数据大小:
原图 24bpp,16M色彩,320*240*3 = 225 KB
抖动压缩至 8bpp,256色彩,320*240*1 = 75 KB
抖动压缩至 4bpp,16色彩,320*240*1/2 = 37.5 KB
抖动压缩至 2bpp,4色彩,320*240*1/4 = 18.75 KB
最后一种 2bpp 可以塞进大多数 51 单片机,效果勉强能看。 t3486784401 发表于 2022-4-3 01:16
除了连硬件,软件上能做的就是压缩了,各种压缩算法。
JPG 就算了,51 那点内存装 huffman 表太费劲,不过 ...
(引用自17楼)
这种有损压缩的视觉效果肉眼可见。为了省个存储器不是白瞎了一块挺好的彩屏么?毕竟一个屏的钱至少买十个存储器,为了能塞进内部flash压缩太狠不是很值。 如果图是固定的话,直接用烧录器写到FLASH中,再去贴FLASH就可以了。 tomzbj 发表于 2022-4-2 21:07
spiflash呗, w25q16什么的
如果是很简单的图形, 可以用调色板技术,当年dos时代的东西。
不超过16种颜色 ...
(引用自16楼)
谢谢大佬的回复,听懂一点,虽然不明白具体实现的方法。{:lol:} shiva_shiva 发表于 2022-4-2 16:22
啊?我看楼主也没说外部flash,就认为是片内flash了。51 flash没有128KB的?
(引用自12楼)
51最大64k 寻思 发表于 2022-4-3 08:43
谢谢大佬的回复,听懂一点,虽然不明白具体实现的方法。
(引用自20楼)
存储时按每个像素半个字节来存, 0-15, 建个unsigned short palette作为调色板
显示时建个够一行数据的缓冲区, 每次从存储的数据里读取一行, 读到的数据作为调色板索引, 写到行缓冲里再送屏幕 寻思 发表于 2022-4-3 09:07
51最大64k
(引用自21楼)
看你以前的贴子用的是STC8,不如换成STC32G,128K闪存,基本上算是无缝切换 modbus 发表于 2022-4-3 11:58
看你以前的贴子用的是STC8,不如换成STC32G,128K闪存,基本上算是无缝切换
(引用自23楼)
管脚不知道是否pintopin的,回头看下,可以的话 问他们要几个样片试试{:titter:} 直接将文件写到FLASH就行了,不用那么麻烦。
页:
[1]