Forum: Mikrocontroller und Digitale Elektronik GLCD mit SSD1289


von Unklar (Gast)


Lesenswert?

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.

von mue-c (Gast)


Lesenswert?

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.

von mue-c (Gast)


Lesenswert?

Schau mal auf Seite 43 im Datenblatt.

von Unklar (Gast)


Lesenswert?

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.

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

Hast du das inzwischen zum Laufen bekommen?

von Georg W. (gewe)


Lesenswert?

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

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

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 :)

von Georg W. (gewe)


Lesenswert?

@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

von Joel B. (Firma: µGFX) (tectu)


Lesenswert?

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
Noch kein Account? Hier anmelden.