www.mikrocontroller.net

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


Autor: Michael Thom (Gast)
Datum:
Angehängte Dateien:

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

Autor: jack (Gast)
Datum:

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

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pullups an P0 ?

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pullup`s sind an P0

Autor: Michael Thom (Gast)
Datum:

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

}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst die Daten anlegen und erst dann mit dem E Pin
wackeln.

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

Danke werde es ausprobieren!

mfg

Michael

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: jack (Gast)
Datum:

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

Autor: SiO2 (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Michael

Autor: Michael Thom (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS, RW und E2 habe ich auf 0 gesetzt!

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

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

Michael

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: Falk (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: jack (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry!

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

Michael

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Michael

Autor: Falk (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup,

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

mfg

Michael

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Falk (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Michael Thom (Gast)
Datum:
Angehängte Dateien:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:

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

Autor: Michael Thom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Oh! Sorry habe vergessen sie an zu hängen!

So jetzt aber.

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.