Hallo, beiliegender Code dient zur Darstellung und dem Hardware-gestützten fließend-weichen Scrolling von 2x16 Zeichen Displayinhalten auf den bekannten HD44780- kompatiblen LCDs und OLEDs. Der Aufruf erfolgt im Rahmen eines Timer-Interrupts (200Hz/5ms optimal), wobei pro Interrupt jeweils immer nur eine Instruktion oder Zeichen an das Display gesendet werden. Damit ist die Prozessor-Belastung nicht nur gering, sondern auch sehr gleichmäßig, vorhersagbar und unabhängig vom Hauptprogramm. Bedient wird der Baustein dabei über ein einzelnes Interface-GPIOR Register sowie natürlich Puffer-RAM für die darzustellenden Inhalte. Die Ansteuerung erfolgt rein schreibend und entgegen dem allgemeinen 4-Bit Trend hier im 8-Bit Modus, mit folgenden Hintergedanken: - die Anbindung von 5V Displays benötigt keine Pegelwandlung (sofern das Display mit den geringeren 3V Pegeln auf den Datenleitungen klarkommt) weil die im 4-Bit Modus eventuell notwendige Busyflag Lese-Abfrage entfällt - gewisse Display-Funktionen (Zeichensätze) sind manchmal nur im 8-Bit Modus verfügbar - die Xmegas haben ausreichend Pins und die Software kann auch etwas einfacher gehalten werden :-) Damit werden 8 Datenleitungen, 2 Leitungen für RS/Enable sowie ggf. noch eine Leitung für die LED-Beleuchtung bei LCDs + Chip-Select (so vorhanden) benötigt. R/W liegt fest auf Masse (darf Chip-Select auch). Funktionell werden unterstützt: - Display-Initialisierung (evtl. vom Anwender an Display anzupassen) - permanente Darstellung des aktuellen Pufferbereichs - Scrolling desselben auf dem Display rechts/links (je 2x16 Zeichen) - Display/ LCD-Beleuchtung ON/OFF Als spezielles Feature kann jedem Glied einer Kette von Display-Inhalten (Menü-System) eine (bei 200Hz Takt ca. alle 0.6s) auszuführende Funktion zugeordnet werden. Damit kann der Baustein dann dynamisch zu ändernde Ausgaben bezogen auf den aktuellen Inhalt/Pufferbereich eigenständig veranlassen (z.B. für eine Uhrzeitanzeige). Nicht unterstützt und zu ergänzen wären noch die Definition von Sonderzeichen und die Cursordarstellung. Wenn die I/O-Ausgaben entsprechend angepasst werden kann der Code auch für andere AVR Typen Verwendung finden. Getestet auf einem EA DIP162 (LCD) und EA W162 (OLED). Jan
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.