Hallo, ich hab ein LCD-Display von Conrad (16x4) und versuche nun es anzusprechen. Soweit ich weiss, sollte das Display nach richtiger Belegung der Pins 1-3 schwarze Balken anzeigen. Nur leider passiert gar nichts. Auch vorgefertigte Initialisierungssequenzen (von Bascom und Codevision)- auf einem ATMega128 - führen leider nicht zum gewünschten Erfolg (die Pins 1-14 sind eigentlich richtig verbunden). Das einzige, was an dem Display funktioniert ist die Hintergrundbeleuchtung. :-( Hat jemand von euch vielleicht eine Idee, wo der Fehler liegen könnte? Vielen Dank im voraus .. Sebastian
wenn die spannungswersorgung korrekt angeschlossen ist also pin1 0V pin2 5V dann kanns nur noch der kontrast sein der auf pin 3 ist, und da solltest du ja ein poti haben wenn du das mal drehst dann sollen da wo die buchstaben sind schwarze balken kommen. Sebastian
Leider nicht, genau so hatte ich mir das auch vorgestellt ... mit nem 10k - Poti an Pin3 und dann den Kontrast regeln. Ich bin den ganzen Bereich zwischen 0V und 5V durchgegangen, das Diplay blieb aber leider leer. Vielleicht kann man diesen Test nicht mit allen LCD's machen? Mein Mikrocontroller: ATMega128 @ 3,69 MHZ (auf einem STK501) Der Mikrocontroller als solcher funktioniert ansonsten ohne Probleme, so dass ich diesen als Quelle ausschließen würde. Falls noch jemand eine andere Idee hat, kann er sich ja bitte melden. Danke Sebastian
Und du bist dir auch _sicher_, daß du weißt, wo Pin1 und 14 liegt? 1-14 sind zwar meist in dieser Reihenfolge auf der Platine, aber Pin15 und 16 kann mal neben Pin1, mal neben Pin14, oder neben beiden sein. Da gibts die tollsten Belegungen. Zum Testen: Vcc, GND und Kontrastspannung anlegen und die Kontrastspannung verändern bis die Balken kommen (evtl. braucht dein LCD negative Kontrastspannung? (->Datenblatt)). Die Datenleitungen haben damit nichts zu tun, die können auch offen sein. Schmittchen.
Ich bin nochmal den Bereich von 0V bis 5V durchgegangen. Und dabei wurden doch tatsächlich auf dem Display zwei schwarze Balken sichtbar (um 0,3V). Zwar erschienen die Balken nur in der 1. und in der 3. Zeile, aber ich hoffe einfach mal, dass das vorerst für ein vierzeiliges Display normal ist ... Sebastian
Hallo, ja das ist für ein vierzeiliges Display normal - dann kann es ja jetzt mit deem Testen der Software losgehen...
Dummer weise hab ich schon seit ca. 3 Monaten das gleiche Problem. Zum einen hab ich das Display das auch hier auf der Homepage gezeigt wird, und zum anderen hab ich das Display "DISPLAYTECH 402A". Ich hab so ziemlich alles schon ausprobiert um den Schwarzen Balken weg zu kriegen. Gestern hab ich ca. 1h versucht die Wartezeit: //;erzeugt den Enable-Puls //lcd_enable: // sbi PORTD, 5 ;Enable high // nop // nop // nop ;3 Taktzyklen warten // cbi PORTD, 5 ;Enable wieder low // ret ;Und wieder zurück mit mehreren NOP's zu zu verlängern. Aber leider ohne erfolt. Jemand noch irgendwelche ideen? PS: Kontrast wird jedes mal mit 10k Poti überprüft, und Pinbelegung stimmt 100%. PS: AVR 8515, STK500(8MHz), Software von dieser Seite.
Hey DUDE, :) wenn die Software erprobt ist, und die Verdrahtung stimmt, kann es natürlich auch an der mangelhaften Qualität der Signale liegen. Wie lang ist das Kabel zwischen AVR und Display? Wenn es nicht funktioniert, probiere es nochmal mit einem max. 30cm langen Kabel. Kannst Du die Signale mit einem Oszilloskop messen? Liegen am Display 5V an? Hast Du auch die Masse (Gnd-) Leitung angeschlossen? Ich gehe davon aus, dass Du schon alle Leitungen mit einem Durchgangsprüfer getestet hast, auch gegeneinander, um Kurzschlüsse festzustellen. Gruß, Rudolf. Rudolf Sosnowsky +++ LC Design EPSON Technology Partner Internet http://www.LC-Design.de
Ja die leitungen sind wirklich 100% korrekt und die Pin belegung auch. Ich könnte schon mit dem Oszilloskop messen aber mein AVR is OK und die Kabel sind ca 10-20 cm lang.
Hallo, Odyssee - LCD von Conrad - die zweite ... Nachdem nun die schwarzen Balken auf dem Bildschirm zu sehen sind, klappt das mit dem Initialisieren einfach nicht. Ich habe die Ansteuerung im 8Bit-Modus versucht. Die Inittialisierungsroutine läuft auch vollständig durch, aber auf dem Display ändert sich gar nichts. Die Verbindungen hab ich schon mehrmals geprüft. Die Pegel sind meiner Meinung nach auch sehr gut. Mich wundert folgendes: Wenn ich an einen Pin des Mikrocontrollers Low "sende", bleibt auf der anderen Seite der Leitung bei den meisten Pins eine Spannung von 5V. Hängt das eventuell damit zusammen, dass das Display erst beim Wechseln des Enable-Signals von High nach Low übernimmt? Kann es vielleicht sein, dass ich den Pins für die LCD-Kommunikation falsche Richtungen gegeben habe? (Im Moment sind alle auf Output)? Eigentlich lass ich dem Display auch genügend Zeit (ca. 1s), um sich selbst zu inittialisieren. Für die Wartezeit zwischen den Befehlen hab ich 3 NOPs (bei 3,69 MHz). Das sollte eigentlich reichen. Falls einer von euch eine Idee hat, wo mein Fehler liegt, kann er sich ja bitte melden. Danke, Sebastian
Hallo Sebastian, so ganz werde ich aus Deiner Fehlermldung nicht schlau. Was meinst Du mit "der anderen Seite"? Natürlich müssen die Pins auf Output geschaltet werden, wenn Du das Display beschreiben willst. Zum Lesen des Busy-Flags mußt Du die Richtung des Datenbusses natürlich umdrehen (Input). Wie kommst Du darauf, dass 3 NOPs als Wartezeit zwischen zwei Befehlen ausreichen? Dem ist nicht so! Der HD44780 ist relativ langsam (weil stromsparend). Im Datenbuch steht die "Execution time" für jeden Befehl drin. Sie kann zwischen 37µs und 1.52 ms (sic!) schwanken, und diese Zeiten gelten auch nur bei einer Taktfrequenz des HD44780 von 270 kHz. Jetzt kommt der erhobene Zeigefinger: Fragst Du denn nicht das Busy-Flag ab? Wenn Du das tust, hast Du keine Probleme mit irgendwelchen Zeiten. Ich erfahre immer wieder, dass Leute die Software gedankenlos schreiben und sich auf die 37µs festlegen. Das nächste Display (z.B. anderer Hersteller) läuft vielleicht langsamer, und schon ist das Geschrei groß. Wenn man unbedingt die R/W-Leitung festlegen muß, weil ein Port fehlt, oder man nicht bidirektional kommunizieren kann, sollte man einen Sicherheitsfaktor von 150-200% berücksichtigen. Halte Dich einfach an die vorgeschriebene Initialisierungssequenz, inklusive der langen Pausen am Anfang und des dreimaligen Sendens des Bytes "0x38". Dann klappt das schon. Gruß, Rudolf. Rudolf Sosnowsky +++ LC Design EPSON Technology Partner Internet http://www.LC-Design.de
@Rudolf Sosnowsky Wenn ich dich richtig verstehe, kann es also durchaus sein, dass ich ein 2 Zeilen Display zum Laufen bekomme, weil das Timing bei diesem per Zufall stimmt (das Display schnell genug ist) und das gleiche bei einem 4 Zeilen Display (natürlich gleicher Chip gleiche Kontakte ...) nicht mehr funktioniert, weil hier der Controller vielleicht etwas länger braucht!?? Wenn dem so ist, wie lang kann dann die maximale Zeit sein zwischen den einzelnen Befehlen?? Hab gerade mal eben ins Datenblatt geschaut: -der einzige Befehl der max. 1,52 ms braucht ist Return Home (IMHO) -einige Befehle sind abhängig von der Frequenz mit der der HD44780 betreiben wird=>wo kann man die messen/ablesen -bei der Initialisierung muss man auch schon mal 4,1 ms warten, aber wie lange kann man maximal warten? -hab eben gefunden fpmin=125kHz danke für meinungen, antworten
Hallo Sebastian, ob das Display funktioniert oder nicht hat nichts mit der Zeilenzahl zu tun. Displays mit 16x4 oder 20x4 Zeichen haben einen Controller (also nur ein E-Signal), 40x4-Module dagegen zwei (E1 und E2). Die Erscheinungsbilder beider Typen im nicht-initalisierten Zustand sind jedoch ähnlich. Beim 40x4-Display ist das klar, weil je ein Controller die Zeilen 1+2 bzw. 3+4 steuert. Also leuchten Zeilen 1 und 3 dunkel. Bei einem 20x4-Display sorgt die "Verdrahtung" des Moduls dafür, dass die erste und die dritte Zeile dunkel sind. Das liegt daran, dass die Fortsetzung der Spaltenausgänge der Zeile 1 mit Zeile 3 verbunden ist, und 2 mit 4. Mit der Arbeitsgeschwindigkeit des Controllers hat das nichts zu tun. Die maximale Zeit zwischen zwei Befehlen ist unendlich; dafür gibt es keine Einschränkung. Der längste Befehl ist der Return Home, das ist richtig. Die Frequenz kannst Du sicherlich irgendwo auf Deinem Modul messen. Wo genau, hängt vom verwendeten Controller ab. Schau einmal auf die Rückseite: Dort müssten 4 Widerstände mit möglicher Weise parallel geschalteten Kondensatoren sein, so im kOhm-Bereich. Die sind es nicht. Dann ist irgendwo ein einzelner Widerstand, im Bereich 80-120kOhm. Der ist es. An einem Ende kannst Du die Frequenz messen. Bei der Initialisierung kannst Du auch beliebig lange warten; die Mindestzeit braucht der Controller, um seine state machine zu initialisieren. Das ist durch das Design bedingt. Was ist mit dem Busy-Signal? Was macht die R/W-Leitung? Auf welchem Pegel liegt Dein Pin 3 (Vee/Vlcd/Vo)? Er sollte beim Einschalten auf keinen Fall negativer als Gnd sein; später darf das schon sein (Power sequencing). Viel Erfolg beim Suchen! Gruß, Rudolf. Rudolf Sosnowsky +++ LC Design EPSON Technology Partner Internet http://www.LC-Design.de
Hi nochmal, Um diesen Thread zum Abschluss zu bringen : Das große Suchen ist beendet. :-) Das Display läuft endlich ... sogar alle 4 Zeilen kann ich jetzt beschreiben. Der Hauptfehler lag wahrscheinlich im Timing. Sebastian
Hallo Sebastian, herzlichen Glückwunsch! Jetzt sind wir aber neugierig: Vorher gings nicht, und jetzt gehts doch: Was hast Du geändert? Es ist immer schön, wenn man aus so einer langen Geschichte noch etwas lernen kann. Beschreibe doch mal, was Du verändert hast, und welche Fehler Du beseitigt hast, und welcher Tipp hilfreich war. Dann können auch andere davon profitieren. Danke! Gruß, Rudolf. Rudolf Sosnowsky +++ LC Design EPSON Technology Partner Internet http://www.LC-Design.de
Hi Rudolf, der größte Irrtum war die Vorstellung, dass 3 NOP's zwischen zwei Befehlen reichen. Nachdem du dann geschrieben hattest, dass es keine maximale Wartezeit zwischen zwei Befehlen gibt, hab ich diese einfach auf 1 Sekunde hochgesetzt. Bei dieser Einstellung konnte man dann mit Hilfe von Leuchtdioden auch sehen, welche Pins, wann belegt werden, und wann das Enable-Signal von H nach L wechselt. Dabei hab ich dann festgestellt, dass zu allem Überfluss eine Leitung kein sauberes Signal liefert (um die 2,5V anstatt 5 V - Warum auch immer...). Nachdem diese ausgetauscht war, und ich eine "Standard-Initialisierungsfrequenz" durchlief, ging das Display schonmal aus (die schwarzen Balken verschwanden). Zum Schluss blieben dann noch ein paar Änderungen an der Initialisierung (z.B. 4- statt 2-zeilig), bis das Display einwandfrei lief. Die Abfrage des Busy-Flag hab ich (noch) nicht eingebaut, dafür aber einen genügend hohen Sicherheitsfaktor beim Warten ... Danke nochmal für die Hilfe, Sebastian
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.