本帖最后由 yzwzfyz 于 2016-6-21 22:33 编辑
上下卷式滚动方式,首行移动屏后,回到末行
设:
A1(A1由若干个字节组成,满足一行的显示内容)是第1行的显示内容。
An是第n行的显示内容。
做一个时间中断,用以计时滚动的时间,比如,每0.5秒滚一行,就做个0.5秒计时器S5。
做一个滚动指针PS,PS=1-n。用以指示哪一行放至首行显示。
当S5计满时(0.5秒到),做下列5个事项:
1,PS=PS+1,当PS=n+1时,置PS=1,即使得PS=1至n。
2,关所有显示。
3,做两个临时计数单元,比R1,R2,令R1=n(用以计数刷新了多少行),R2=PS(复制PS)。
4,从R2行开始取显示数据,并从第一行开始显示,然后R1-1,为0则结束(即显示n行后结束,也就是刷一次屏),R2+1,当R2=n+1时,置R2=1,(即从PS行开始滚行,PS行放到第一行去显示,PS+1行放到第二行,PS-1行放到末行)。
例如PS=4,则将A4的数据放到第1行显示,A5放到第2行显示......,A3放到最后一行显示。
5,复位S5,待下个S5计满(做下次滚行的动作)。
总结:
显示的内容无需变动,无需考虑滚动对其影响,即A1-An,按正常显示值输入内容。
滚动是将A1至An的显示数据,送至屏上的次序进行变动实现的,比如:首行第1次显示A1,则第2次显示A2,第3......
哪一行先送至首行,由PS指针决定。
每个滚动的间隔时间,将PS调整一次(+1),就达到了滚行的目的了。每次先关屏,再逐行显示(刷新全屏)。
竖滚同理。不述了。
不想卷滚,则首行移出屏后,不再显示。即每次将PS前的行清空不显示即可(清空指灭LED)。 |