Forum: Mikrocontroller und Digitale Elektronik Display richtig beschalten


von Kaarl (Gast)


Lesenswert?

Hallo.
https://cdn-reichelt.de/documents/datenblatt/A500/LCD%20128BL%20DIP.pdf
Ich will oben genanntes display einsetzten und habe zwei Fragen:

1.
Das Datenblatt liefert drei Applicationmodes:

Enable und CS LO-Aktiv,
Enable und CS HI-Aktiv,
2xEnable und kein CS,
Enabled und links rechts Umschaltung

Was verbirgt sich hinter den Betirebsarten? Welche Betriebsart ist am 
Sinnvollsten? E1 und E2 schalten je eine Displayhälfte an/ab? Welchen 
Sinn hat das ein Display halb ein/abzuschalten?


2.
Da ich Sorge habe, dass das Display wegen falschen Instruktionen 
meineseits Daten (5V) auf den Bus legt und diese meinen Mikrocontroller 
(3,3V) zerstören, will ich R/W fest auf Masse legen. Das Display wäre 
dann immer im Modus, dass es nur Daten/Instruktionen empfängt. Macht das 
Sinn? Wofür sollte man Daten aus einem Display auslesen? Weil das könnte 
ich dann nicht mehr.

Viele Grüße, Kaarl

von Max H. (hartl192)


Lesenswert?

Kaarl schrieb:
> Welchen
> Sinn hat das ein Display halb ein/abzuschalten?
Das Display besteht elektrisch auf zwei 64*64 Pixel Displays, und nur 
wenn CS auf 1 ist und Enable auf 1 geht werden die Daten vom Controller 
angenommen. Beide CS und EN würde keinen Sinn machen, weil du vermutlich 
nicht auf beiden Hälften das gleiche anteigen willst.
> Wofür sollte man Daten aus einem Display auslesen?
SO schnell fällt mir nur das Busy-Falg und das Setzen einzelner Pixel 
ein. Bein setzten einzelner Pixel könnte man so vorgehen: Das 
entsprechende Byte aus dem Display auslesen, mit der richtigen Maske 
verodern und wieder zurückschreiben. Man könnte aber auch eine Kopie der 
gesamten Daten im RAM haben.

von Karl H. (kbuchegg)


Lesenswert?

Kaarl schrieb:

> Was verbirgt sich hinter den Betirebsarten? Welche Betriebsart ist am
> Sinnvollsten? E1 und E2 schalten je eine Displayhälfte an/ab?

Da gehts nicht um abschalten.
Da sind einfach 2 Kontroller verbaut. Für jede Hälfte einer.
Wenn du das Display programmierst, musst du daher den jeweils richtigen 
Kontroller addressieren, in dessen Einflussbereich das Pixel liegt.


> Da ich Sorge habe, dass das Display wegen falschen Instruktionen
> meineseits Daten (5V) auf den Bus legt und diese meinen Mikrocontroller
> (3,3V) zerstören, will ich R/W fest auf Masse legen. Das Display wäre
> dann immer im Modus, dass es nur Daten/Instruktionen empfängt. Macht das
> Sinn? Wofür sollte man Daten aus einem Display auslesen?

Weil man Ausgaben mit dem momentan angezeigtem Bildschirminhalt zb 
überlagern muss. Man kann sich natürlich auch im Speicher ein 
entsprechendes Abbild vorhalten, aber dafür geht dann viel Speicher 
drauf, der bei einem µC meist nicht so großzügig rumliegt.

: Bearbeitet durch User
von Kaarl (Gast)


Lesenswert?

Vielen Dank für die schnelle kompetente Hilfe euch beiden. Jetzt weiß 
ich endlich, was mit chip select gemeint ist :) irgendwo logisch

Danke und bis bald

von Max H. (hartl192)


Lesenswert?


von stefanus (Gast)


Lesenswert?

Zu 1) Schau Dir mal das Blockschaltbild an. Da siehst Du, dass das 
Display zwei gleiche Controller enthält, wohl einer für die linke Hälfte 
und einer für die rechte Hälfte.

Ich gehe davon aus, dass diese Controller kommunizieren, wenn der 
jeweilige CS auf Low liegt und Enable auf High. Damit hast Du folgende 
Möglichkeiten:

Variante a) Beide CS dauerhaft aus Low: Dann bestimmst Du mit 
Enable=high, welcher der Controller angesprochen wird.

Variante b) Beide Enable dauerhaft aus High: Dann bestimmst Du mit 
CS=Low, welcher der Controller angesprochen wird.

Man kann das noch anders kombinieren, macht aber vermutlich nur wenig 
Sinn.

Besorge Dir mal das Datenblatt dieses Controller, wegen dem genauen 
Timing. Denn es ist oft so, dass ZUERST der CS Eingang angesteuert 
werden muss, dann R/W, dann Daten anlegen und dann ein Taktimpuls an E 
erwartet wird. Dabei sind gewisse Zeitabstände einzuhalten.

Kann sein, dass dieser Controller sich einfacher verhält - würde mich 
jedoch wundern.

Zu 2) Wofür sollte man Daten aus einem Display auslesen?

Zum Beispiel, um möglichst schnell Kommandos zu senden, aber nicht zu 
schnell. Irgend ein Register zeigt an, ob der Chip bereit ist, Kommandos 
anzunehmen. Die Kommandos dauern unterschiedlich lange.

Zum Beispiel, um den Bildschirminhalt zu verschieben (Scrolling), ohne 
eine Kopie des gesamten Speichers im RAM des µC halten zu müssen. Was 
allerdings eine blöde Idee ist, wenn die Kommunikation sehr langsam ist.

Zum Beispiel, um bewegte Grafiken oder scrollende Texte mit der 
Bildwiederholrate zu synchronisieren, damit sie nicht ruckeln oder 
verschmieren.

Es ist allerdings durchaus nicht unüblich, Displays mit festem Timing 
nur schreiben anzusteuern.

von Max H. (hartl192)


Lesenswert?

Max H. schrieb:
> Wenn du lesen willst, könnte man das mit ein paar bidirektionalen
> Pegelwandlern lösen:
  https://upload.wikimedia.org/wikipedia/de/thumb/4/4e/Bidirektionaler_pegelumsetzer_wikide.svg/220px-Bidirektionaler_pegelumsetzer_wikide.svg.png

Wenn man keine Lust hat die ganzen Pegelwandler einzeln aufzubauen 
könnte man auch einen DUAL-SUPPLY BUS TRANSCEIVER wie z.B. den 
74LVC4245A verwenden. Bei den unidirektionalen Leitungen wie EN, CS, 
R/W, D/I hast du kein Problem, da der Displaycontroller ab 2.4V High 
erkennt.

stefanus schrieb:
> Beide CS dauerhaft aus Low
Wenn alle Enable dauerhaft auf Low sind, wird sich nie ein Kontroller 
angesprochen fühlen.
> Beide Enable dauerhaft aus High
Das wird auch nicht funktionieren, da der Enable Eingang auf Flanken 
reagiert.

: Bearbeitet durch User
von Kaarl (Gast)


Lesenswert?

Max H. schrieb:
> stefanus schrieb:
>> Beide CS dauerhaft aus Low
> Wenn alle Enable dauerhaft auf Low sind, wird sich nie ein Kontroller
> angesprochen fühlen.
>> Beide Enable dauerhaft aus High
> Das wird auch nicht funktionieren, da der Enable Eingang auf Flanken
> reagiert.

Mir gefällt Version 3 im Datenblatt am besten. Beide CS High fest auf 5V 
und beide CS Low fest auf 0V. Dann brauche ich nur zwei Leitungen zum 
Mikrocontroller (2xEnable) über die ich dann den gewünschten Chip 
"wähle".

Oder schaltet ein KS0108er dann seine Bildschirmhälfte aus, während ich 
den anderen beschreibe?

von Max H. (hartl192)


Lesenswert?

Kaarl schrieb:
> Mir gefällt Version 3 im Datenblatt am besten.
Mir auch :-)

> Oder schaltet ein KS0108er dann seine Bildschirmhälfte aus, während ich
> den anderen beschreibe?
Nein

: Bearbeitet durch User
von Kaarl (Gast)


Lesenswert?

Max H. schrieb:
> Wenn man keine Lust hat die ganzen Pegelwandler einzeln aufzubauen
> könnte man auch einen DUAL-SUPPLY BUS TRANSCEIVER wie z.B. den
> 74LVC4245A verwenden. Bei den unidirektionalen Leitungen wie EN, CS,
> R/W, D/I hast du kein Problem, da der Displaycontroller ab 2.4V High
> erkennt.

Aber bei den Datenleitungen gibt es bei 3,3V Probleme? Doch nicht, 
solange ich bloß unidirektional in Richtung Display sende, oder?

von Max H. (hartl192)


Lesenswert?

Den Pegelwandler brauchst du nur, wenn du bidirektional Kommunizieren 
willst.

von Michael (Gast)


Lesenswert?

Sollte gehen. Du brauchst aber noch
eine negative Spannung.

von Max H. (hartl192)


Lesenswert?

Michael schrieb:
> Du brauchst aber noch
> eine negative Spannung.
Dann ist es ja gut, dass das Display diese an Pin 13 ausgibt.

von Michael (Gast)


Lesenswert?

Ja richtig. Hast ja das größere Display.
Hab hier das kleinere Display, das bracht noch
eine zusätzliche Spannung.

von Kaarl (Gast)


Angehängte Dateien:

Lesenswert?

Max H. schrieb:
> Michael schrieb:
>> Du brauchst aber noch
>> eine negative Spannung.
> Dann ist es ja gut, dass das Display diese an Pin 13 ausgibt.

Wofür brauche ich die denn? Habe mir die Beschaltung jetzt so 
vorgestellt (Anhang)

von Michael (Gast)


Lesenswert?

Die andere Seite des Potis sollte
gegen GND gehen. Damit stellst du
den Kontrast ein.

von Kaarl (Gast)


Lesenswert?

Michael schrieb:
> Die andere Seite des Potis sollte
> gegen GND gehen.

Bist du sicher? Im Datenblatt ist das Beinchen unbeschaltet.

von Kaarl (Gast)


Lesenswert?

Ich lass den Poti mal in der Luft und sehe einen Jumper gegen Masse vor 
;) Dann kann ich ausprobieren, was richtig ist.

von Karl H. (kbuchegg)


Lesenswert?

Kaarl schrieb:
> Michael schrieb:
>> Die andere Seite des Potis sollte
>> gegen GND gehen.
>
> Bist du sicher? Im Datenblatt ist das Beinchen unbeschaltet.

wo du recht hast, hast du recht.

Könnte sein, dass auf der Platine bereits ein Widerstand gegen GND 
verschaltet ist, um so den Spannungsteiler zu bilden und damit der Pin 
nicht in der Luft hängt, wenn wieder mal die 'Spezialisten' die 
Kontrastspannung einfach weglassen.


Hintergrund:
Der Pin ist mit 'Kontrastspannung' bezeichnet. D.h. an dem Pin wird eine 
variable Spannung angelegt. Mit einem Poti alleine, in der Verschaltung 
kann man aber keine variable Spannung erzeugen. Zu einem Spannungsteiler 
braucht man immer 2 Widerstände, wobei es genügt die 2 Widerstände 
dadurch zu bilden, dass man 1 Widerstandsbahn an irgendeiner Steller 
abgreift und so 2 logische Widerstände erhält. Sprich. Ein 
Spannungsteiler mit einem Poti sieht immer so aus
1
     die eine Spannung +
2
                       |
3
        -             +-+
4
     Widerstand 1     | |
5
        -        <---------------- Abgriff
6
     Widerstand 2     | |
7
        -             +-+
8
                       |
9
   die andere Spannung +

durch verstellen des Potis (der mittlere Anschluss), kann man am 
'Abgriff' eine Spannung einstellen, die stufenlos zwischen 'die eine 
Spannung' und 'die andere Spannung' einstellbar ist, weil man ja das 
zahlenmässige Verhältnis der dadurch gebildetn Widerstäände 1 und 2 
verändert, und die Summe dieser Aufteilung wieder den auf dem Poti 
aufgedruckten Wert ergibt.

Lässt man einen der beiden äusseren Pins in der Luft hängen, dann hat 
man keinen Spannungsteiler mehr, sondern einen einstellbaren Widerstand, 
mit dem man laut Ohmschen Gesetzt R = U*I den Strom einstellen kann, der 
durch den Widerstand bei bekannter Spannungdifferenz durch den 
Widerstand rinnt, mehr aber auch nicht. Nur ist das hier ja nicht 
gefragt. Der Pin heisst ja nicht 'Kontraststrom' sondern 
'Kontrastspannung'. Irgendwo muss es also noch einen 2.ten Widerstand 
geben.

: Bearbeitet durch User
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.