Eigenes Zeichen auf LCD definieren

Gast #523659
Lesenswert?
• ▲
▼
Ich versuche jetzt schon seit einigen Stunden ein eigenes Zeichen auf 
einem standart 27*4 LCD darzustellen.
Leider sehe ich mittlerweile den Wald vor lauter Bäumen nicht mehr. Mein 
Quelltext habe ich mal angehangen. Ich benutze einen Mega16 mit 16MHz. 
Ansonsten funktioniert das Display ohne Fehler, außer das mein eigenes 
Zeichen nur Unsinn ist, desshalb denke ich auch nicht das es ein Timing 
Problem ist.
Meine Pin Belegung: E1 E2 RS RW D3 D2 D1 D0

Ich muss doch nur den CGRAM Adresse setzen. Also Ein Kommando setzen mit 
den Daten 0b01nnnzzz
n=Nummer des Zeichen(0...7)
z=Zeilennummer(0...7)
Und anschließend ein Zeichen senden(so als würde ich einen Buchstaben 
aufs Display schreiben wollen) mit meinen Daten. Ich will nur die linke 
Hälfte des Displays "ausmalen", also sende ich 8mal 00011000. Ich sehe 
leider keinen Fehler.

Hat einer von euch eine funktionierendes C-File für das Schreiben eines 
eigenen Zeichens. Ich habe bisher nur ASM gefunden und die sahen meiner 
Meinung nach meiner Vorgehensweise sehr ähnlich.
Angehängte Dateien:
Gast #524107
Lesenswert?
• ▲
▼
Danke erstmal für die Seite. Leider geht es immer noch nicht. Ich hab 
mir die Datenblätter angeschaut und die machen es eigentlich so wie ich, 
aber irgendwie will es nicht gehen.
Ich habe jetzt eine 8MHz Taktfrequenz genommen->Keine Veränderung.
Ich habe alle 128 CGRAM Bytes mit 0b00011000 beschrieben mit dem 
Ergebniss: Beim 0.Zeichen stimmen alle Zeilen bis auf die letzte. Alle 
anderen Zeichen sind Quatsch.
Kann das sein das der RAM defekt ist (es ist ein LCD von Pollin)?
Gast #524121
Lesenswert?
• ▲
▼
@Matze

Du musst die Zeichenadresse * 8 fürs CGRAM setzen.
Grund: ein Zeichen besteht aus 8 Zeilen.

Zeichen 0  CGRAM Adressen 0-7
Zeichen 1  CGRAM Adressen 8-15
.
.
.

Und es reicht wenn du die Start-Zeichenadresse einmal sendest.
Dein Display zählt beim senden der Bytes dann automatisch hoch.
Gast #524642
Lesenswert?
• ▲
▼
Zum ersten Teil deiner Antwort:
Ja danke aber das habe ich ja gemacht. Ich habe alle 64 Bytes 
(8Zeichen*8Zeilen) mit den selben Daten beschrieben, bekomme aber nur 
Müll wenn ich es auslese.

Zum zweiten Teil:
Ich habe es mal versucht die CGRAM Adresse nur einmal zu setzen und die 
Daten fortlaufend zu schreiben (Der CGRAM wird ja automatisch 
incrementiert) und jetzt geht es auf einmal. Danke dir für diesen Tipp. 
Eigentlich hätte es zwar vorher auch gehen müssen, aber egal, hauptsache 
es geht jetzt.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.