LCD ansteuern mit Atmega32

OP #1686236
Lesenswert?

Hallo,

Ich habe ein Problem beim Ansteuern eines 16x4 Displays(Lcd 164A).
Angeschlossen ist das Display an den Port A vom ATMega32.
Die Pinbelegung ist:
RS  =PA4
R/W ist an Gnd angeschlossen .
E   =PA5
DB4 =PA0
DB5 =PA1
DB6 =PA2
DB7 =PA3
PA6 und PA7 sind offen.

Beim Einschalten wird in der ersten und dritten Zeile ein schwarzer
Balken angezeigt, die anderen beiden Zeilen sind leer.
wenn die das Programm starte, verschwinden zwar die beiden Balken.Sonst 
passiert nichts.

Den Quellcode und den Schaltplan habe ich als ZIP Datei angehängt.

Ich hoffe es kann mir einer von euch bei meinem Problem helfen.

Danke im Voraus

Gruß
Angehängte Dateien:
#1686261
Lesenswert?

Kay Imperator schrieb:
> Dass die Balken verschwinden ist schon mal gut ...

das bedeutet genau dass der LCD initialisiert ist also ist auf alle 
Fälle ok!

Kay Imperator schrieb:
> Hast Du die Kontrastspannung richtig eingestellt?
> Manche LCDs wollen auch eine leicht negative Spannung ...

hmmm...

wenn beim Einschalten in der ersten und dritten Zeile ein schwarzer
Balken angezeigt wird dann muss du der Kontrastspannung bzw. der 10K 
Poti (nehme ich mal an) etwas drehen bis du was siehst!
Negative Spannung ist hier ja nicht der Fall da du schon die " schwarzer 
Balken" siehst
#1686281
Lesenswert?

Kann auch ein Timing-Problem sein,


nach dem Hochfahren der Spannung musst Du eventuell eine Weile Warten, 
bis die Kommandos richtig verarbeitet werden können.

Nutzt Du die Busy-Signalisierung?

Nochmals zum Kontrast:
Ich hatte es schon, dass vor Initialisierung schwarze Balken da waren, 
nach Init. hat der Kontrast nicht mehr ausgereicht, um alle 
Display-Segmente zu versorgen -> Kontrast wird dann schwächer.
#1686556
Lesenswert?

Hallo Musti,

probiert mal mit folgendes LCD Code von Peter Dannegger:

www.mikrocontroller.net/topic/174303#1672233

das ist der einzige Code wo ich oder besser gesagt wo BEI MIR auf Anhieb 
funktioniert hat mit andere Code mußte ich hier und dort apassen, da 
gucken und und und, das beste an den Code ist dass man alle Pins 
anpassen kann (Datei main.h)!

Gruß
OP #1687384
Lesenswert?

Ah Sorry.

Also: Der LCD ist an einen 10 Poliger Stecker angeschlossen. Pin 1 bis 7 
(10 Polig) entspricht PA0 bis PA7 von Atmega32. Gnd ist Pin 9 und Vcc 
ist Pin 10(10 Polig).
Die R/W ist an Gnd angeschlossen also an Pin 9 von (10 Polig Stecker).
Das Programm will aber wissen, wo der R/W angeschlossen ist.
welchen Wert im Programm soll ich R/W geben?
Z.B
RS  =PA4
E   =PA5

R/w = ?

Gruß
#1687393
Lesenswert?

Wenn das Programm wissen will, wo R/W liegt, musst Du R/W entweder an 
ein passendes Port anschließen oder ein anderes Programm verwenden. 
Eine andere Wahl hast Du nicht.

Hintergrund: Ein LCD-Treiber-Programm kann darauf verzichten, vom LCD zu 
lesen.  Es ersetzt dann die Busy-Abfrage (Abfrage, ob der Controller auf 
dem LCD bereit ist) durch vergleichsweise üppig bemessene Zeitschleifen 
und R/W kann dauerhaft auf GND bleiben.  Dann aber wird der R/W-Pin 
nirgends im Programm auftauchen.  Tut er es doch, hast  den Typ von 
Programm erwischt, der Busy abfrägt und dann braucht das Programm R/W. 
Kannst Du ihn nicht anliefern, musst Du ein anders aufgebautes Programm 
verwenden.
Gast #1687729
Lesenswert?

Musti M. schrieb:
> Die R/W ist an Gnd angeschlossen also an Pin 9 von (10 Polig Stecker).
> Das Programm will aber wissen, wo der R/W angeschlossen ist.
> welchen Wert im Programm soll ich R/W geben?

hallo,
hatte mal ein ähnliches problem mit einem 4-zeilen-LCD unter bascom.
es ging und ging und ging nicht, bis ich R/W statt an masse über einen 
1K-widerstand an +5V angeschlossen habe.
Gast #1687993
Lesenswert?

Hc Zimmerer schrieb:
> Dann hatte das LCD einen anderen Controller oder es war schlicht und
> einfach kaputt.  Wenn R/W=1 ist, kann nämlich nichts in den Controller
> geschrieben werden.

würde mich jetzt mal näher interessieren.
habe das display leider eingebaut und fest verlötet, dass ich im moment 
nicht ohne weiteres nachschauen kann, welchen controller es hat

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren