Hallo! Ich wollte mal fragen, was denn so gängige Konzepte sind um Informationen auf einem LCD darzustellen? Sollte ich einzelne Daten, die ich irgendwo auf dem LCD plazieren will einfach entsprechend direkt raussenden? Oder ist es besser einen Char-Array (mit den Dimensionen des Displays)zu verwenden, in welches ich immer die Informationen reinschreibe, die auf dem LCD angezeigt werden sollen? Und dieses Char-Array dann immer in einem bestimmten Zyklus auf das LCD übertragen lasse? Danke im voraus! Johannes
Oh - gute Frage! Evtl. können wir das auch gleich noch auf Grafikmenüs erweitern: Da wird es dann ganz besonders spannend, alleine wegen dem extremen Platzbedarf...also, wie sind die gängisten Techniken? Klaus.
>Oder ist es besser einen Char-Array (mit den Dimensionen des Displays)zu >verwenden, in welches ich immer die Informationen reinschreibe, die auf >dem LCD angezeigt werden sollen? Und dieses Char-Array dann immer in >einem bestimmten Zyklus auf das LCD übertragen lasse? Genau. So wird das auch gemacht. Nur das dieses Char-Array sich im Controller auf dem Display (gewöhnlich) befindet und dieses zyklisch ausgegeben wird. Du muss somit nur was zum Display schicken, wenn du irgendwas neues/anderes anzeigen willst. Falls das Display keinen eigenen Kontroller hat, musst du das natürlich, wie von dir vermutet, so alles selbst machen...
Hmm, ok ... danke schonmal! Und wenn ich nun zum Beispiel etwas anderes auf dem LCD darstellen will, dann müsste ich ja entweder wissen, wo ich aktuell noch Zeichen stehen habe, die ich bei der neuen Darstellung nicht mehr brauche und diese dann mit Leerzeichen füllen. Oder löscht man in so einem Falle einfach das ganze Display (d.h. man überschreibt das ganze Display mit Leerzeichen) und schreibt dann erst die neuen Informationen drauf. Oder wie kann man sicherstellen, dass auf dem LCD keine "alten" Zeichen mehr dargestellt werden?
>die ich bei der neuen Darstellung nicht mehr brauche Du kannst bei Displays mit Controllern auch den VIdeospeicher (das char-array) wieder auslesen. Sinnvoller ist aber, wenn du exakt die Positionen auf dem Display löscht, die du nihct mehr nrauchst. >Oder löscht man in so einem Falle einfach das ganze Display (d.h. man >überschreibt das ganze Display mit Leerzeichen) und schreibt dann erst >die neuen Informationen drauf. Ist auch möglich, je nachdem was sinnvoller ist: Ein paar Zeichen zu löschen (mit Leerzeichen) oder alles Löschen und dann ein paar neu aufbauen. Wobei den Befehl "display komplett löschen" unterstützen gewöhnich die Displaykontroller.
...komplett löschen ist uU auch die sicherere Methode, wenn man eh einen "Schattenspeicher" für das ganze Display im Controller hat - ansonsten muss man ja zu jedem Zeitpunkt wissen, was genau wo steht. Und das ist uU aufwendiger, als alles neu zu übertragen. Grafiken werden vermutlich am besten "hart" gespeichert, oder? zB die einzelnen Elemente von Rahmen? Oder nimmt man nur eine Seite und dreht diese dann 4x zur Laufzeit und baut sie dynamisch zusammen? Klaus.
Johannes R. wrote: > Oder löscht man in so einem Falle einfach das ganze Display (d.h. man > überschreibt das ganze Display mit Leerzeichen) und schreibt dann erst > die neuen Informationen drauf. Das Löschen bewirkt ein deutliches Flackern und wenn man das oft macht (<1s) ist das extrem nervig. Besser ist es daher immer, den alten Text zu überschreiben. Dazu bastelt man sich eine Funktion, die einen Text an eine bestimmte Position schreibt und mit Leerzeichen bis zur Länge des alten Textes auffüllt. Dabei ist zu beachten, daß Ausgaben nicht unnötig oft erfolgen, da das LCD relativ langsam ist und man so die CPU stark ausbremst (da helfen dann auch keine 100MIPS- oder 32Bit-CPUs). Besonders effektiv ist es, wenn man sich einen Bildspeicher im SRAM (40 Byte bei nem 2*20 LCD) einrichtet und alles dort hineinschreibt. Dieser Bildspeicher wird dann zyklisch von nem Timerinterrupt (z.B 1ms) zum LCD übertragen (1 Byte pro Interrupt). Peter
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.