??? 08/03/04 13:00 Read: times |
#75327 - RE: Need help with LED display Responding to: ???'s previous message |
hi,
1. if the scrool frequency is a fractional multiple of the refresh frequency (for e.g. if the refresh is 100 Hz, then the scroll frequency is say 50Hz or 25Hz i.e 1/2 or 1/4 of the refresh frequency), won't the movement of the text still be smooth only it will be slower which may suit very slow readers? With 100Hz refresh, you may use next scroll frequency: 100Hz (scroll at each 10ms; one refresh - one scroll) 50Hz (scroll at each 20ms; two refreshes - one scroll) 33,3...Hz (scroll at each 30ms; three refreshes - one scroll) 25Hz (scroll at each 40ms; 4 refreshes - one scroll) and maybe next as slowest one: 20Hz (scroll at each 50ms; 5 refreshes - one scroll)The thing you must do: prepare new data (scroll task) between refresh cycles or use double buffered technique. By other words: do not change data during they are under refresh. 2. u said for right to left scroll, refresh only by rows from down to up. could u put more light on this? Well, to understand this requirement, you need to look how data are refreshed. Assume next dots` placement: MATRIX 1 MATRIX 2 +-------------------+--------------------------+ + m1c1r7 ... m1c5r7 + m2c1r7 m2c2r7 ... m2c5r7 + + m1c1r6 ... m1c5r6 + m2c1r6 m2c2r6 ... m2c5r6 + + ................. + ........................ + + m1c1r1 ... m1c5r1 + m2c1r1 m2c2r1 ... m2c5r1 + +-------------------+--------------------------+ C_A C_B C_C C_D C_E <- before scroll C_C C_D <- after scrollwhere m1 - matrix 1 (left), m2 - matrix 2; c1 - column 1, c2 - column 2, c5 - column 5; r7 - row 7 (upper), r6 - row 6, r1 - row 1 (lower). C_A...C_E - virtual columns (just named for clear explanation). Now assume wrong things: 1. data have been refreshed by columns c1->c2->...c5. After each refresh cycle we do scroll to left on one column. Now let me write refresh sequence by virtual columns: refresh stages 1st refresh cycle: C_A + C_C c1 C_D c2 ......... ... C_B + C_E c5 2nd refresh cycle: C_D c1 ........ ... C_C c5What can we see here? There is no problems with virtual column C_D: it was refreshed at stage c2 and then at stage c1. It was not refreshed during 3 stages (c3,c4,c5). But the situation with C_C is opposite! It was refreshed at stage c1 and then at stage c5 of the next refresh cycle! So it was not refreshed during 8 stages c2,c3,c4,c5 + c1,c2,c3,c4 !!! As result, column C_C disappears visually. In fact, with such refresh scheme each virtual column which scrolls from column 1 to column 5 disappears. In practice, it looks like dark columns between c1 and c5 of each matrix. Very bad thing, trust me. 2. data have been refreshed by columns c5->c4->...c1. After each refresh cycle we do scroll to left on one column. Now let me write refresh sequence by virtual columns once again: refresh stages 1st refresh cycle: C_B + C_E c5 ......... ... C_D c2 C_A + C_C c5 2nd refresh cycle: C_C c5 ........ ... C_D c1What can we see here? Again, there is no problems with virtual column C_D. It was not refreshed during 5 stages (c1,c5,c4,c3,c2). But there is problem with C_C again. It is refreshed twice without delay: at stage c1 and then at stage c5 immediately after scroll! In practice, it looks like bright columns between c1 and c5 of each matrix. Not good thing too. Now we know that it is not possible to refresh dot matrixes by columns. As result, you may say: "so I`ll do refresh by rows, yeah!". But I ask you now: "by which direction, my friend?" (= Now you know how it looks and so sit down and draw same explanation for refresh by rows. I`m sure, you will be able to find that this direction defines the inclination of scrolled text due the same visual effect. Simple example: with refresh by rows from down to up, the lower row will appear firstly, then next row appears etc and the upper row appears at the end. With next refresh cycle after scroll, the lower row will appear firstly again etc... So visually it looks like a text bends backward to up. That`s cool! Regards, Oleg |