www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD ansteuern mit Atmega32


Autor: Musti M. (saidov11)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass die Balken verschwinden ist schon mal gut ...
Hast Du die Kontrastspannung richtig eingestellt?
Manche LCDs wollen auch eine leicht negative Spannung ...

Autor: Martin e. C. (eduardo)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
danke für die schnelle Antwort.
ja ich drehe an den Poti wie ich will, passiert aber leider nicht.
Ich muss sagen. Der lcd hat schon mal was gezeigt. Aber seit ich mit 
angeschlossen LCD geflasht habe, zeigt er nichts mehr.

Autor: Martin e. C. (eduardo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was für Board hast du? was für Proger hast du?
nimmt mal der Proger Mal raus und guck was passiert? manchmal zieht er 
Strom  vom Board und passieren so seltsame Sachen am LCD "das habe ich 
hier im Forum gelesen"

Autor: Kay I. (imperator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Programmer ist immer raus, wenn der LCD angeschlossen ist. Auch mit 
warten bringt das nicht.

Der LCD hat schon mal was gezeigt, allerdings zeigt er alles in der 
Zeile eins Pos eins.

Autor: Martin e. C. (eduardo)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

danke für das Link. Das werde ich mal probieren.

Gruß

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider ist das Verhalten immer nich das gleiche.

Eine Frage

bei mir ist die R/W an Gnd angeschlossen, Gnd entspricht Pin 8 an Port 
A.
leider kann ich das nicht in meinen Programm anpassen, weil in io.h nur 
7 Pins hier gibt.
kann jemand was dazu sagen?

danke

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Musti Maroane schrieb:
> bei mir ist die R/W an Gnd angeschlossen, Gnd entspricht Pin 8 an Port
> A.

Kannst Du das genauer ausführen?  Vielleicht gibt das nur für mich 
keinen Sinn, aber

- R/W kann entweder an GND angeschlossen sein oder an einem Port, und

- PIN 8 des Mega32 ist nicht Port A, und wenn BIT gemeint ist, gibt es 8 
nicht.

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Musti M. (saidov11)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK.

Danke

Autor: uwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: uwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.