Ansteuerung eines Dot-Matrix-LCD

Beschreibung

Die folgenden C-Funktionen zur 4-Bit-Ansteuerung eines LC-Displays (2- oder 4-zeilige Punkt-Matrix-Displays mit Controllern wie zum Beispiel dem ST7066U oder dem HD44780) sind im Rahmen eines Projektes entstanden, in dem ein ATmega16A-Controller von Atmel neben anderen Funktionen auch die Ausgabe von Texten auf einem solchen Display übernimmt. Es existieren neben einer Routine zur Initialisierung des Displays weitere Funktionen, zum Beispiel für die Ausgabe von Zeichenketten oder die Positionierung des Cursors.
Die Funktionen wurden bewusst so erstellt, dass sie schnell und einfach an andere Pin-Belegungen angepasst werden können. Voraussetzung ist, dass alle Anschluss-Pins an einem Port des Controllers sind.

lcd.jpg

Quellen

Eine detaillierte Dokumentation der einzelnen Funktionen und Dateien ist hier zu finden: Doxygen-Dokumentation

Beispiele

Vor der Nutzung des Displays sind die mit dem Display verbundenen Pins des Controllers zu initialisieren:

lcd_pin_init();

Eine korrekte Initialisierung des Displays erfolgt mittels:

lcd_init();

Nun kann das Display für die Ausgabe von Texten benutzt werden. Im einfachsten Fall sieht das dann so aus:

lcd_send_string("Hallo Welt!", FALSE);

Befindet sich der String im Programmspeicher, um RAM zu sparen:

const char pgm_mem_text[] PROGMEM = "Text 1234567890";

ist bei der Ausgabe das "Progmem-Flag" auf TRUE zu setzen:

lcd_send_string(pgm_mem_text, TRUE);

Neben diesen Funktionen existiert auch die Möglichkeit, den Cursor beliebig zu setzen (beispielsweise in Spalte 0, Zeile 1):

lcd_set_cursor(0, 1);

oder ihn wieder zurück in die Ausgangsposition zu setzen:

lcd_cursor_home();

Der folgende Befehl löscht das komplette Display:

lcd_clear();

Geeignete Displays

Grundsätzlich sollten die Routinen für alle Punkt-Matrix-Displays mit bis zu 4 Zeilen und einem Controller (HD44780 oder kompatible) geeignet sein. Getestet wurden die Funktionen bis jetzt an folgenden Displays:

Fehlerquellen

Falls die Ansteuerung des Displays nicht funktioniert, sollten folgende mögliche Fehlerquellen ausgeschlossen werden: Wenn diese Fehlerquellen ausgeschlossen sind, kann es natürlich sein, dass die Funktionen für das spezielle Display nicht funktionieren, weil die Initialisierungsroutinen anders gestaltet sein müssen oder die Organisation der Zeilen mit zwei Controllern erfolgt. In diesem Fall ist das Datenblatt zu konsultieren, um evtl. die Quellen anzupassen.

Lizenz

Alle hier veröffentlichten Quellen stehen unter der LGPLv3.

Versionsinfo

Anregungen oder weitere Informationen

Für Anregungen oder die Beantwortung von Fragen zum Projekt steht ein Forum zur Verfügung.

Externe Informationsquellen