Muss man den GPIO des µC für die 4 (8) Datenbits eines hd44789 Displays auf Ausgang stellen, verstehe ich das richtig? Also kann ich Pins benutzen die NUR Ausgang können?
power schrieb: > Also kann ich Pins benutzen die NUR Ausgang können? Das kommt drauf an, ob du irgendetwas über den Bus vom Display lesen möchtest. Nötig ist das nicht unbedingt.
Meinst Du wirklich, man sollte das Display ohne Lesen des Busy-Flags mit geratenen Delay-Zeiten ansteuern? OK. Nötig ist das nicht unbedingt. Stimmt.
Torsten C. schrieb: > Meinst Du wirklich, man sollte das Display ohne Lesen des Busy-Flags mit > geratenen Delay-Zeiten ansteuern? Wozu gibt es Datenblätter? Und es zwingt einen keiner, da an irgendwelche Limits zu gehen. So schnell kann das sowieso niemand ablesen. Tausende von Anwendungen nutzen die Displays mit fest verdrahtetem R/!W-Pin.
power schrieb: > Ich rede von den Datenleitungen. Nicht R/W. Ohne passenden Pegel auf der R/!W-Leitung kann man über die Datenleitungen versuchen zu lesen, wie man will. Das nützt einem herzlich wenig, weil das Display die Leitungen nicht auf Ausgang schaltet.
power schrieb: > Ich rede von den Datenleitungen. Nicht R/W. Wolfgang auch. Solange du nur schreiben willst ist es OK.
Achso, und welche pins vom Display reicht es NUR auf Ausgangspins des uC zu legen? Habe nämmlich nicht genug pins die Ausgang und Eingang können, dafür aber handvoll die Nur Ausgang können.
Du hast genug Pins. Solange Du das Display nicht ansprichst kannst Du die Leitungen auch für andere Dinge benutzen. Was auf den Leitungen los ist, interessiert das Display nicht, solange es nicht adressiert wird.
power schrieb: > Achso, und welche pins vom Display reicht es NUR auf Ausgangspins des uC > zu legen? E, R/W und RS sind in jedem Fall nur Ausgänge vom MC zum Display. Wie oben schon geschrieben, kann man aber auf das Lesen des Displays auch komplett verzichten und auch die Datenleitungen nur als Ausgänge benutzen. Allerdings muss man dann das Timing des relativ langsamen HD44780 berücksichtigen, um den Contoller nicht zu überfahren.
power schrieb: > Habe nämmlich nicht genug pins die Ausgang und Eingang können Darf man mal fragen welchen Controller du verwendest der das nicht kann?
power schrieb: > Achso, und welche pins vom Display reicht es NUR auf Ausgangspins des uC > zu legen? Alle. > Habe nämmlich nicht genug pins die Ausgang und Eingang können, dafür > aber handvoll die Nur Ausgang können. Nur Enable muss für Display reserviert werden. Die anderen Pins können in der Zwischenzeit auch andere Sachen machen :-)
Matthias S. schrieb: > E, R/W und RS sind in jedem Fall nur Ausgänge vom MC zum Display. R/!W ist ein Eingang vom Display. Wenn man nur schreibend auf das Display zugreifen möchte, ist es sinnlos, den Pin an einen Ausgang vom µC zu hängen. So schwer ist das doch nicht.
Ingo L. schrieb: > Darf man mal fragen welchen Controller du verwendest der das nicht kann? Pins an dennen LEDs dran sind, die kann ich nur auf Ausgang schalten Also reicht es wenn ich die Datenleitungen und R/W am µC auf Ein-/Ausgang schalte. E und RS auf nur Ausgänge des µC. Damit ist dann gewährleistet das ich lesen und schrieben kann, verstehe ich das nun richtig? Datenleitungen,R/W auf Ausgang/Eingang vom µC. E, RS Ausgang.
Wenn du nur schreiben willst (RW auf Masse), brauchst du minimal RS, E und vier Datenpins, also minimal 6 Stück. Wenn du 6 frei hast, geht es also.
Nein ich will ja auch lesen. und benutze 4-bit modus, also andere 4 Datenleitungen auf masse.
Hi >Nein ich will ja auch lesen. Was willst du lesen? >und benutze 4-bit modus, also andere 4 Datenleitungen auf masse. Nicht auf Masse, sondern freilassen. Die Datenpins vom Display haben integrierte Pull-Up-Widerstände. Da ist Masse kontraproduktiv. MfG Spess
spess53 schrieb: > Nicht auf Masse, sondern freilassen. Die Datenpins vom Display haben > integrierte Pull-Up-Widerstände. Da ist Masse kontraproduktiv. Aber noch mal die Fragen für die anderen Pins, das verstehe ich nicht müssen die nun an Pins vom Mikrocontroller die Ein und Ausgang können? Also alle RS, R/W, E, 4xDaten.
Wolfgang schrieb: > Wozu gibt es Datenblätter? Und es zwingt einen keiner, da an > irgendwelche Limits zu gehen. So schnell kann das sowieso niemand > ablesen. > Tausende von Anwendungen nutzen die Displays mit fest verdrahtetem > R/!W-Pin. Allerdings gehört das Problem "ich habe ein angeblich HD44780 kompatibles Display angeschlossen und fertige Software benutzt, trotzdem funktioniert es nicht" wohl zu den Top 10 der im Web geschilderten Probleme, verursacht durch zu schnelles Beschreiben des Displays das langsamer ist als das Hitachi-Original.
power schrieb: > Aber noch mal die Fragen für die anderen Pins, das verstehe ich nicht > müssen die nun an Pins vom Mikrocontroller die Ein und Ausgang können? > Also alle RS, R/W, E, 4xDaten.
1 | V E R W E N D U N G |
2 | Nur Schreiben Lesen/Schreiben Ausschliesslich für LCD |
3 | 4xDaten: Ausgang Ein/Ausgang NEIN |
4 | Enable Ausgang Ausgang JA |
5 | RS Ausgang Ausgang NEIN |
6 | R/W Ausgang Ausgang NEIN |
P.S. Ich habe früher immer die Pins für Tastatur und GLCD zusammen benutzt.
Vergiss das Lesen. Das bringt nichts. Das Schreiben macht man sinvollerweise eh mit einem Timer-interrupt. Ich schreib jeweils alle 10ms ein Zeichen raus. Dann genuegt es, wenn alle Leitungen nur schreiben koennen, also beim Controller Ausgang sind.
Wolfgang schrieb: > R/!W ist ein Eingang vom Display. Nö ist es nicht, warum auch? Der MC tut damit dem LCD kund, ob er lesen oder schreiben will. Anbei mal die entsprechende Seite aus dem Datenblatt.
Matthias S. schrieb: > Wolfgang schrieb: >> R/!W ist ein Eingang vom Display. > > Nö ist es nicht, warum auch? Der MC tut damit dem LCD kund, ob er lesen > oder schreiben will. Anbei mal die entsprechende Seite aus dem > Datenblatt. Ja ich musste es auch zweimal lesen. Aber er meint es schon richtig, Eingang am Display. Ausgang am MC! Gruss Chregu
Christian M. schrieb: > Aber er meint es schon richtig, > Eingang am Display. Ausgang am MC! Er hatte mir hier widersprochen: Wolfgang schrieb: > Matthias S. schrieb: >> E, R/W und RS sind in jedem Fall nur Ausgänge vom MC zum Display. > > R/!W ist ein Eingang vom Display. Und das ist eben nicht richtig. E, R/W und RS sind in jedem Fall nur Ausgänge am MC und Eingänge am LCD - wenn man R/W überhaupt benutzen will. Sonst tut mans auf Masse und behält das Timing des LCD Controllers im Hinterkopf.
Wolfgang schrieb: > R/!W ist ein Eingang vom Display. Matthias S. schrieb: > [...] R/W [...] sind in jedem Fall nur [...] Eingänge am LCD Wo ist jetzt genau der Widerspruch, der Dich stört? Ich sehe keinen Unterschied in den Aussagen. @TO: WENN Du wirklich unsinnigerweise vom Display lesen möchtest, dann benötigst Du am µC 3 Ausgänge zum Display hin (E, R/W und RS) sowie 4 Port, welche bidirektional arbeiten für die Daten. Wenn Du auf lesen vom Display verzichtest, benötigst Du 6 Ausgangsports am µC. R/W kann am Display dann direkt auf Masse gelegt werden. Die unbenutzten 4 Datenleitungen am Display bleiben unbenutzt - also offen! Gruß Jobst
Ich will ja nur lesen um zu wissen ob ich das nächste Zeichen senden kann. So wie MsWin die problematik geschildert hst will ich das umgehen. Ich denke es reicht doch auch nur das Busyflag zu lesen also brsuche ich nur ein Pin das auf Eingang umgestellt werden kann.
Hi >Ich denke es reicht doch auch nur das Busyflag zu lesen also brsuche ich >nur ein Pin das auf Eingang umgestellt werden kann. Nein. Wenn du RW auf Lesen (µC) stellst Schalten alle Datenleitungen des Displays auf Ausgang. Also musst du auch alle Datenleitungen des µCs auf Eingang schalten. MfG Spess
spess53 schrieb: > Also musst du auch alle Datenleitungen des µCs auf > Eingang schalten. Wenn er wirklich so arm an Pins ist könnte er auf den anderen 3 Leitungen den Kurzschluss mit Widerständen verhindern, die Eingänge sind ja alle hochohmig. Georg
spess53 schrieb: > Nein. Wenn du RW auf Lesen (µC) stellst Schalten alle Datenleitungen des > Displays auf Ausgang. Also musst du auch alle Datenleitungen des µCs auf > Eingang schalten. Korrekt. Aber normalerweise braucht man doch das ganze überhaupt nicht. Laut DaBla sind es etwa 40us pro Befehl, also ist nach max. 80us bei jedem LCD jedes Befehl abgearbeitet, ausser CLS und HOME. Das sind, für 16x2 LCD zwischen 1,3ms und 2,6ms für 32 Zeichen und damit muss man beim schreiben auf LCD ganz einfach rechnen. Wenn es schneller gehen soll, nimmt man eben kein LCD... Und 50us pro Zeichen nur auf Busy warten und nichts anderes machen ist auch nicht gerade die effizienteste Methode, mal abgesehen davon, dass das eigene Routinen zum LCD Schreiben voraussetzt, was beim TO bestimmt nicht der Fall ist.
power schrieb: > Ich will ja nur lesen um zu wissen ob ich das nächste Zeichen senden > kann. Ja, man kann durch auslesen des Busyflags feststellen, ob das Display bereit für den nächsten Befehl/Byte ist. Wirklich brauchen tut man das allerdings nicht, wenn man dem Display genug Zeit lässt. Und es benötigt Aufwand, Zeit und Ports, die Du nicht hast. Ich mache es so, dass ich im TimerIRQ z.B. alle 500µs ein Zeichen aus dem RAM ausgeben lasse. Anfragen an das Display gibt es nicht. Es hat genug Zeit gehabt. Für den Home-Befehl, welcher einmal pro Bildaufbau gesendet wird, werden ein paar IRQs ohne Aktion mit dem Display getätigt. Im Hauptprogramm schreibe ich nur noch ins RAM. Dabei entspricht eine feste Speicherstelle einer festen Position auf dem Display. Um die Displayausgabe kümmere ich mich dann nicht mehr. Und irgendwelche Cursorpositionierungsgeschickten entfallen damit auch. Ein Display mit HD44780 hat maximal 80 Zeichen. Das ist damit in 40ms komplett beschrieben. Du kannst damit wie wild Daten aus Deiner SW ausgeben, ohne auf Dein Display warten zu müssen. Gruß Jobst
Jobst M. schrieb: > Für den Home-Befehl, welcher einmal pro Bildaufbau > gesendet wird, werden ein paar IRQs ohne Aktion mit dem Display > getätigt. Normalerweise braucht man HOME nur mit Cursor. Cursor wiederum braucht man nur wenn irgendwelche Eingaben zu machen sind. Bei normaler Ausgabe braucht man Cursor und HOME nicht, einfaches überschreiben der alten Werte genügt. Beim CLS kommt es (zeitlich gesehen) beim direkten senden auf dasselbe hinaus - ob man 32 mal SPACE schickt oder 1,3ms nach CLS Befehl wartet, ist egal. Schreiben ins RAM dagegen ist eine ganz andere Liga bezüglich Geschwindigkeit. > Ich mache es so, dass ich im TimerIRQ z.B. alle 500µs ein Zeichen aus > dem RAM ausgeben lasse. Anfragen an das Display gibt es nicht. Es hat Das ist auch am besten so. Animationen auf Text-LCD macht sowieso keiner.
Marc V. schrieb: > Normalerweise braucht man HOME nur mit Cursor. Du musst aber schon wissen, wo Du auf Deinem Display schreibst ;-) Ich bevorzuge es, oben links zu beginnen. Und dafür setze ich den Cursor -also die Schreibposition- an diese Stelle. Der sichtbare Cursor ist abgeschaltet. Gruß Jobst
Marc V. schrieb: > Animationen auf Text-LCD macht sowieso > keiner. Und man muss auch keinen Messwert 100mal pro Sekunde ausgeben, mehr als 5 Werte erfasst das menschliche Gehirn garnicht (das ist schon optimistisch). Georg
Georg schrieb: > Und man muss auch keinen Messwert 100mal pro Sekunde ausgeben Da wird den Kristallen ja auch schlecht ... Gruß Jobst
Jobst M. schrieb: > Du musst aber schon wissen, wo Du auf Deinem Display schreibst ;-) Dafür gibt es Comand Set DDRAM Address, dauert gerade 40us. HOME dagegen dauert zwischen 1,4-4,5ms und wird meistens genutzt, um nach der evtl. Displayschieberei (z. B. Korrekturen bei der Eingabe) wieder von 1,1 anzufangen.
Marc V. schrieb: > Jobst M. schrieb: >> Du musst aber schon wissen, wo Du auf Deinem Display schreibst ;-) > > Dafür gibt es Comand Set DDRAM Address, dauert gerade 40us. > HOME dagegen dauert zwischen 1,4-4,5ms und wird meistens genutzt, um > nach der evtl. Displayschieberei (z. B. Korrekturen bei der Eingabe) > wieder von 1,1 anzufangen. Ich bevorzuge den kleinen Reset. Kostet mich nichts. Ich warte dadurch nicht länger. Gruß Jobst
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.