mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD timing Probleme


Autor: De Harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallöle,

ich sitze hier mit meinem ATmega8 und habe ein wundervolles LCD Dot 
matrix Modul 20x4. Dieses hat als Controller den HD44780A.
Ich betreibe nun im 4 Bit modus über den PortB des Megas das LCD. R/W 
und Enable liegen auf PB4 und PB5.
Das Programm, welches mit einem 16 MHZ Quarz läuft, macht aber Probleme. 
Ich schreibe den Text "Party" in Assembler auf das LCD. Es kommt aber 
nur "Pat"...oder "Pty" am LCD an. Das Initialisieren funktioniert auch 
nur alle paar mal. Also strom aus, Strom an...Schwarze Blaken...kein 
text...STrom aus, Strom an...Schwarze Balken und halber Text. Ich habe 
alle delay Schleifen auf die 16 MHZ angepasst. Ich hab mal ganz am 
Anfang des Programm ne Sekunde nichts tun eingefügt, um dem LCD zeit für 
den eigen Reset zu lassen. Doch die Initialisierung und die ANzeige des 
textes wurden nicht zuverlässiger. Ich habe vor den High werden des 
Enable ein paar "nop"´s eingefügt, was auch nicht die gewünschte 
zuverlässigkeit gebracht hat.
Ich programmiere in Assembler.
 Ich stehe am Schlauch und weis nichtmehr, wo ich noch ne Pause einfügen 
soll. Der Code für das LCD kommt hier von Mikrocontroller.net. Hab die 
"lcd-routines" eingebunden.

Autor: Hubert G. (hubertg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast wahrscheinlich RS und Enable angeschaltet, wenn du R/W auch hast 
dann brauchst du keine delay-Schleifen.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Timings aus dem Datenblatt funktionieren.
Du wirst warscheinlich falsche Timings haben.

Versuche nicht, tonnenweise kryptische Hexwerte in Deinem Code fest zu 
verdrahten, daß geht schief.

Definiere einmal am Anfang die Quarzfrequenz und dann laß den 
Präprozessor die Anzahl der Loops richtig berechnen. Der macht dann 
keine Schusselfehler.

Der Präprozessor kann 32Bit Berechnungen durchführen, einfach nur die 
Formeln hinschreiben.
Am besten Du definierst Dir ein Delay-Macro mit der Delayzeit als 
Parameter.


Peter

P.S.:
Bei Problemen mit Code, den als Anhang (*.asm-File) posten.

Autor: MandA K. (Firma: MAMIMO STudios) (bastlomat)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die Delay Zeiten hab ich mit "AVR delay loop" berechnen lassen. Da wird 
auf die Quarzfrequenz rücksicht genommen. Aber ich währe sehr Dankbar, 
wenn du mir die Variante des Präprozessors posten könntest. Anbei ist 
der Benutzte ASM File. Die Include Datei für das LCD Poste ich gleich.

Die Zeiten für die Delays finde ich im Datenblatt vom HD44780?...ich 
guck mal nach

Autor: MandA K. (Firma: MAMIMO STudios) (bastlomat)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so der Code für´s LCD

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code scheint o.k. zu sein.

Nur der Enable-Puls scheint mir für 16MHz etwas kurz.
Erhöhe mal die beiden NOP-Reihen auf 16 NOPs (1µs).


Peter

Autor: MandA K. (Firma: MAMIMO STudios) (bastlomat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hui ich hatte die Erleuchtung. Alles geht alles ist palletti. Ich habe 
einfach die Sache mit dem Preprozessor eingefügt. Vielen Dank!

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche auch ein LCD an laufen zu bekommen aber klapp irgenwie 
nicht, Code ist wie im Tutorial.
Mein Problem ist ich sehe im Display NICHTS ! es ist ein 4x20 mit 
Hintergrund Beleuchtung, ich habe wie im Tutorial angesschlosen, 
Hintergrund beleuchtung funktioniert bzw er leuchtet aber das mit dem 
Poti für kontrast geht nicht bzw ich sehe garnichts, ich habe langsam 
von 0 V bis etwa 3.8V mit dem Poti an Pin 3 die Vee angegeben aber 
pasiert nichts

danke für die Hilfe
Gruß
Martin

Autor: MandA K. (Firma: MAMIMO STudios) (bastlomat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei mir ist die Kontrastspannung auf GND also 0V. Welche Tackfrequenz 
benutzt du denn? Wird in deinem Programm das LCD Initialisiert? Kommen 
beim anlegen der Spannung schwarze Balken? Benutzt du 4 bit oder 8bit 
als übertragung? was auch immer gern genommen wird, ist enable und R/W 
zu vertauschen. Hat das LCD auch den HD44708 als Controller? Bist du dir 
sicher, dass du keine kalte Lötstelle hast?

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin
Wenn das Display nicht einmal leicht grau schattierte Felder zeigt, dann 
hast Du vermutlich ein Industrial Display. Dieses braucht zwingend eine 
negative LCD-Spannung (Vee). Wenn Du auf deiner Schaltung einen MAX232 
hast, dann kannst Du Dir helfen, in dem Du diese mit einem Poti gegen 
Masse vom V- Pin des MAX abgreifst. Der Schleifer des Potis kommt an 
Vee. Bitte Poti zuerst auf 0V stellen und langsam gegen V- drehen, da 
Vee irgendwo -7V nicht unterschreiten sollte, der MAX auf V- aber 
zwischen -9V..-12V liefert.

Man kann Vee später auch aus einem Inverter aufgebaut aus einer Diode 
und einem oder zwei Kondensatoren an einem der PWM Ausgänge des AVRs 
aufbauen.
Dann kann man den Kontrast auch per Software einstellen.

Gruß, Astralix

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.