Forum: Mikrocontroller und Digitale Elektronik Inizalisierung 8-Bit Ansteuerung LCD läuft nicht!!!


von Michael Thom (Gast)


Angehängte Dateien:

Lesenswert?

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

von jack (Gast)


Lesenswert?

Schreib' mal eine ganz einfache Initialisierung ohne das Busy-Flag
abzufragen. Also einfach die Ini-Befehle mit den entsprechenden Warte-
zeiten dazwischen.

von Joe (Gast)


Lesenswert?

Pullups an P0 ?

von Michael Thom (Gast)


Lesenswert?

Pullup`s sind an P0

von Michael Thom (Gast)


Lesenswert?

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);

}

von Karl H. (kbuchegg)


Lesenswert?

Zuerst die Daten anlegen und erst dann mit dem E Pin
wackeln.

von Michael Thom (Gast)


Lesenswert?

Hey,

Danke werde es ausprobieren!

mfg

Michael

von Karl H. (kbuchegg)


Lesenswert?

Ich sehe nicht, wie du den RS Pin vom LCD bedienst.

Lies dir doch mal im AVR-Tutorial den Abschnitt über
das LCD durch. Das ist zwar Assembler und eine 4-Bit
Ansteuerung, aber die Prinzipien der Ansteuerung
sind dieselben (uns soviel Assembler um zu verstehen
was da abgeht, kannst du auch).

http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD

von Michael Thom (Gast)


Lesenswert?

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

von jack (Gast)


Lesenswert?

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.

von SiO2 (Gast)


Lesenswert?

Und immer schön die EnableCycletime einhalten. Das Timing ist meistens 
das Problem bei LCD-programmen-

von Michael Thom (Gast)


Lesenswert?

Assembler kann ich garnicht! Werde es aber versuchen zu lesen und 
verstehn! Kann ja nicht so schwer sind, oder mit den Kommentaren.

Michael

von Michael Thom (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Michael Thom (Gast)


Lesenswert?

RS, RW und E2 habe ich auf 0 gesetzt!

von Michael Thom (Gast)


Lesenswert?

Hey,

könntes es auch daran liegen das ich bei µVision3 eine falsche 
Einstellung haben könnte?

Michael

von Peter D. (peda)


Lesenswert?

Michael Thom wrote:
> RS, RW und E2 habe ich auf 0 gesetzt!

Wen Du E1 und E2 hast, dann sind das 2 Controller, d.h. Du must beide 
initialisieren.


Peter

von Michael Thom (Gast)


Lesenswert?

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

von Michael Thom (Gast)


Lesenswert?

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

von Falk (Gast)


Lesenswert?

@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

von Karl H. (kbuchegg)


Lesenswert?

> 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.

von jack (Gast)


Lesenswert?

>Rot = V_0 //Kontrast Spannung

Soll das heißen, daß V_0 auf 5V liegt?
Poti zwischen 5V und Gnd, Schleifer an V_0.

von Michael Thom (Gast)


Lesenswert?

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

von Michael Thom (Gast)


Lesenswert?

Sorry!

Also das Poti ist an 5V und GND des Steckers angeschlossen und der 
Schleifer geht ins LCD!

Michael

von Michael Thom (Gast)


Lesenswert?

Hi,

hat keiner eine Antwort. Warum bei mir alle vier Zeilen im Display 
angezeigt werden?

Michael

von Falk (Gast)


Lesenswert?

@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

von Michael Thom (Gast)


Lesenswert?

Jup,

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

mfg

Michael

von Karl H. (kbuchegg)


Lesenswert?

Die Kontrastspannung ist meist nahe 0V oder ein klein
wenig darüber. Daher das Poti: um das einstellen zu können´.

Es gibt allerdings auch LCD die eine negative Kontrastspannung
brauchen.

von Falk (Gast)


Lesenswert?

@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

von Karl H. (kbuchegg)


Lesenswert?

> 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.

von Michael Thom (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Michael Thom (Gast)


Lesenswert?

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

von Michael Thom (Gast)


Lesenswert?

Moinsen!!!

Für jeden der mal Testen möchte mit einem AT89C51CC03 U eine Wintek 
WD-C2704M-1HNN an zu steuern!

Ist nur eine Testversion ob das Display klappt!

MfG

Michael

von Michael Thom (Gast)


Angehängte Dateien:

Lesenswert?

Oh! Sorry habe vergessen sie an zu hängen!

So jetzt aber.

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.