mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik T6963 Display Treiber Bitmap Anzeige


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael (Gast)


Bewertung
0 lesenswert
nicht 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
GLCD_GRAPHIC_AREA 0x10
GLCD_TEXT_AREA 0x10
GLCD_GRAPHIC_SIZE 0x400
GLCD_TEXT_SIZE 0x80
GLCD_TEXT_HOME 0x00
GLCD_GRAPHIC_HOME 0x80
GLCD_OFFSET_REGISTER 2
GLCD_EXTERNAL_CG_HOME 0x1400

eingestellt.

Und hier die besagte Bitmap Routine:
void drawBitmap(uint8_t x,uint8_t y, const uint8_t *PicName,uint8_t height,uint8_t bytewidth)
{
  int j = 0;
  uint8_t h,i,bitmap;
    for (h = 0; h < height; h++){
      GLCD_GraphicGoTo(x,y+h);
    for (i = 0; i < bytewidth; i++) {
      bitmap = pgm_read_byte_near(PicName+(i+j));
      GLCD_WriteDisplayData(bitmap);
    }
    j = j + bytewidth;
    }
}

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.