本帖最后由 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)。 |