关于lcd实时更新数值的问题

2019-07-20 21:25发布

lcd 320 *  240,假设要在上面显示三个 30 * 30的数值,并且实时的更新。
数字是不可能完全填充30 * 30的,那么意味着我们在lcd320 *  240背景上写数据的时候要不把相应的背景擦掉。
我们在写数字的时候一般是将数字图形的数组的每一个为1位进行填充到像素中,那么如何在保持背写区域不变的情况下把数字更新进去呢。我想的办法是在刚把320*240的图片写入到lcd后,此时待写入数据区域是干净的。将相对应待写入数值的那块区域的30 * 30的像素点读回来保存在一个buffer,这个buffer大小是30 * 30 * 2(因为一个像素是16bit),那么因为有三个数字区域,所以还得*3 ,那么总共花费900 * 2 * 3 = 5400 byte的大小。那么就会需要5k大小的全局变量用来存储待写区域的背景。然后再写入数值的时候擦掉一行写入一行,那么背景就不会因为实时更新数据而被重叠。但是这种方法很消耗 ram,请问各位,能有什么比较好的方法来解决这种问题么??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
zdfwyh
2019-07-21 10:43
如果是纯 {MOD}背景就不需要保存背景,在每次更新数字时,将数字字符点阵为0的填写背景 {MOD},为1的填写前景 {MOD}就行.如果是图案背景,就麻烦了.如果是固定图案背景可以考虑将这部分区域单独保存在Flash中的常量数组,这样在每次更新是先刷新背景就行.如果是动态背景,可以用异或填充的方法,不过就是颜 {MOD}不好看.最后就只有你的方法了,每次刷新背景时要将背景保存到数组中,然后在刷新数字.

一周热门 更多>