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.
Du hast wahrscheinlich RS und Enable angeschaltet, wenn du R/W auch hast dann brauchst du keine delay-Schleifen.
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.
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
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
Hui ich hatte die Erleuchtung. Alles geht alles ist palletti. Ich habe einfach die Sache mit dem Preprozessor eingefügt. Vielen Dank!
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
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?
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.