请教显示屏文字移动程序
最近想写个程序让文字左右上下移动起来,并且要不断更新内容,屏本身是支持上下左右移动的,但必须是先写好数据在设置移动参数才可以,但不知道如何边移动边更新内容,功能就好像LED走字屏一样,但现在用的是液晶。搞过的前辈请指点一下!多谢! 在RAM开辟一个显存,移屏的时候就是取不同的显存起始地址,然后读取显存的数据刷屏,比如我的屏幕大小对应的显存大小是20个字节,那么我开辟40个字节,0--19个字节对应第一屏幕,20--39对应第二屏幕,第一屏是我们要显示的数据,一般第二屏幕都是空白数据,滚动的时候是:第一次取0--19字节刷屏,第二次取1--20字节刷屏,第3次取2--21字节刷屏,一次类推。。大概就这样。。。 每次都取20个字节,也就是一屏幕数据来刷。。当取到19--39的时候如果第二屏幕是空白的话,那么屏幕现在应该是什么都不显示的,然后又从新从重复上面的动作,效果你就可以想象得到了。。 我再理解一下。。。。。。多谢 不需要屏本身的支持,擦掉重画即可 2楼的显存思路真好就是对小RAM的MCU比较寒 to myqiang1990 你的这个思路很好,不需要屏的支持就可以达到效果。每次要显示的数据提前放到缓存里面,缓存里面的数据都写完了就在写一次缓存对吧。这个屏的分辨率是128*64的,要显示的字符可能是8*16 16*16这样的,我想利用屏本身的数据移位功能来实现有没有更好的办法呢?不知这样可否?把需要显示的数据依次排列到一个数组里面,然后把整个需要显示的位置0-63都满数据,然后设置屏移动一行这样0就跑到了63的后面,对这一行写数据,然后在移动一行再写入一行依次类推。。。。。。不知道这样是否可行?在实验中好像移位功能一旦开启就一直会自动移位下去。 关注一下{:3_49:} 本帖最后由 lwg998 于 2013-4-27 21:14 编辑
to myqiang1990那个缓存定义成何种类型比较好,你那个思路是按一个字节来做到移位的吗?换成16*16 就是一次移动一个汉字?16--->16??能否做到1位1位的移动呢?有些不解了
搞晕了, 7楼思路是对的。尤其适合不需要缓存的场合。
,
本帖最后由 lwg998 于 2013-4-27 21:35 编辑仔细想了一下现在的显示模式,是用PAGE模式,也就是PAGE0对应0-7 PAGE1对应8-16,纵向地址在PAGE范围内是自动累加的,而水平方向是靠地址累加0-15实现的,这样一来循环写入一个字节(0XFF)实际上是PAGE0--->水平0-15,也就是说写入的是8行16列,半个黑块。如果按照之前向上移动一行再写一行数据就是错误的,会覆盖没有溢出的数据,所以这种情况下最少要一次移动8行才可以,也就是一次移动一个PAGE如果这样字可能不会太平滑的移动。如果按一次滚动一行这种模式似乎不太合适,如果可以做到一次写一行,再滚动,在写入,这样可能会平滑许多。至此PAGE模式应该适合水平方向的滚动,不适合纵向的滚动。 我的一下项目就是这样的 ,左循环显示报警信息! 之前我在做万年历时,把要显示的内容全部放入24C64里面,然后通过判断要显示的内容,计算对应的地址,读取数据缓存在显示,滚屏显示用的是不断刷新要显示的内容,数据地址不断后移。 本帖最后由 lwg998 于 2013-4-28 09:47 编辑
最简单的滚动效果硬件上最好实现,就是多一个数据寄存器,不断的写这个寄存器就可以了,移动是硬件完成的。但这种情况一般的屏都不会有。一般的屏都是多少点对应多少GRAM,现在这个屏的取模方式决定了无法做到写一行移动一行,只能想别的招了。
页:
[1]