Heute zeige ich dir, wie du ein LCD-Display an deinen Arduino anschließt und Texte sowie dynamische Inhalte darauf anzeigen lässt. LCD-Displays gehören zu den wichtigsten Ausgabegeräten für Arduino-Projekte und ermöglichen die Anzeige von Sensordaten, Statusmeldungen und Benutzerinformationen. Ich nutze in diesem Tutorial HD44780-basierte Displays – der absolute Standard für Arduino LCD Display Projekte. Nach diesem Tutorial kannst du Texte anzeigen und die Anzeige dynamisch aktualisieren.
Diese Bauteile brauchst du
- Arduino Board (Uno, Mega oder kompatibel) – Auf Amazon ansehen
- LCD-Display 16×2 HD44780 – Auf Amazon ansehen
- Potentiometer 10kΩ – Auf Amazon ansehen
- Breadboard – Auf Amazon ansehen
- Jumper Wires Verbindungskabel – Auf Amazon ansehen
- Optional: LCD-Display mit I2C Schnittstelle – Auf Amazon ansehen
Was ist ein HD44780-Display?
Das HD44780 ist der Industriestandard für zeichenbasierte LCD-Displays. Du findest diese Displays in verschiedenen Größen, am häufigsten sind 16×2 und 20×4 Zeichen. Der integrierte Controller übernimmt die komplette Ansteuerung für dich, sodass du dich nur um die Inhalte kümmern musst. Das Display hat 16 Pins für Stromversorgung, Daten und Steuerung.
Pin-Belegung des LCD-Displays
Ich erkläre dir kurz die wichtigsten Pins:
- VSS: Ground (GND)
- VDD: Stromversorgung (+5V)
- V0: Kontrasteinstellung (hier schließt du das Potentiometer an)
- RS: Register Select (Steuerpin)
- RW: Read/Write (legst du meist auf GND)
- E: Enable (Steuerpin)
- D0-D3: Datenpins (im 4-Bit-Modus nicht benötigt)
- D4-D7: Datenpins (Hauptverbindung)
- A: Hintergrundbeleuchtung (+5V)
- K: Hintergrundbeleuchtung (GND)
4-Bit vs. 8-Bit Modus
Ich nutze in diesem Tutorial den 4-Bit-Modus, bei dem du nur die Pins D4-D7 verwendest. Das spart dir 4 Arduino-Pins ein. Die Performance-Einbuße ist minimal und für die meisten Projekte völlig ausreichend.
Verkabelung Schritt für Schritt
Jetzt zeige ich dir, wie du das Arduino LCD Display richtig verkabelst.
Stromversorgung
- LCD VSS → Arduino GND
- LCD VDD → Arduino 5V
- LCD A (Backlight) → Arduino 5V
- LCD K (Backlight) → Arduino GND
Kontrasteinstellung
- Potentiometer: linker Pin → 5V
- Potentiometer: mittlerer Pin → LCD V0
- Potentiometer: rechter Pin → GND
Steuerpins
- LCD RS → Arduino Pin 12
- LCD RW → Arduino GND (ich schreibe nur auf das Display, kein Lesen erforderlich)
- LCD E → Arduino Pin 11
Datenpins
- LCD D4 → Arduino Pin 5
- LCD D5 → Arduino Pin 4
- LCD D6 → Arduino Pin 3
- LCD D7 → Arduino Pin 2

Wichtige Hinweise:
- Achte unbedingt auf die korrekte Polung bei der Stromversorgung
- Das Potentiometer ist essentiell – ohne korrekte Einstellung siehst du möglicherweise nichts auf dem Display
- Den RW-Pin legst du auf GND, da ich dir hier nur das Schreiben zeige
Der Code für dein Arduino LCD Display
Jetzt kommt der spannende Teil – ich zeige dir, wie du das Display programmierst.
Bibliothek einbinden
Die LiquidCrystal-Bibliothek ist standardmäßig in der Arduino IDE enthalten. Du bindest sie so ein:
#include <LiquidCrystal.h>
LCD-Objekt initialisieren
Definiere die verwendeten Pins:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Display konfigurieren
Gib die Größe deines Displays an (16 Spalten, 2 Zeilen):
lcd.begin(16, 2);
Text ausgeben
So gibst du einen einfachen Text aus:
lcd.print("hello, world!");
Cursor positionieren
Setze den Cursor in die zweite Zeile (Index 0, 1) und gib dynamische Werte aus:
lcd.setCursor(0, 1); lcd.print(millis() / 1000);
Vollständiger Beispielcode
Hier ist der komplette Code, den du einfach kopieren kannst:
#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);
}
Code-Erklärung
- setup(): Hier initialisiere ich das Display und zeige „hello, world!“ in der ersten Zeile an
- loop(): Diese Funktion aktualisiert kontinuierlich die zweite Zeile mit der verstrichenen Zeit in Sekunden
- millis() / 1000: Konvertiert Millisekunden in Sekunden
Weitere nützliche Befehle
Ich zeige dir noch ein paar praktische Befehle, die du kennen solltest:
lcd.clear(): Löscht das Display komplettlcd.home(): Setzt den Cursor auf Position (0,0)lcd.setCursor(spalte, zeile): Positioniert den Cursorlcd.noDisplay()/lcd.display(): Schaltet die Anzeige aus/anlcd.cursor()/lcd.noCursor(): Zeigt/versteckt den Cursor
Troubleshooting – Wenn etwas nicht funktioniert
Display zeigt nichts:
- Prüfe die Potentiometer-Einstellung und drehe langsam am Regler
- Kontrolliere die Stromversorgung (VSS und VDD)
Unleserliche Zeichen:
- Du hast wahrscheinlich die Datenpins falsch verkabelt
- Überprüfe die Verbindungen D4-D7
Nur erste Zeile funktioniert:
- Überprüfe die Displaygröße in
lcd.begin()– passt die Angabe zu deinem Display?
Fazit
Du hast jetzt gelernt, wie du ein HD44780-LCD-Display im 4-Bit-Modus an deinen Arduino anschließt. Die LiquidCrystal-Bibliothek macht die Ansteuerung wirklich einfach. Mit nur wenigen Befehlen kannst du statische und dynamische Inhalte anzeigen. Das Display ist perfekt für alle Projekte, bei denen du Informationen ausgeben möchtest.
Nächste Schritte
Ich empfehle dir, jetzt mit verschiedenen Textpositionen und Formatierungen zu experimentieren. Kombiniere das Display mit Sensoren wie Temperatur- oder Abstandssensoren. Du kannst auch ein Menüsystem mit mehreren Seiten erstellen. Wenn du noch weniger Kabel möchtest, teste ein I2C-LCD-Display – damit brauchst du nur 2 Datenpins!
Viel Erfolg mit deinem LCD-Display-Projekt!
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs

[…] Einsatz von LCD-Displays statt LEDs […]
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.
hilft mir die als anfänger
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.
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
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ß
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 ;)
@Nico: Ja, stimmt. Danke für den Hinweis. Alles geändert.