Forum: Mikrocontroller und Digitale Elektronik LCD-Display von Conrad


von Sebastian (Gast)


Lesenswert?

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

von Sebastian__ (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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

von Schmittchen (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

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

von MdeWendt (Gast)


Lesenswert?

Hallo,

ja das ist für ein vierzeiliges Display normal - dann kann es ja jetzt 
mit deem Testen der Software losgehen...

von DUDE (Gast)


Lesenswert?

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.

von Rudolf Sosnowsky (Gast)


Lesenswert?

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

von DUDE (Gast)


Lesenswert?

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.

von DUDE (Gast)


Lesenswert?

Welche Frequenz hat dein Quarz?

von Sebastian (Gast)


Lesenswert?

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

von Rudolf Sosnowsky (Gast)


Lesenswert?

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

von Michael (Gast)


Lesenswert?

@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

von Rudolf Sosnowsky (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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

von Rudolf Sosnowsky (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.