So steuert man ein LCD Display mit Arduino

Ein LCD Display, oder auch Liquid Crystal Display, basiert auf so genannten Flüssigkristallen, die beim Anlegen einer elektrischen Spannung ihre Polarisationsrichtung ändern. Sie werden undurchsichtig.

Natürlich steht das D in LCD für Display, aber die Leute nennen es trotzdem LCD Display und das mache ich hier auch so. Ich hoffe, es stört nicht allzu sehr.

Im LCD Display sind diese Flüssigkristalle in Segmenten angeordnet und können unabhängig von einander die Transparenz ändern. Sie finden z. B. Anwendung in digitalen Armbanduhren, Drucker-Displays, Thermometern oder im Auto.

LCD Displays gibt es in unterschiedlichen Formen und mit allen möglichen unterschiedlichen Segmentanordnungen, z. B. als Pixelraster.

Im Arduino-Bereich sind mehrzeilige alphanumerische LCD Displays mit 16 Pin Connector beliebt. Sie basieren oft auf dem HD44780 Chip von Hitachi und werden mit der Arduino-Library LiquidCrystal angesprochen. Sie sind relativ einfach anzuschließen und leicht zu programmieren.

Arduino Liquid Crystal Display (LCD)
Arduino Liquid Crystal Display (LCD) – Schaltung mit Fritzing erzeugt

Solch ein LCD Display kann im 4 oder 8 Bit Modus angesprochen werden. Im 4 Bit Modus benötigt man 4, im 8 Bit Modus 8 Datenkabel aus eben so vielen digitalen Pins des Arduino-Boards. Es wird wie im Schaltbild gezeigt angeschlossen.

Je nach Display-Typ gibt es einen Anschluss für die Hintergrundbeleuchtung und ein Potentiometer, um den Anzeigekontrast zu regeln.

LCD Display Programm-Code

Im Programm wird zunächst die Library ,die übrigens mit der Arduino-Software geliefert wird, eingebunden:

#include <LiquidCrystal.h>

Nun wird das LiquidCrystal-Objekt mit dem Namen lcd angelegt. Die digitalen Output-Pins, die man verwendet hat, werden als Parameter angegeben:

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Im Setup wird die Displaykonfiguration übergeben. Die beiden Parameter stehen für die Zeichenanzahl einer Zeile und die Zeilenanzahl. In diesem Beispiel 16 Zeichen und 2 Zeilen:

lcd.begin(16, 2);

Mit print lassen sich Nachrichten auf das Display schreiben.

lcd.print("hello, world!");

Will man etwas an eine bestimmt Position schreiben, muss man erst den Cursor verschieben. Hier auf das erste Zeichen der zweiten Zeile (es wird ab der 0 gezählt). Im Beispiel werden die aktuellen Millisekunden/1000 ausgegeben. Es sind also Sekunden seit Einschalten.:

lcd.setCursor(0, 1);
lcd.print(millis() / 1000);

Der gesamte Code des Arduino-Beispiels (von D. Mellis und T. Igoe), dass unter Datei>Beispiele>LiquidCrystal>HelloWorld zu finden ist, sieht dann so aus:

#include <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000);
}

LCD Display mit I2C Ansteuerung

LCD Display mit Arduino und I2C

Bleibt noch zu erwähnen, dass es auch andere Displays gibt, die mit wesentlich weniger Pins auskommen. Sie verfügen über einen zusätzlichen Controller und lassen sich einfach per I2C Schnittstelle vom Arduino aus steuern. (Bei I2C handelt es sich um eine Datenverbindung, die Steuersignale zwischen verschiedenen elektronischen Komponenten ermöglicht.)

Link zum Produkt mit I2C Schnittstelle*

Produktlinks

Zwei-Zeilen-Display 20×2, blau/weiß*
Vier-Zeilen-Display 20×4, blau/weiß I2C*
Display-Arduino-Shield mit Navigationstasten*

Hast du weitere Fragen? Probier doch mal unser brandneues Forum zu Arduino aus!

7 thoughts on “So steuert man ein LCD Display mit Arduino

  1. Hallo Stefan,
    Ich habe ein Problem: Wenn ich den Sketch hochlade, kommen auf dem Display irgendwelche komischen Zeichen. Danke schon mal für die Hilfe.

  2. Each new age brought the criminal element forward with
    it. Today, lots of websites and blogs bring
    in unheard of income for their owners merely by promoting
    another’s company on their web pages. To report stolen email addresses
    at Yahoo, click Yahoo.

  3. Hallo, ich bin ebenfalls blutiger Anfänger und auch noch Elektronik-Trottel.. :(
    Ich habe im Netz eine ähnliche Schaltung gefunden, da war an Pin 15 und 16 zusätzlich noch einmal 5V und GND.. ist das notwendig?
    Danke und viele Grüße
    Steven

  4. Hallo Stefan,
    danke für das Tutorial. Ich fang grad mit Arduino daher sehr hilfreich wenn bestimmte Befehle auch ausreichend erklärt werden.
    Mach bitte weiter so
    Gruß

  5. Im Programmcode des finalen Programms fehlt eine Zeilenschaltung, nachdem man die Library importiert. In der ersten Zeile der Tutorial Erklärung ist es im Code auch falsch.

    LG
    Nico ;)

Comments are closed.