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
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.
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
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
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
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.
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
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?
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
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?
Den Pegelwandler brauchst du nur, wenn du bidirektional Kommunizieren willst.
Michael schrieb: > Du brauchst aber noch > eine negative Spannung. Dann ist es ja gut, dass das Display diese an Pin 13 ausgibt.
Ja richtig. Hast ja das größere Display. Hab hier das kleinere Display, das bracht noch eine zusätzliche Spannung.
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)
Die andere Seite des Potis sollte gegen GND gehen. Damit stellst du den Kontrast ein.
Michael schrieb: > Die andere Seite des Potis sollte > gegen GND gehen. Bist du sicher? Im Datenblatt ist das Beinchen unbeschaltet.
Ich lass den Poti mal in der Luft und sehe einen Jumper gegen Masse vor ;) Dann kann ich ausprobieren, was richtig ist.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.