低端单片机彩色屏幕的内存占用疑惑

前言

问题:

假设320*240的rgb565屏幕,320*240*2=153600,内存已经150K了,而很多低端单片机接口速度虽然勉强能用,但内存只有20K/8K,整屏的显存是绝对放不下的,只刷一部分都占很多内存,低端单片机刷彩屏都是写哪刷哪静态刷新的吗?这种场合比较合适的解决方法是什么?外挂ram吗?
很多m0 m3 m4的单片机内存都很小,该如何解决呢?


一、for循环刷新

静态刷新是个办法;
如果屏的内容可读取,也可将屏当作显存.
我常用的方法是:
1.减少颜色位数,比如将其当作单色屏,一个像素只占一位,那就只需320*240/8=9600字节的显存.
2.以时间换空间:
把整屏分为N个小屏,显存就只需要320*240*2/N,然后写个for循环:
for(i=0;i {
  设置第i个小屏的矩形区域;
  绘图;
  显存发送到屏;
}

二、在显示屏上花心思

1.具体要看想设计的有多花了,否则除了几个ICON占空间外,其他的如背景前景都可以采用拼图,而且采用ST7789这样控制模组的LCD都不需要经常刷新,只需要视窗内容有变化的时候才会局部刷新

2.有一种叫做MCU屏,屏幕的主控芯片是自带显存的。另外一种叫做RGB屏,如你所说的需要额外的显存。

3.SPI或8080接口的小尺寸液晶屏,屏幕自带了显示控制器,显存位于显示控制器中,简单显示的话,无需MCU再实现一个显存。

你可能感兴趣的:(单片机,嵌入式硬件)