HD44780 Display 2x16 Xmega-Assemblerbaustein

OP #3277305
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren