OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4755|回复: 13

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

[复制链接]

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
发表于 2016-7-3 17:38:26 | 显示全部楼层 |阅读模式
1金钱
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,请问各位,能有什么比较好的方法来解决这种问题么??

最佳答案

查看完整内容[请看2#楼]

不是,类似EMWIN有个XOR写点的函数,就是在写点之前先读取该点原来的颜色,然后跟你要写的颜色进行异或运算,然后将运算结果写入该点,异或的方法的好处就是当第二次进行写点(颜色不能变)时,就会恢复原来的颜色,如原来颜色是0x5555,待写入颜色是0xaaaa,异或之后是0xffff,第二次再写时,0xaaaa异或0xffff后又变成0x5555了,即恢复底色了.然后在写入新的颜色就实现不改变背景绘制前景.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-7-3 17:38:27 | 显示全部楼层
qq8512852 发表于 2016-7-5 11:17
您的意思是,把对应区域背景保存下来,每次都在保存的背景上面填充,然后再把填充好的刷新到对应区域么?

不是,类似EMWIN有个XOR写点的函数,就是在写点之前先读取该点原来的颜色,然后跟你要写的颜色进行异或运算,然后将运算结果写入该点,异或的方法的好处就是当第二次进行写点(颜色不能变)时,就会恢复原来的颜色,如原来颜色是0x5555,待写入颜色是0xaaaa,异或之后是0xffff,第二次再写时,0xaaaa异或0xffff后又变成0x5555了,即恢复底色了.然后在写入新的颜色就实现不改变背景绘制前景.
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-3 21:16:59 | 显示全部楼层
没人啊??
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-3 23:16:23 | 显示全部楼层
不要沉啊  求大神帮助
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-7-4 07:57:37 | 显示全部楼层
如果是纯色背景就不需要保存背景,在每次更新数字时,将数字字符点阵为0的填写背景色,为1的填写前景色就行.如果是图案背景,就麻烦了.如果是固定图案背景可以考虑将这部分区域单独保存在Flash中的常量数组,这样在每次更新是先刷新背景就行.如果是动态背景,可以用异或填充的方法,不过就是颜色不好看.最后就只有你的方法了,每次刷新背景时要将背景保存到数组中,然后在刷新数字.
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11476
金钱
11476
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-7-4 09:16:51 | 显示全部楼层

要看情况,
可能必须额外占用5K内存,
也可能不需要,直接运算得出最终的显示图像,然后写入LCD,这样就不占内存。


回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-4 11:52:05 | 显示全部楼层
zdfwyh 发表于 2016-7-4 07:57
如果是纯色背景就不需要保存背景,在每次更新数字时,将数字字符点阵为0的填写背景色,为1的填写前景色就行.如 ...

“如果是固定图案背景可以考虑将这部分区域单独保存在Flash中的常量数组,”,这样的话其实,假如我要写5块区域的话,还是得花5块区域的常量数组,这么得消耗这么大的rom,因为现在我rom只有64k,一张图片就有150k,然后这都是存储在4M的片外flash中,所以每次用起来都好小心。。。
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-4 11:53:26 | 显示全部楼层
xuande 发表于 2016-7-4 09:16
要看情况,
可能必须额外占用5K内存,
也可能不需要,直接运算得出最终的显示图像,然后写入LCD,这样 ...

那如果不是3个区域 是10个区域 岂不是悲剧了····
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-7-4 14:05:17 | 显示全部楼层
我看你的情况是要大面积更新前景,这样你不如每次更新前先刷新一下背景图片,然后再更新前景文字.这样基本不需要额外保存数据了.但是可能会闪烁.
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-7-4 14:05:23 | 显示全部楼层
我看你的情况是要大面积更新前景,这样你不如每次更新前先刷新一下背景图片,然后再更新前景文字.这样基本不需要额外保存数据了.但是可能会闪烁.
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-4 16:17:08 | 显示全部楼层
zdfwyh 发表于 2016-7-4 14:05
我看你的情况是要大面积更新前景,这样你不如每次更新前先刷新一下背景图片,然后再更新前景文字.这样基本不 ...

对,就是闪烁,这忍不了
回复

使用道具 举报

7

主题

188

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2282
金钱
2282
注册时间
2013-12-16
在线时间
448 小时
发表于 2016-7-4 16:25:57 | 显示全部楼层
那只有异或显示了,每次显示先显示上一次数据,然后在显示新数据,可以保证背景不被刷掉,就是颜色不可控,属于另类的半透明显示,看看能不能接受了
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-5 11:17:26 | 显示全部楼层
zdfwyh 发表于 2016-7-4 16:25
那只有异或显示了,每次显示先显示上一次数据,然后在显示新数据,可以保证背景不被刷掉,就是颜色不可控,属于 ...

您的意思是,把对应区域背景保存下来,每次都在保存的背景上面填充,然后再把填充好的刷新到对应区域么?
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2014-5-17
在线时间
14 小时
 楼主| 发表于 2016-7-6 20:39:55 | 显示全部楼层
zdfwyh 发表于 2016-7-5 11:27
不是,类似EMWIN有个XOR写点的函数,就是在写点之前先读取该点原来的颜色,然后跟你要写的颜色进行异或运算, ...

好的,谢谢指点,我去找找看是哪个api然后研究下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 17:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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