Hallo, ich habe ein Display mit dem Controller SSD1289 (240 RGB x 320 TFT LCD Controller Driver) bei der die Textausgabe entsprechend wie folgt angeordnet ist: 240px---> 320px | Text | Nun möchte ich das Display aber gerne als 320 x 240 Display nutzen, als um 90° gedreht, und Textausgaben darstellen: 320px---> 240px | Text | Seh ich das richtig, dass ich mir eine eigene Font-Library anlegen muss, bei der die Zeichen um 90° gedreht sind und dazu die entsprechende Textausgabe-Routine schreiben muss, damit die Zeichen an der richtigen Position ausgegeben werden oder gibt es eine Möglichkeit die ich bisher übersehen habe? Danke für die Hilfe.
Ich meine mich zu erinnern, dass der SSD1289 auch Befehle zum Drehen hat. Das wird normalerweise durch die Schreibrichtung im RAM des Displays gemacht, worum du dich aber nicht kümmern musst. Eben nur den Konfig-Befehl.
Danke mue-c, ich habe mir das mal durchgelesen, muss das aber erst noch sacken lassen, um es zu verstehen. Ganz klar ist mir das für die praktische Umsetzung noch nicht.
Ich hatte auch das Problem mit einem Waveshare Board und einem TFT Modul HY32B. Der Schlüssel war die Initialisierung. 240x320: R01h: 0x2B3F R11h: 0x6070 320x240: R01h: 0x293F R11h: 0x6078 Danach musste ich bei ein paar Funktionen x und y tauschen, sowei beim Fensterbereich Höhe und Breite. cu Georg
Vielen Dank für deine Antwort! Kann es sein, dass du die Bits ID0 und ID1 nicht richtig eingestellt hast? Die Idee hinter der ganzen sache wäre ja, dass man im sourcecode der library nichts ändern muss. X und Y vertauschent hört sich für mich so an, als ob da noch was nicht ganz sauber wäre? Ich werde das morgen so schnell wie möglich ausprobieren :)
@Mr. Anderson, das kann durchaus sein. Ich bin hier nicht der Profi. Jedoch wird das auch im Keil Beilspiel für das STM32C gemacht, jedoch mit einem anderen Controller:
1 | void GLCD_SetWindow (unsigned int x, unsigned int y, unsigned int w, unsigned int h) |
2 | {
|
3 | unsigned int xe, ye; |
4 | |
5 | if (Himax) { |
6 | xe = x+w-1; |
7 | ye = y+h-1; |
8 | |
9 | wr_reg(0x0002, x >> 8); /* Column address start MSB */ |
10 | wr_reg(0x0003, x & 0xFF); /* Column address start LSB */ |
11 | wr_reg(0x0004, xe >> 8); /* Column address end MSB */ |
12 | wr_reg(0x0005, xe & 0xFF); /* Column address end LSB */ |
13 | |
14 | wr_reg(0x0006, y >> 8); /* Row address start MSB */ |
15 | wr_reg(0x0007, y & 0xFF); /* Row address start LSB */ |
16 | wr_reg(0x0008, ye >> 8); /* Row address end MSB */ |
17 | wr_reg(0x0009, ye & 0xFF); /* Row address end LSB */ |
18 | }
|
19 | else { |
20 | #if (LANDSCAPE == 1)
|
21 | wr_reg(0x0050, y); /* Vertical GRAM Start Address */ |
22 | wr_reg(0x0051, y+h-1); /* Vertical GRAM End Address (-1) */ |
23 | wr_reg(0x0052, x); /* Horizontal GRAM Start Address */ |
24 | wr_reg(0x0053, x+w-1); /* Horizontal GRAM End Address (-1) */ |
25 | wr_reg(0x0020, y); |
26 | wr_reg(0x0021, x); |
27 | #else
|
28 | wr_reg(0x0050, x); /* Horizontal GRAM Start Address */ |
29 | wr_reg(0x0051, x+w-1); /* Horizontal GRAM End Address (-1) */ |
30 | wr_reg(0x0052, y); /* Vertical GRAM Start Address */ |
31 | wr_reg(0x0053, y+h-1); /* Vertical GRAM End Address (-1) */ |
32 | wr_reg(0x0020, x); |
33 | wr_reg(0x0021, y); |
34 | #endif
|
35 | }
|
36 | }
|
Außerdem würde es m.E. beim R44h des SSD1289 zu einem Überlauf kommen, das hier die horizontale Start- und Endadresse eingetragen werden. Das würde aber bei 320 schief gehen. Ich lerne aber gerne dazu. cu Georg
Hallo Georg, Ich werde das ganze weiter verfolgen, da ich eine komplette LCD Library für den SSD1289 schreiben will. Könntest du villeicht deinen source code zur verfügung stellen, damit ich mir alles mal angucken kann?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.