I wanted to know if the ST7735S is capable of hardware scrolling. The datasheet does show it is capable of hardware vertical rolling scrolling. But I did not want rolling scrolling. Instead I wanted new data to appear at the bottom of the scroll area.
Say, if I have a long text message, a part of it appears on the first screen and the rest needs to be displayed as we scroll. Is this possible with hardware scrolling as mentioned in the datasheet ? I do not want to use software scrolling and would like to know if this capability is provided with the hardware scrolling mentioned in thee st7735s datasheet.
Vertical Scrolling works fine. It would not be very conveient to scroll an 80x160 pixel portrait. You can only fit a 13 letter word on a line.
A regular 128x160 display can fit 21 letters on a line.
Actually, the ST7735 can control a 132x162 panel. I have never seen a panel with these dimensions.
Landscape controllers exist but are less common than the typical 128x160, 176x220, 240x320, 320x480, ...
e.g. A 320x240 ILI9342 will "vertical scroll" 320 pixels wide.
Hi,
Could you please tell me how this vertical scrolling would work?
We set the vertical scrolling area. Then when we send the command to start the vertical scrolling.
So does the display continuously keep scrolling then? If the screen keeps scrolling continuously, when do I write the data to the RAM?
Also how would I achieve a scrolling with new text at the bottom most line? It seems a bit confusing. At what point do I write the new data to be displayed on the bottom most line?
It does not scroll automatically. You tell the controller which area of controller memory to display on the screen.
Let's say that you have a 128x160 panel. 20 lines with 21 letters.
You write the first 20 lines of text. Then scroll up by one line.
Line #1 disappears and comes up at the bottom of the screen. This means that you are displaying line #2 at the top of the screen.
RAM address 0 still holds line #1 but it is at the bottom of the screen. You can write new text at RAM #0 e.g. line #21.
You can still use the setCursor() commands to specify where the text lives in RAM.
I suggest that you draw this out with pencil and paper. You have to keep track of how far the screen has scrolled and how this relates to RAM.
To be honest, I don't see how practical text scrolling would be on a 128x160 screen. It is fine on 240x320 and bigger screens.
The "vertical scroll" becomes left to right when the display is in landscape. e.g. it works nicely for a graph or perhaps a cartoon moving background.
Hi David,
Thank you for the reply. Unfortunately I am having to work with the 80*160 screen.
So, if I had the data on the screen as
Line 1: Heading
Line 2 : ABC // I set the cursor data here
Line 3 : DEF
Line 4 : End Notes
Now, if I want to scroll Lines 2 and 3, I set the Top and Bottom scroll area and the height as required.
Then if I set the scroll cursor address to Line 2, the display would scroll once. Am I right ? That is, the data would appear as
Line1 : heading
Line 2 : DEF
Line 3 : ABC
Line 4 : End Notes.
Is this right ? If so then to scroll again, would I have to set the cursor data again to Line 2 and then start the scroll again ( for another scroll) ?
Also, after starting the scroll the first time, then if I write the data to Line 2 as "XYZ" would the data appear in the scrolled manner i.e. Line 2 appearing at Line 2
Line 1 : heading
Line 2 : DEF
Line 3 : XYZ
Line 4 : End Notes.
Lastly, if instead I wanted the initial scroll itself to appear with new data as
Line 1 : heading
Line 2 : DEF
Line 3 : XYZ
Line 4 : End Notes.
At what point should I set the new data to the display RAM ? I mean should I write the new data to the RAM after setting the scroll area ? If I did do that won't the new data appear onto the display at that instant itself, since I would still be in normal mode ?
Hi David,
I am sorry, but I did not get which question you had said "YES" to :)
"Is this right ? If so then to scroll again, would I have to set the cursor data again to Line 2 and then start the scroll again ( for another scroll) ?"
Could you please say if I am right in the above case?
"Lastly, if instead I wanted the initial scroll itself to appear with new data as
Line 1 : heading
Line 2 : DEF
Line 3 : XYZ
Line 4 : End Notes.
At what point should I set the new data to the display RAM ? I mean should I write the new data to the RAM after setting the scroll area ? If I did do that won't the new data appear onto the display at that instant itself, since I would still be in normal mode ?" When should I write the new data ?
Take some lined paper from a school exercise book.
Number the lines from 1 to 20. (and associated RAM address)
Take a second sheet of lined paper. If you intend to scroll a band of 13 lines starting at line 5, make a loop of paper with 26 lines. Sellotape together as a continuous loop of 26 lines.
Write the line numbers and addresses on your continous loop e.g. 5 to 17 followed by 5 to 17 again.
Now you can see exactly how the Band scroll works. Just line up your continuous loop with the main page.
It is difficult to explain in words but easy to see with your paper model. You can see TFA, BFA, scroll lines, ...