Forum: Mikrocontroller und Digitale Elektronik Mehrere LCD-Displays via Parallel Interface ansteuern


von Fragensteller (Gast)


Lesenswert?

Hallo zusammen,

ich würde gerne mehrere LCD-Displays mit dem Parallel Interface 
ansteuern.
Meine Frage ist, ob die Leitungen als Bus verwendet werden können, damit 
nicht unnötig viele Pins am MCU verschwendet werden. Folgende Leitungen 
würde ich demnach parallel zum MCU führen:

Pin 4 - RS
Pin 5 - R/W
Pin 7-14 - DB0-DB7

Die Enable-Signale würden dann natürlich für jedes Display separat 
geführt um das grade gewollte Display auszuwählen.

Es handelt sich um folgendes Display:

https://de.farnell.com/fordata/fc2004c03-nswbbw-91-e/anzeige-alphanumerisch-20x4-weiss/dp/2674146?st=LCD%20Display

Vielen Dank im voraus!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Fragensteller schrieb:
> Meine Frage ist, ob die Leitungen als Bus verwendet werden können, damit

 Ja.

Fragensteller schrieb:
> nicht unnötig viele Pins am MCU verschwendet werden. Folgende Leitungen

 Überlege mal ob du unbedingt R/W brauchst.
 4-bit mode ist genauso gut wie 8-bit, vor allem da bei LCD-Displays
 Geschwindigkeit nicht im Vordergrund steht.

 Das wären dann schon 5 Leitungen weniger.

von Fragensteller (Gast)


Lesenswert?

Marc V. schrieb:
> Überlege mal ob du unbedingt R/W brauchst.

Mit dem R/W-Signal wähle ich doch nur zwischen Schreiben und Lesen

Marc V. schrieb:
>  4-bit mode ist genauso gut wie 8-bit, vor allem da bei LCD-Displays
>  Geschwindigkeit nicht im Vordergrund steht.

Die 8 Pins sind eingeplant, deswegen werde ich diese auch komplett 
ausnutzen.

Danke für deine Antwort!

von Glaub Esuns (Gast)


Lesenswert?

Fragensteller schrieb:
> Die 8 Pins sind eingeplant, deswegen werde ich diese auch komplett
> ausnutzen.

Das ist beim Text-LCD wirklich, wirklich sinnlos da der
Prozessor nur die meiste Zeit drauf wartet ein neues
Zeichen schicken zu können. Dann kann er auch zwischendrin
die halben Bytes multiplex schreiben. Kein LCD ist so
schnell das man jemals einen Einflauss darauf sehen könnte.

von Wolfgang (Gast)


Lesenswert?

Fragensteller schrieb:
> Mit dem R/W-Signal wähle ich doch nur zwischen Schreiben und Lesen

Eben, warum willst du unbedingt vom Display lesen?

Fragensteller schrieb:
> Die 8 Pins sind eingeplant, deswegen werde ich diese auch komplett
> ausnutzen.

Bist du sicher, dass der Plan gut ist, wenn du jetzt doch unnötig viele 
Pins am MCU verschwendest?

Fragensteller schrieb:
> Meine Frage ist, ob die Leitungen als Bus verwendet werden können, damit
> nicht unnötig viele Pins am MCU verschwendet werden

von Route_66 H. (route_66)


Lesenswert?

Wolfgang schrieb:
> Fragensteller schrieb:
>> Mit dem R/W-Signal wähle ich doch nur zwischen Schreiben und Lesen
>
> Eben, warum willst du unbedingt vom Display lesen?

Nicht jede parallele Schnittstelle unterstützt das Lesen auf den 
Datenleitungen. Aus Kompatibilität also lieber weglassen!

von Teo D. (teoderix)


Lesenswert?

Wolfgang schrieb:
> Eben, warum willst du unbedingt vom Display lesen?

Eventuell will er ja das Busy-Signal auswerten!?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Route 6. schrieb:
> Nicht jede parallele Schnittstelle unterstützt das Lesen auf den
> Datenleitungen.

Es geht hier wohl nicht um den PC-Frickelport.

von m.n. (Gast)


Lesenswert?

Fragensteller schrieb:
> ich würde gerne mehrere LCD-Displays mit dem Parallel Interface
> ansteuern

Aus Interesse: wie viele denn?

Teo D. schrieb:
> Eventuell will er ja das Busy-Signal auswerten!?

Was bei mehreren Anzeigen auch nicht verkehrt ist.

von Route_66 H. (route_66)


Lesenswert?

Rufus Τ. F. schrieb:
> Es geht hier wohl nicht um den PC-Frickelport.

Wo hast du die Glaskugel her?

von Teo D. (teoderix)


Lesenswert?

Route 6. schrieb:
> Rufus Τ. F. schrieb:
>> Es geht hier wohl nicht um den PC-Frickelport.
>
> Wo hast du die Glaskugel her?

Nee, nich schon wieder.
Keinen im Sandkasten zum Kloppen gefunden?

von (prx) A. K. (prx)


Lesenswert?

Teo D. schrieb:
>> Eben, warum willst du unbedingt vom Display lesen?
>
> Eventuell will er ja das Busy-Signal auswerten!?

Wenn man die dokumentierten Wartezeiten der einzelnen Kommandos 
beachtet, kann man problemlos auf "Busy" verzichten.

von Purzel H. (hacky)


Lesenswert?

> Eventuell will er ja das Busy-Signal auswerten!?

Vergiss das Busy, vergiss das Lesen. Der Aufwand lohnt sich nicht. Nimm 
einen Timer. Ich verwende meinen ueblichen 10ms Tick. Jeden Tick ein 
einzelnes Zeichen, oder command. Der Inhalt des Displays wird periodisch 
von einem Buffer her vollstaendig ueberschrieben.
Wenn's um Portpins geht, kann man auch auf den 4bit breiten Bus 
zurueckgreifen.

von Fragensteller (Gast)


Lesenswert?

Glaub Esuns schrieb:
> Das ist beim Text-LCD wirklich, wirklich sinnlos da der
> Prozessor nur die meiste Zeit drauf wartet ein neues
> Zeichen schicken zu können.

Der Prozessor hat ja nebenbei noch einige andere Sachen zu tun =).
Regelungen und so weiter.

Glaub Esuns schrieb:
> Kein LCD ist so
> schnell das man jemals einen Einflauss darauf sehen könnte.

In dem Datenblatt zu dem verbauten LCD-Controller steht, dass maximal 
zwei rising edges am Enable-Signal innerhalb von 500ns liegen dürfen.

Das bedeutet, ich könnte 8Bit innerhalb von 500ns und 2 * 4Bit innerhalb 
von 1µs übertragen. Demnach würde sich doch die Zeit verdoppeln.

Wolfgang schrieb:
> Eben, warum willst du unbedingt vom Display lesen?

Nein, lesen wollte ich eigentlich nicht, könnte den Pin somit auf GND 
legen.

m.n. schrieb:
> Aus Interesse: wie viele denn?

Voraussichtlich werden es drei.

A. K. schrieb:
> Wenn man die dokumentierten Wartezeiten der einzelnen Kommandos
> beachtet, kann man problemlos auf "Busy" verzichten.

Diese Umsetzung hatte ich im Kopf.

Jetzt ist G. schrieb:
> Wenn's um Portpins geht, kann man auch auf den 4bit breiten Bus
> zurueckgreifen.

Die 8 Port-Pins sind locker frei. Es ging mir bloß darum, dass ich nicht 
3 * 8 Datenleitungen brauche. Die hätte ich wahrscheinlich auch noch 
gehabt, aber wollte nicht jedes Display einzeln routen =).

von Purzel H. (hacky)


Lesenswert?

Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert werden, die 
anderen duerfen parallen mehrere devices bedienen.

von Teo D. (teoderix)


Lesenswert?

Jetzt ist G. schrieb:
> Vergiss das Busy, vergiss das Lesen. Der Aufwand lohnt sich nicht. Nimm
> einen Timer.

Über lass das bitte mir, welch Aufwand ich treiben möchte.
Immer hin hab ich damit, bei 16MHz Befehlszyklus, ganze 4µs gespart. :D
(Hängt natürlich stark vom Display und Temperatur ab)

Du hast natürlich recht, der Aufwand lohnt nicht. Ein Watchdog o.ä. ist 
dann ja auch noch fast Pflicht.

von Teo D. (teoderix)


Lesenswert?

Jetzt ist G. schrieb:
> Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert werden, die
> anderen duerfen parallen mehrere devices bedienen.

Solange die kein Enable bekommen, kümmer sie das nicht.
CS gibts nich, R/W war sicher gemeint.

von Joachim B. (jar)


Lesenswert?

Fragensteller schrieb:
> Der Prozessor hat ja nebenbei noch einige andere Sachen zu tun =).
> Regelungen und so weiter.

deswegen hat es keinen Sinn zu oft zu schreiben, ich schreib bei Bedarf 
in ein Schattenram und nur alle 250ms wird das zum LCD gebracht, 10ms 
Timer countdown von 24 bis 0, mehr als 4 Werte/Sekunde kann doch kein 
Mensch sehen, bzw. erkennen, für Uhr und Temperatur würde sogar 1s 
reichen, nur läuft es mit 4/s runder.

von m.n. (Gast)


Lesenswert?

Joachim B. schrieb:
> mehr als 4 Werte/Sekunde kann doch kein
> Mensch sehen, bzw. erkennen,

Lass mal die Bananen in Ruhe und komm vom Baum runter. 300 Bd sollten 
Vergangenheit sein.
Bei 4 x 20 sieht man schon bei schnellerer Ausgabe den zeitlichen 
Versatz, wann das 1. und wann das letzte Zeichen ausgegeben werden.

A. K. schrieb:
> Wenn man die dokumentierten Wartezeiten der einzelnen Kommandos
> beachtet, kann man problemlos auf "Busy" verzichten.

Je nach Controller können die aber doch recht stark schwanken. Wenn man 
"busy" nutzen kan, wieso nicht?
Man darf nur nicht so ungeschickt hantieren, wie man es immer wieder bei 
EEPROMs sieht - erst schreiben und dann auf "busy" warten - sondern 
genau anders herum.

von Fragensteller (Gast)


Lesenswert?

Jetzt ist G. schrieb:
> Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert
> werden, die
> anderen duerfen parallen mehrere devices bedienen.

Teo D. schrieb:
> Jetzt ist G. schrieb:
>> Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert werden, die
>> anderen duerfen parallen mehrere devices bedienen.
>
> Solange die kein Enable bekommen, kümmer sie das nicht.
> CS gibts nich, R/W war sicher gemeint.

Das verwirrt mich jetzt etwas... generell müsste ich doch alles außer 
Enable parallel schalten können, wenn ich die Displays nacheinander 
anspreche, oder?

von Teo D. (teoderix)


Lesenswert?

Fragensteller schrieb:
> Das verwirrt mich jetzt etwas... generell müsste ich doch alles außer
> Enable parallel schalten können, wenn ich die Displays nacheinander
> anspreche, oder?

Ja.

von c-hater (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> Route 6. schrieb:
>> Nicht jede parallele Schnittstelle unterstützt das Lesen auf den
>> Datenleitungen.
>
> Es geht hier wohl nicht um den PC-Frickelport.

...der allerdings seit seligen AT-Zeiten auch praktisch fast immer BiDi 
ist. Erst diese unsäglichen USB-Parallel-Adapter haben ihn wieder auf 
die minimalen Fähigkeiten zusammengestutzt, die er ursprünglich mal 
hatte, so vor ca. 35..40 Jahren...

von Joachim B. (jar)


Lesenswert?

m.n. schrieb:
> Lass mal die Bananen in Ruhe und komm vom Baum runter. 300 Bd sollten
> Vergangenheit sein.
> Bei 4 x 20 sieht man schon bei schnellerer Ausgabe den zeitlichen
> Versatz, wann das 1. und wann das letzte Zeichen ausgegeben werden.

ja ja, höre auf zu beleidigen und erzähle nicht das du mehr als 4 Werte 
/ Sekunde lesen und erkennen kannst!

> Wenn man "busy" nutzen kan, wieso nicht?

hat ja keiner was dagegen WENN man es nutzen kann, aber ob es nötig und 
MÖGLICH ist muss halt von Fall zu Fall entschieden werden, das wissen 
wir beide doch nicht.

Ich brauchte busy nur 2x bis jetzt, an der RTC ob sie noch mit der 
Temperatur beschäftigt ist und beim EEPROM Block schreiben, da nervte 
das übliche delay in fast jedem veröffentlichen Code!

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Fragensteller schrieb:
> Jetzt ist G. schrieb:
>> Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert
>> werden, die
>> anderen duerfen parallen mehrere devices bedienen.
>
> Teo D. schrieb:
>> Jetzt ist G. schrieb:
>>> Ich denk nur die RS & CS muessen pro LCD einzeln angesteuert werden, die
>>> anderen duerfen parallen mehrere devices bedienen.
>>
>> Solange die kein Enable bekommen, kümmer sie das nicht.
>> CS gibts nich, R/W war sicher gemeint.
>
> Das verwirrt mich jetzt etwas... generell müsste ich doch alles außer
> Enable parallel schalten können, wenn ich die Displays nacheinander
> anspreche, oder?

Lass dich von "Jetzt ist G." nicht verwirren, der postet auch in anderen 
Threads größtenteils Unsinn.

Alle Signale bis auf den EN dürfen an alle LCDs.

Allerdings würde ich dir auch den 4Bit Bus empfehlen.
Auch wenn du die Pins frei hast, so musste ja dann noch 4 weitere 
Signale übers PCB routen und dann sind die LCDs vllt noch übern 
Flachbandkabel angeschlossen.
Das wird dann auch etwas schmaler ;)

Was solls denn am Ende werden, dass es so viele Displays braucht?
Bzw guck dich mal bei den "DOGM" Displays von EA um.
Die können auch SPI und I2C.

Joachim B. schrieb:
> m.n. schrieb:
>> Lass mal die Bananen in Ruhe und komm vom Baum runter. 300 Bd sollten
>> Vergangenheit sein.
>> Bei 4 x 20 sieht man schon bei schnellerer Ausgabe den zeitlichen
>> Versatz, wann das 1. und wann das letzte Zeichen ausgegeben werden.
>
> ja ja, höre auf zu beleidigen und erzähle nicht das du mehr als 4 Werte
> / Sekunde lesen und erkennen kannst!

Is nur doof, dass m.n. recht hat, das zappelt dann ganz schön.
Eine Zahl die mehrmals von 3,999 auf 4,000 und zurück springt nervt da 
schon sehr.
Zusaätzlich dazu schmieren dann so manche billig China LCDs wegen der 
trägen Reaktionszeit auch sehr stark bei zu hohen Updateraten.

von Joachim B. (jar)


Lesenswert?

Mw E. schrieb:
> Is nur doof, dass m.n. recht hat, das zappelt dann ganz schön.

hast du das falsch verstanden?

Die bemerkung mit 300Bd kann ja nur so aufgefasst werden das es 
schneller heute geht, also mehr LCD Updates als 4/s möglich sind, das 
bestreite ich kein bischen!

> Eine Zahl die mehrmals von 3,999 auf 4,000 und zurück springt nervt da
> schon sehr.
> Zusaätzlich dazu schmieren dann so manche billig China LCDs wegen der
> trägen Reaktionszeit auch sehr stark bei zu hohen Updateraten.

ja und deswegen scheint es dir sinnvoll zu sein die Taktrate zu erhöhen 
statt sich zwischen 3,999 und 4,000 zu entscheiden?
also erst dann neu zu schreiben wenn die Abweichung unterscheidbar ist!, 
so 2-5% und nicht 0,001

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Er hat 2 Dinge angesprochen:
- schnelles schreiben damit man den Refresh nicht an einem 
durchlaufenden Cursor erkennt (jagut kann man abschalten solange) oder 
sich der Reihe nach ändernde Buchstaben sieht.
Bei den hier genannten 10ms sieht man bei nem 4x20 Zeichen dann durchaus 
den Refresh.
- Die Updaterate an sich

Also schnell schreiben, aber nur 4mal/s.

von georg (Gast)


Lesenswert?

Mw E. schrieb:
> Er hat 2 Dinge angesprochen:
> - schnelles schreiben damit man den Refresh nicht an einem
> durchlaufenden Cursor erkennt

Deswegen dauert ihm Schreiben in 1 µs ja zu lange, da kann er nur 1 Mio 
Zeichen pro Sekunde schreiben. Wahrscheinlich gehört er zu den 
Übersensiblen, die das als Flimmern sehen können.

Wieder mal eine perfekte Lösung gesucht für ein nicht existierendes 
Problem.

Georg

von m.n. (Gast)


Lesenswert?

Joachim B. schrieb:
> und erzähle nicht das du mehr als 4 Werte
> / Sekunde lesen und erkennen kannst

Doch, kann ich! Zumal es ja hier nicht um die Ausgangswerte eines 
Zufallzahlengenerators geht. Bei Sprüngen zwischen 4.000 und 3.999 sehe 
ich mir ja nicht alle Ziffern einzeln an, sondern die gesamte 
Ziffernfolge auf einen Blick.
Mich stören auch 20 Ausgaben/s nicht. Daran kann man nämlich gut die 
Qualität des Signals/Meßwertes erkennen. Durch 'integrierendes Kucken' 
kann man auch Tendenzen bei den Änderungen erkennen.

Ich möchte kein Gerät abgleichen müssen, daß eine lahme Anzeige oder 
womöglich noch eine Hysteres bei den angezeigten Werten eingebaut hat.

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.