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
Schreib' mal eine ganz einfache Initialisierung ohne das Busy-Flag abzufragen. Also einfach die Ini-Befehle mit den entsprechenden Warte- zeiten dazwischen.
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); }
Zuerst die Daten anlegen und erst dann mit dem E Pin wackeln.
Hey, Danke werde es ausprobieren! mfg Michael
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
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
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.
Und immer schön die EnableCycletime einhalten. Das Timing ist meistens das Problem bei LCD-programmen-
Assembler kann ich garnicht! Werde es aber versuchen zu lesen und verstehn! Kann ja nicht so schwer sind, oder mit den Kommentaren. Michael
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.
Hey, könntes es auch daran liegen das ich bei µVision3 eine falsche Einstellung haben könnte? Michael
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
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
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
@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.
>Rot = V_0 //Kontrast Spannung
Soll das heißen, daß V_0 auf 5V liegt?
Poti zwischen 5V und Gnd, Schleifer an V_0.
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
Sorry! Also das Poti ist an 5V und GND des Steckers angeschlossen und der Schleifer geht ins LCD! Michael
Hi, hat keiner eine Antwort. Warum bei mir alle vier Zeilen im Display angezeigt werden? Michael
@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
Jup, es werden mir alle vier Zeile angezeigt, worin alle dots an sind! mfg Michael
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.
@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.
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.