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