Forum: Mikrocontroller und Digitale Elektronik Eigenes Zeichen auf LCD definieren


von Matze (Gast)


Angehängte Dateien:

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.

von LCD (Gast)


Lesenswert?

Schau da mal nach.
Die haben Datenblätter wo das genau beschrieben ist.

http://www.lcd-module.de/

von Matze (Gast)


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

von holger (Gast)


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.

von Matze (Gast)


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.

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.