hey leute, leider finde ich nicht wie die LCD-Steuerung fuktioniert, es wird immer erklärt wie man das programmiert. Also ich möchte die funktionsweise wissen. Meine Ahnnahme: Es gibt zwie schieberegister. Einer zum spalten und der zweite zum zeilen beschreiben. Die Pixel verhalten sich wie eine logische AND verknüpfung. Bild 1. erste zeile Register ____ | 1101 | |______| |||| |||| vvvv Display ______ | 1101 |<-- | 1 | Register | 0000 |<-- | 0 | | 0000 |<-- | 0 | | 0000 |<-- | 0 | |_______| |___| ________________________________________ Bild 2. zweite zeile ____ | 1001 | |______| |||| |||| vvvv Display ______ __ | 1101 |<-- | 0 | Register | 1001 |<-- | 1 | | 0000 |<-- | 0 | | 0000 |<-- | 0 | |_______| |___| __________________________________________ Bild 3. dritte zeile ____ | 0000 | |______| |||| |||| vvvv Display ______ __ | 1101 |<-- | 0 | Register | 1001 |<-- | 0 | | 0000 |<-- | 1 | | 0000 |<-- | 0 | |_______| |___| _________________________________________ Bild 4. vierte zeile ____ | 0110 | |______| |||| |||| vvvv Display ______ __ | 1101 |<-- | 0 | Register | 1001 |<-- | 0 | | 0000 |<-- | 0 | | 0110 |<-- | 1 | |_______| |___| ___________________________________ Falls meine annahme richtig ist, frage ich mich warum bei LCD displays die erste zeile nicht wieder gelöscht wird, wenn ich zeile 2, 3, 4 schreibe(da dort ja jetzt im zeilenregister 0 steht) ? Also wo liegt mein fehler? ist meine vorstellung von ansteuerung eines LCDs ganz falsch? danke im vorraus MFG MaXXX
MaXXX wrote: > Also wo liegt mein fehler? ist meine vorstellung von ansteuerung eines > LCDs ganz falsch? mag sein. Kommt drauf an, auf welcher logischen Ebene du dich bewegen möchtest, wenn du sagst 'Ansteuerung eines LCD' Auf dem LCD selbst ist ein kleiner Prozessor drauf. Dieser Prozessor hat Speicher mit, wobei jedes Bit in diesem Speicher mit einem Bildpunkt korrspondiert. Wenn du als Anwendungsprogrammierer das LCD programmierst, dann teilst du im Grunde nur diesem LCD-Prozessor mit, welche Bits er in seinem Speicher setzen oder löschen soll. Du machst das nicht auf Bitebene, sondern du sagst ihm: 'A' ausgeben und der Prozessor setzt sich dann selbst die Bits im Speicher. Ist aber nur eine Spitzfindigkeit, im Grunde sagt dein Programm dem Prozessor welche Bits auf 0 sollen und welche auf 1. Tja. und dann kommt die 2.te FUnktion dieses Prozessors auch noch zum Zug. Der geht regelmässig seinen Speicher durch und schaltet entsprechende Transistoren so durch, dass die Kristalle in der Anzeige einmal das Licht blockieren und einmal nicht.
@karl heinz genau der letzte absatz ist sehr interessant für mich. also der µC geht den speicher durch und sendet es an die register (möglicherweise über SPI-Schnittstelle)? hat jedes einzelne pixel einen transistor? falls ja wie genau werden die transistoren angesprochen?
MaXXX wrote: > > hat jedes einzelne pixel einen transistor? Da wird man, so wie du es beschrieben hast, über 2 Selektionregister eine Matrixansteuerung machen. Und ich glaub jetzt weiß ich auch, was dich verblüfft. Du hast ein 'stehendes Bild', obwohl doch eigentlich die Zeilen und Spaltenregister immer durchschalten. Nun. So stehend ist dieses Bild gar nicht. Wenn du im richtigen Winkel auf so ein LCD schaust UND möglichweise durch künstliche Beleuchtung (Glühbirne) auch noch einen Lichttakt hast, dann kann man manchmal sehen, dass die Pixel tatsächlich flimmern, also in kurzer schneller Folge ein und wieder ausgeschaltet werden. Und genau da liegt des Rätsels Lösung. Auch wenn immer nur eine Zeile tatsächlich angesteuert wird, geschieht diese Umschaltung von einer Zeile zur nächsten so schnell, dass du sie nicht siehtst. Hier findest du zb das Datenblatt zum 44780 Controller. http://fab.cba.mit.edu/classes/MIT/863.06/11.13/44780.pdf da findet sich ein bischen was drinn
hm... ich vermute fast, dass mein erstes bild eigentlich so aussehen müsste: Bild 1. erste zeile Register __ | 1101 | |______| |||| |||| vvvv Display ____ | 1101 |<-- | 1 | Register | 0000 |<-- | 0 | | 0000 |<-- | 0 | | 0000 |<-- | 0 | |_______| |___| ______________________________________ Bild 2. zweite zeile __ | 1001 | |______| |||| |||| vvvv Display _____ _ | 0000 |<-- | 0 | Register | 1001 |<-- | 1 | | 0000 |<-- | 0 | | 0000 |<-- | 0 | |_______| |___| ________________________________________ Bild 3. dritte zeile __ | 0000 | |______| |||| |||| vvvv Display _____ _ | 0000 |<-- | 0 | Register | 0000 |<-- | 0 | | 0000 |<-- | 1 | | 0000 |<-- | 0 | |_______| |___| _______________________________________ Bild 4. vierte zeile __ | 0110 | |______| |||| |||| vvvv Display _____ _ | 0000 |<-- | 0 | Register | 0000 |<-- | 0 | | 0000 |<-- | 0 | | 0110 |<-- | 1 | |_______| |___| es wird also vielleicht immer nur eine Zeile angezeigt. Für uns ist aber ein bild sichtbar, da der aufbau sehr schnell ist und die bildpunkte eigentlich flakern , nur für uns halt nicht sichtbar oder?
@heinz : danke oh 2 minuten. ok, bin nicht sofort drauf gekommen, da ich hier ein neues display (24x96) habe. nach dem man in dieses display ein bild reingeladen hat, kann man den strom abschalten und das bild bleibt. ich wollte die normale LCD ansteuerung dafür nehmen, das geht aber wohl nicht, da man ja natürlich nur eine zeile sehen würde. lol, was mache ich nun .... :)
> nach dem man in dieses display ein bild reingeladen hat, kann man den > strom abschalten und das bild bleibt. ?? > ich wollte die normale LCD > ansteuerung dafür nehmen, Heist das du musst eine Controller für das Teil bauen, oder wie soll ich das verstehen. > lol, was mache ich nun .... :) Na wenn das Display eh ganz von alleine immer den letzten Zustand anzeigt, dann passt das doch. Dann stell dir einfach nur vor, dass du mit dem Durchgehen der Zeilen, der jeweiligen Zeile einen neuen Wert gibst, der solange vom Display ganz eigenständig angezeigt wird, bis im nächsten Durchlauf diese Zeile neue Werte bekommt. Hast du denn kein Datenblatt für dieses Display?
ne es gibt kein datenblatt zum display, es ist halt in der entwicklung. werde jetzt ein paar sachen ausprobieren, danke
Die Ansteuerung eines LC-Displays selbst (also das, was z.B. der HD44780-Controller an seinen Ausgängen zur 'Glasscheibe' mit den Flüssigkristallen macht) ist noch ein wenig komplexer als sich hier manche einreden möchten. Die Flüssigkeit mit den Kristallen z.B. mag auf Dauer gesehen überhaupt keine Gleichspannung. D.h. man darf eben nicht z.B. die rückseitige Elektrode dauernd auf GND schalten und die vordere Elektrode(n) immer nach + schalten, um die Kristalle auszurichten (Stichwort "Elektrolyse"). Damit ist es bei dieser Art von LC-Diplays zwingend erforderlich alle Elektroden zu multiplexen um über einen längeren Zeitraum gesehen keinen (bleibenden) DC-Anteil zwischen zwei Elektroden zu bekommen, der das Display allmählich zerstören und unbrauchbar machen würde. Da man dies nicht 'zu Fuß' machen möchte - der Aufwand wäre mit steigender Segment-Anzahl einfach zu hoch - gibt's eben die schnuckeligen Controller, die einem diese Arbeit abnehmen (sollen).
naja aber jemand muss ja die controller erst entwickeln, die die arbeit abnehmen ^^ kenne mich mit LCDs nicht soo gtut aus (habe auch kein datenblat zu hand), würde aber dann halt ne wechselspannung reinsetzte, die Hz abhängig von anforderung des displays. aber egal. mein display sieht zwar wie LCD aus, hat aber andere eigenschaften, deswegen kann es ja gelade bild auch ohne strom halten. Mfg
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.