16x2 Display Datenleitungen

Gast #4631724
Lesenswert?

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.
(Firma: matzetronics) #4631879
Lesenswert?

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.
(Firma: Vescomp) #4631882
Lesenswert?

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 :-)
Gast #4631989
Lesenswert?

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.
Gast #4632011
Lesenswert?

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
Gast #4632016
Lesenswert?

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.
Gast #4632019
Lesenswert?

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.
(Firma: Vescomp) #4632031
Lesenswert?

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.
Gast #4632311
Lesenswert?

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
(Firma: matzetronics) #4632330
Lesenswert?

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.
#4632414
Lesenswert?

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
Gast #4632903
Lesenswert?

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.
Gast #4632981
Lesenswert?

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
(Firma: Vescomp) #4633085
Lesenswert?

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.
#4633313
Lesenswert?

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
(Firma: Vescomp) #4633383
Lesenswert?

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.
#4633857
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren