Inizalisierung 8-Bit Ansteuerung LCD läuft nicht!!!

Gast #491340
Moin euch allen!

Mit einem At89C51CC03U möchte ich ein LCD ansteuern im 8-Bit Modus. Die 
Anschlüsse zum Controller sind Port 0 und Port 2; wobei ich Port 0 nur 
für die Steuerbefehle benutze.
Ich habe das LCD-Display von Pollin für 5,-€, es hat den HD44780 
Controller.

Nun zu meinen Problem:

Wenn ich mein µC und LCD anschalte werden auf den Display die erste und 
dritte Zeile angezeigt! Nach den ich meine init_LCD abfrage blinkt das 
Display nur noch. Das sieht reichlich komisch aus, da nur das hintere 
drittel alle 4 Zeilen blinken.

Und ich weis nicht mehr weiter, bitte kann mir jemand helfen!?

Ich programmier mit µVison3 und in C

MFG

Michael
Angehängte Dateien:
Gast
Schreib' mal eine ganz einfache Initialisierung ohne das Busy-Flag
abzufragen. Also einfach die Ini-Befehle mit den entsprechenden Warte-
zeiten dazwischen.
Gast
Hi,

habe eine einfache init geschrieben. Doch sind im hinteren drittel in 
allen vier Zeilen die ganzen dots an! Zumindest blink es nicht mehr.

void init_LCD()
{
int i;

  time(50);

  for(i=0;i<3;i++)
  {
    E1 = 1;
    time(100);
    P2 = 0x30;
    time(100);
    E1 = 0;
    time(100);
  }

  E1 = 1;
  time(100);
  P2 = 0x30;
  time(100);
  E1 = 0;
  time(100);

  E1 = 1;
  time(100);
  P2 = 0x8;
  time(100);
  E1 = 0;
  time(100);

  E1 = 1;
  time(100);
  P2 = 0x1;
  time(100);
  E1 = 0;
  time(100);

  E1 = 1;
  time(100);
  P2 = 0x6;
  time(100);
  E1 = 0;
  time(100);

}
Gast
Nee, funzt auch nicht so richtig! Das LCD zeigt mir nach wie vor elf 
felder von rechts nach links in allen vier zeilen an!

Bin für jede Hilfe dankbar!

MFG

Michael
Gast
Also in meinem Programm (assembler) lese ich:
R/W auf 0 (nur lesen)
RS auf 0 (Befehle)
0x38 ausgeben (zwei Zeilen,8-Bit-Bus)
0xo6 ausgeben (Inkrement bei festem Display)
0x0C ausgeben (Display an, Cursor aus, Blinken aus)
0x01 3 mal ausgeben (sonst werden die ersten Zeichen verschluckt)
und natürlich zwischendurch warten.
Das müsste eigentlich funktionieren.
Gast
Assembler kann ich garnicht! Werde es aber versuchen zu lesen und 
verstehn! Kann ja nicht so schwer sind, oder mit den Kommentaren.

Michael
Gast
Die folgende Anschlußbelegung am LCD ist aber richtig, oder!? Nicht das 
da der Fehler liegen könnte.

Pin    Funktion

1      GND
2      V_dd
3      V_0
4      RS
5      R/W
6      E1
7      E2
8      D0
...
15     D7

Grüße

Michael
LCD's haben normalerweise eine Standardbelegung.
Lediglich die Leserichtung der Pins (ob 1 jetzt links
oder rechts ist) variiert.

Du musst E und RS richtig bedienen! (Von RS war in deinem
Code Schnipsel überhaupt nichts zu sehen)

Die Wartezyklen ruhig am Anfang länger als gefordert
wählen. Kürzer machen kann man sie immer noch.
Wenn du zulange wartest bis zur nächsten Aktion
ist das OK. Wenn du aber zu kurz wartest, kommt der
HD44780 nicht hinterher.

Und studier noch mal die Initsequenz von Jack (14:48).
Seine Initialisierungsbytes unterschieden sich dramatisch
von deinen. Insbesondere schickst du am Anfang 3 mal ein
0x30, was soviel wie '4-Bit Modus' heist.
Gast
Wie kann man das am besten lösen. Erst einen dann den anderen oder beide 
gleichzeitig! Wobei ich mir letzteres nicht vorstellen kann, da es 
irgendwie zum Fehler kommen müsste.

Michael
Gast
Moin,

nun habe ich eine einfache init geschrieben und es läuft immer noch 
nicht wie geplant. Darum habe ich eine frage (bevor ich der Software die 
Schuld geben), wenn das LCD mit Strom versorgt wird ist was auf der 
Anzeigen zu sehen oder nicht? Und wenn ja, was sollte ich sehen?

Ich habe es an ein PC-Netzteil angeschlossen:

erster Stecker

ROT = 5V
Schwarz = GND

zweiter Stecker

Rot = V_0 //Kontrast Spannung
Schwarz = GND

mfg

Michael
Gast
@Michael Thom

>nun habe ich eine einfache init geschrieben und es läuft immer noch
>nicht wie geplant. Darum habe ich eine frage (bevor ich der Software die
>Schuld geben), wenn das LCD mit Strom versorgt wird ist was auf der
>Anzeigen zu sehen oder nicht? Und wenn ja, was sollte ich sehen?

>Ich habe es an ein PC-Netzteil angeschlossen:

Das macht man nicht. Wenn du einen Kurzschluss baust, fackelt dir die 
Platine ab. Das Netzteil macht locker 20A! Nimm ein kleines 
Steckernetzteil (+ 7805) oder Batterien. Ausserdem spucken PC-Netzteile 
mamchmal arg HF-Störungen, das kann auch ins Auge gehen.

>ROT = 5V
>Schwarz = GND

Geht, aber siehe oben.

>Rot = V_0 //Kontrast Spannung
>Schwarz = GND

Die Kontrastspannung muss nahe 0V sein (1,5..0V). Bei 5V am 
Kontrastspannugspin siehst du gar nichts.

MfG
Falk
> wenn das LCD mit Strom versorgt wird

und sonst nichts angeschlossen ist.

Normalerweise zeigt das LCD dann in der ersten
(und bei dir in der dritten) Zeile einen Balken
an. Damit kann man dann schon mal den Kontrast des
Displays einstellen:
Die erste Zeile ist dunkel (alle Pixel an), in der 2.ten
Zeile sollen die Pixel noch nicht sichtbar sein.
Gast
Hi Falk,

es kommen am Roten Anschluß nur 5V mit ungefähr 3,3 mA raus. Da kann 
nichts passieren, habe es vorher natürlich nachgemessen.

Danke Karl heinz Buchegger, dann ist was nicht in ordnung mit mein LCD! 
Und ich wundere mich warum nichts geht hier.
Mir werden alle vier Zeilen angezeigt.

mfg

Michael
Gast
@Michael Thom

>es kommen am Roten Anschluß nur 5V mit ungefähr 3,3 mA raus. Da kann
>nichts passieren, habe es vorher natürlich nachgemessen.

Schon klar, es fliesst normalerweise nur soviel Strom wie die ICs 
brauchen. Aber wenn du beim Basteln mal nen Kurzschluss machst kann das 
böse ins Auge gehen bei 20A und mehr die dann fliessen.

>Mir werden alle vier Zeilen angezeigt.

Was heisst das?  Schwarze Balken?

MfG
Falk
Gast
@Michael Thom

>es werden mir alle vier Zeile angezeigt, worin alle dots an sind!

Na das ist ja schon mal etwas. D.H. das LCD hat Saft und auch die 
richtige Kontrastspannung. Fehlt "nur" noch die Initialisierung. Siehe 
Tutorial.

MFG
Falk
> Na das ist ja schon mal etwas. D.H. das LCD hat Saft und auch die
> richtige Kontrastspannung.

Alle 4 Zeilen?

Es sollten doch nur 2 Zeilen mit Balken sein.
Die anderen beiden sind nicht sichtbar.
Wenn er alle 4 Zeilen deutlich als Balken sieht,
kann doch die Kontrastspannung nicht stimmen.
Gast
Also ich werde gleich zur Probe das LCD am LPT Port anklemmen und mit 
der Pollin Software testen. Werde aber nur die Steuer.- und 
Datenleiungen anklemmen.
Meine init hänge ich mal an, vielleicht übersehe ich nur einen simplen 
Fehler drin.

Michael

PS: Mit dieser init geht dann alle dots aus! Doch mehr passiert nicht.
Angehängte Dateien:
Gast
Taja,

da es sich nicht mit der Software von Pollin inizalisieren lässt. Bleibt 
der Traurige Schluß da, es ist geschrottet von mir.

Danke an Alle die mir geholfen haben und mich unterstützt haben !!!

Werde ein neues ordern und vorsichtiger sein.

MfG

Michael

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.