Forum: Mikrocontroller und Digitale Elektronik T6963 Display Treiber Bitmap Anzeige


von Michael (Gast)


Lesenswert?

Hallo,

ich habe hier ein GLCD Display mit T6963C Treiber und einer Auflösung 
von 128x64 Pixeln. Auf diesem ich gerne Bitmaps anzeigen möchte, was 
bisher auch soweit funktioniert, allerdings mit Einschränkungen.

Ausgangskonfiguration der genutzen Hardware ist eine relativ nackte 
Platine mit einem ATMega645 und dem GLCD.

Zuerst habe ich es mit Pixel einzeln setzen probiert was allerdings von 
der Geschwindigkeit her ziemlicher Käse ist. Nun beschreibe ich den 
Displayspeicher direkt, allerdings bekomme ich das Bitmap nicht genau 
Positioniert sondern immer nur in 8 Pixel Schritten (Wenn ich das 
richtig gesehen habe :)

Die Routine habe ich aus dem easyT6963 Github Repository, allerdings 
lässt diese sich nicht genau Positionieren.

Aber anscheinend habe ich einen Denkfehler, da beim Schreiben in den 
Graphikspeicher ja bei einer X Position die sich nicht durch 8 Teilen 
lassen auch im Byte dementsprechend verschoben werden müssen, seh ich 
das Richtig?
Eventuell sind auch die Graphic Area/Home Werten nicht ganz in Ordnung, 
habe durchs Datenblatt vom T6963 in Kombination mit dem GLCD Datenblatt 
leider nicht herausfinden können welche festen Einstellungen für das 
Display am T6963 festgelegt wurden, oder ich war zu blind dieses zu 
finden. Daher die eher mutmasslichen TA/GA... Werte.

Diese sind momentan auf
1
GLCD_GRAPHIC_AREA 0x10
2
GLCD_TEXT_AREA 0x10
3
GLCD_GRAPHIC_SIZE 0x400
4
GLCD_TEXT_SIZE 0x80
5
GLCD_TEXT_HOME 0x00
6
GLCD_GRAPHIC_HOME 0x80
7
GLCD_OFFSET_REGISTER 2
8
GLCD_EXTERNAL_CG_HOME 0x1400

eingestellt.

Und hier die besagte Bitmap Routine:
1
void drawBitmap(uint8_t x,uint8_t y, const uint8_t *PicName,uint8_t height,uint8_t bytewidth)
2
{
3
  int j = 0;
4
  uint8_t h,i,bitmap;
5
    for (h = 0; h < height; h++){
6
      GLCD_GraphicGoTo(x,y+h);
7
    for (i = 0; i < bytewidth; i++) {
8
      bitmap = pgm_read_byte_near(PicName+(i+j));
9
      GLCD_WriteDisplayData(bitmap);
10
    }
11
    j = j + bytewidth;
12
    }
13
}

Vielleicht hat ja schonmal jemand von euch so ein Display angesteuert 
und evtl auch schonmal Bitmaps angezeigt und hat die passende Routine 
"rumfliegen" ;)

Grüße und vielen Dank im Vorraus
Michael

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.