Forum: Mikrocontroller und Digitale Elektronik Problem mit LCD 16x2 und µC


von Stefan V. (lj-products)


Lesenswert?

Hallo Leute,

habe ein Problem mit meinen LCD.

LCD ist das hier:

http://www.allspectrum.com/store/product_info.php?products_id=967&osCsid=e896dbea4c1a8dedbdcb89230a7bcc5a

Angeschlossen habe ich es wie folgt:

http://www.roboternetz.de/wissen/index.php/Bascom_und_LCD%27s#LCD_Display

Das Poti für Kontrast funktioniert auch, denn die Schwarzen Kästchen 
kann ich auch sehen.

Hier mein Programm in Bascom:

 $regfile = "m16def.dat"
 $crystal = 16000000
 $baud = 19200
 $hwstack = 100
 $swstack = 100
 $framesize = 100


 Config Portd = Output
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

 Config Lcd = 16 * 2                                        'configure 
lcd screen
 Config Lcdbus = 4

 initlcd
 Cls

 Do
 Toggle Portd.6
 Locate 1 , 1
 Lcd "test"
 Wait 1
 Loop
 End


Mein Problem ist, dass auf den Display nichts angezeigt wird. 
Verkabelung ist in Ordnung. Habe es auch schon mit einen anderen Display 
ausprobiert (TC1602A von Pollin).

Genau das selbe Problem. Sehe nur die Schwarzen Balken sonst nichts. 
Könnt ihr mir vll weiter helfen?

Hab auch schon Initlcd ausprobiert, funktioniert auch nicht.

Danke schonmal für eure Antworten.

Bye

von holger (Gast)


Lesenswert?

LCD Problem Nr. 200768933

Such hier im Forum. Da wirst du bestimmt was finden.
Oder prüfe dein Verkabelung. Das könnte schneller gehen.

von Stefan V. (lj-products)


Lesenswert?

Hi, das Forum habe ich bereits durch. Hab keine Infos gefunden die mir 
weiter helfen.
Und wie bereits erwähnt, Verkabelung ist auch in Ordnung. Bye

von holger (Gast)


Lesenswert?

>Hi, das Forum habe ich bereits durch. Hab keine Infos gefunden die mir
>weiter helfen.
>Und wie bereits erwähnt, Verkabelung ist auch in Ordnung. Bye

Dann sind deine LCDs wohl defekt ;)
Kann ich die haben?

von Spezi (Gast)


Lesenswert?

Hallo,

wie ist der Pin 5 des Displays (R/W) angeschlossen? Dieser muss mit GND 
(0V) verbunden sein, sonst geht das Display nicht (richtig).

Die Kommandos "Config Lcdbus = 4" sowie "Config Portd = Output" sind für 
die LCD-Initialisierung im Pin-Modus nicht erforderlich; beides wird 
durch den Befehl "Config Lcdpin = ..." erledigt. Zum Testen einfach mal 
auskommentieren.
Siehe dazu auch die LCD-Beispielprogramme in der BASCOM-Hilfe.

von Stefan V. (lj-products)


Lesenswert?

Hi, rw liegt auf Ground. D0-D3 lag auf auf 0v. Hab ihn jetzt mal auf 
high gelegt und schon verschwinden die schwarzen Kästchen in der 1. 
Zeile. (initialiesierung hat geklappt oder?) leider zeigt es mir danach 
auch nichts an. Am kontrastpoti hab ich auch gedreht. Leider keine 
Veränderung. Hab auch schon vor und nach der initlcd ein wait von 2 
eingefügt um sie zu verlangsamen. Auch ohne Erfolg. Sonst noch eine 
Idee? Bye

von gast (Gast)


Lesenswert?

Sind nicht D0 bis D3 die Datenleitungen ????
Was haben die auf 5V oder GND zu suchen ?
Oder Funktioniert das LCD anders ?

von Klaus W. (mfgkw)


Lesenswert?

Im 4-Bit-Modus werden D0-D3 nicht benutzt; ich habe sie bisher immer
offen gelassen.
Genutzt werden D4-D7.

(Mein letzter Fehler war, D4-D7 in der falschen Reihenfolge 
anzuschließen...)

von Klaus W. (mfgkw)


Lesenswert?

Der Link ist übrigens ein 20x2; ist es wirklich die richtige 
Beschreibung?

von Stefan V. (lj-products)


Lesenswert?

Hi, ja das ist der richtige Link. Habe nur das 16x2 noch drin weil ich 
das Problem auch mit den Display von pollin habe. Wie bereits gesagt im 
4 Bit Modus sind d0-d3 nicht belegt. Einer schreibt man soll sie in der 
Luft lasssen, ein anderer auf Ground und manchmal soll man sie auf 5v 
hängen... Was ist den nun richtig? Bye

von Klaus W. (mfgkw)


Lesenswert?

Nachdem der LCD-Controller D0 bis D3 gar nicht auswertet, würde ich
VERMUTEN, es ist egal.

Probiert habe ich es bisher nur, sie gar nicht anzuschließen.
Das hat bei mir nie zu Problemen geführt; getestet mit diversen
LCD-Typen und immer 4-Bit-Modus und R/W fest auf GND.

von Karl H. (kbuchegg)


Lesenswert?

Und wenn schon, dann auf GND

von Karl H. (kbuchegg)


Lesenswert?

Klaus Wachtler schrieb:

> (Mein letzter Fehler war, D4-D7 in der falschen Reihenfolge
> anzuschließen...)

Etiam tu!
Und ich dachte, nur ich könne so blöd sein, dass mir das passiert und 
ich es eine halbe Stunde lang nicht bemerke :-)

von Klaus W. (mfgkw)


Lesenswert?

ich habe etwa doppelt so lange gebraucht, daß ist der Unterschied
zwischen doof und richtig doof.

von Klaus W. (mfgkw)


Lesenswert?

Karl heinz Buchegger schrieb:
> Und wenn schon, dann auf GND

(Dann aber natürlich dazu sagen, daß das nur mit R/W auf GND gut geht.
Wenn das nicht sicher ist, lieber D0 bis D3 über einen Widerstand
auf einen Pegel legen.)

von Stefan V. (lj-products)


Lesenswert?

Ok. Aber warum funktioniert dann das initialisieren wenn ich sie auf 5v 
lege? ... Leider klappt die Ausgabe noch immer nicht. Vll Fehler von 
bascom??? Bye

von Stefan V. (lj-products)


Lesenswert?

Oder könnte es auch an der Frequenz vom Quarz liegen? Momentan betreibe 
ich ja den ic mit 16 MHz. Bye

von Karl H. (kbuchegg)


Lesenswert?

Stefan Voll schrieb:
> Ok. Aber warum funktioniert dann das initialisieren wenn ich sie auf 5v
> lege?

Offensichtlich hat es eh nicht geklappt.
Sonst würde das Display ja was anzeigen.

> Vll Fehler von
> bascom??? Bye

Möglich. Kontrolliere trotzdem zum 20-mal die Verdrahtung.
Hast du am Display auch wirklich D4-D7
Sind die am Controller auch wirklich auf d0 bis d3
Ist die Reihenfolge richtig? D4 muss an d0, D5 an d1 etc.
Sind die Steuerleitungen auch richtig?
Haben alle Leitungen Durchgang (Mit Durchgangsprüfer kontrollieren. Bei 
einer Messspitze an der LCD-Kabel-Kontaktlötstelle und der anderen am µC 
Pin muss es piepsen)

Ich weiß, du hast das alles schon kontrolliert. Aber kontrolliere es 
nocheinmal.

von Stefan V. (lj-products)


Lesenswert?

Ok check ich heute Abend gleich nochmal alles durch. An den 16 Mhz kann 
es nicht liegen oder? dass Vll das Initialisieren zu schnell abläuft?

Sollte ich es mal mit den Internen Takt probieren?

bye

von Stefan V. (lj-products)


Lesenswert?

Also hab jetzt das 20x2 Display hinbekommen. Verdrahtung hat gepasst. 
War am Code gelegen:

Hier der Neue Code:

 $regfile = "m16def.dat"
 $crystal = 16000000
 '$baud = 19200
 $hwstack = 100
 $swstack = 100
 $framesize = 100


 Config Portd = Output
 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
 'Wait 2
 Config Lcd = 20 * 2                                        'configure 
lcd screen
 Config Lcdbus = 4
 'Wait 2
 Initlcd
 'Wait 2
 Cls

 Do
 Toggle Portd.6
 Locate 1 , 1
 Lcd "test"
 Wait 1
 Locate 2 , 1
 Lcd "hallo"
 Wait 1
 Cursor off blink
 Loop
 End


Nun habe ich das 16x2 Display von Pollin angeschlossen, mit der selben 
verdrahtung aber dieses läuft nicht!

Es scheint sich nicht zu initialisieren. (Die schwarzen Balken gehen 
nicht weg) Woran könnte dies noch liegen?

bye

von Stefan V. (lj-products)


Lesenswert?

Oh und eine Frage hab ich auch noch:

Was ist der Unterschied zwischen "FSTN" und "STN" Displays?

Bye

von Klaus W. (mfgkw)


Lesenswert?

und wo ist jetzt der prinzipielle Unterschied zu oben,
außer 16*2 bzw. 20*2 und daß $baud auskommentiert ist?

von Erba57 B. (orfix) Benutzerseite


Lesenswert?

Hallo Stefan,

prgramm funktioniert mit internen oder mit externen takt ohne probleme.
Blinkt die led?

kontrolliere mit den ozi oder mit einer led alle datenleitungen.

mfg

orfix

von MWS (Gast)


Lesenswert?

>> und wo ist jetzt der prinzipielle Unterschied zu oben,
>> außer 16*2 bzw. 20*2 und daß $baud auskommentiert ist?

Sobald Bascom die $Baud Deklaration findet, wird die serielle 
Schnittstelle initialisiert, beim ATM16 durch Setzen von RXEN und TXEN 
in UCSRB.

Damit stehen die Pins PD0 und PD1 nicht mehr zur normalen Verfügung. 
Wenn man also die Serielle nicht braucht, die entsprechenden Pins 
dagegen schon, dann kein $Baud reinschreiben. :D

von Stefan V. (lj-products)


Lesenswert?

@ MWS

Ja genau richtig. Das habe ich nicht gewusst. Hab mir grad bei Pollin 
noch ein 16x2 LCD bestellt. Vll ist das alte ja Kaputt weil das 20x2 
funktioniert ja!

bye

von Klaus W. (mfgkw)


Lesenswert?

MWS schrieb:
> ...
> Sobald Bascom die $Baud Deklaration findet, wird die serielle
> Schnittstelle initialisiert, beim ATM16 durch Setzen von RXEN und TXEN
> in UCSRB.
>
> Damit stehen die Pins PD0 und PD1 nicht mehr zur normalen Verfügung.
> Wenn man also die Serielle nicht braucht, die entsprechenden Pins
> dagegen schon, dann kein $Baud reinschreiben. :D

BASIC ist ja noch kranker, als ich dachte.

von MWS (Gast)


Lesenswert?

>> BASIC ist ja noch kranker, als ich dachte.

Was hat das denn mit Basic zu tun ? Das ist eine Bascom Eigenheit, und 
wenn man die nicht kennt, geht's halt nicht.

Hab' mir sagen lassen, daß es in anderen Dialekten auch nicht klappt, 
wenn man die nicht richtig verwendet.

von Stefan V. (lj-products)


Lesenswert?

Hat keiner eine Antwort?

von Hannes L. (hannes)


Lesenswert?


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.