Arduino - LCD

In diesem Arduino-LCD-Tutorial lernen wir, wie man ein LCD (Flüssigkristallanzeige) mit dem Arduino-Board verbindet. LCDs sind sehr beliebt und werden in Elektronikprojekten häufig verwendet, um Informationen anzuzeigen. Es gibt viele Arten von LCDs. Dieses Tutorial verwendet als Beispiel das LCD 16x2 (16 Spalten und 2 Zeilen). Die anderen LCDs sind ähnlich.

※ Notiz:

Wenn Sie die Verkabelung vereinfachen möchten, können Sie stattdessen LCD I2C verwenden. Siehe LCD I2C Tutorial

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×LCD
1×Potentiometer
1×Alternativ: 10k Ohm Trimmer Potentiometer
1×(Alternativ) Potentiometer Kit
1×(Alternativ) Potentiometer Module with Knob
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über LCD 16x2

Pinbelegung

LCD-Pinbelegung

LCD hat bis zu 16 Pins. In den häufigsten Anwendungen verwenden wir nicht alle Pins.

Mit der Unterstützung der LiquidCrystal-Bibliothek können wir LCDs sogar verwenden, ohne die Bedeutung dieser Pins zu kennen. Wenn Sie jedoch neugierig sind oder tiefergehende Informationen wünschen, schauen wir uns diese Pins und deren Funktionalität an:

  • GND-Pin: muss mit GND (0 V) verbunden werden.
  • VCC-Pin: die Stromversorgung für das LCD; muss mit VCC (5 V) verbunden werden.
  • Vo (LCD-Kontrast)-Pin: steuert den Kontrast und die Helligkeit des LCDs; kann mit 5 V verbunden werden (höchster Kontrast und Helligkeit) oder mit einem Potentiometer verbunden werden (um Kontrast und Helligkeit anzupassen)
  • RS (Registerauswahl)-Pin: Es gibt zwei Arten von Daten, die an das LCD gesendet werden müssen: Befehle (zur Steuerung des LCD) und Daten. Diese beiden werden über denselben Datenbus gesendet. Der RS-Pin teilt dem LCD mit, ob die Daten auf dem Datenbus Befehle oder Daten sind.
    • Wenn wir den Befehl zur Steuerung des LCD senden möchten, muss der RS-Pin auf LOW gesetzt werden (z. B. den Cursor an eine bestimmte Position setzen, das Display löschen ...).
    • Wenn wir die Daten zum Anzeigen auf dem LCD senden möchten, muss der RS-Pin auf HIGH gesetzt werden.
  • R/W (Read/Write)-Pin: dient zur Auswahl des Lese- oder Schreibmodus.
    • Wenn wir Daten vom LCD lesen möchten, muss dieser Pin auf HIGH gesetzt werden.
    • Wenn wir Daten an das LCD senden möchten, muss dieser Pin auf LOW gesetzt werden. Da wir dieses LCD-Gerät nur als Ausgabegerät verwenden, belassen wir diesen Pin auf LOW.
  • EN (Enable)-Pin: wird verwendet, um das LCD zu aktivieren. HIGH, um das LCD zu aktivieren; LOW, um das LCD zu deaktivieren.
  • D0-D7 (Datenbus)-Pins: Übertragen Daten und Befehle zwischen dem Arduino und dem LCD. Es gibt zwei Modi, um Daten zu senden: 4-Bit-Modus und 8-Bit-Modus.
  • A-K (Anode & Kathode)-Pins: dienen dazu, die Hintergrundbeleuchtung des LCD mit Strom zu versorgen. Der A-Pin muss mit VCC verbunden werden. Der K-Pin muss mit GND verbunden werden.

4-Bit-Modus und 8-Bit-Modus

  • 8-Bit-Modus: 8 Bits eines Bytes werden gleichzeitig über die Pins D0 bis D7 gesendet.
  • 4-Bit-Modus: 8 Bits eines Bytes werden zweimal gesendet, jeweils 4 Bits über die Pins D4 bis D7.

Der 8-Bit-Modus ist schneller als der 4-Bit-Modus, verwendet aber mehr Pins als der 4-Bit-Modus. Die Modusauswahl erfolgt im Initialisierungsprozess durch das Senden eines Befehls an das LCD.

Dieses Tutorial verwendet den 4-Bit-Modus, der am häufigsten verwendet wird.

In diesem Modus sind die Pins des LCDs:

  • 6 Pins (RS, EN, D4, D5, D6 und D7) sind mit dem Arduino-Pin verbunden.
  • 4 Pins (D0, D1, D2 und D3) sind nicht verbunden.
  • 6 verbleibende Pins sind mit GND/VCC oder Potentiometer verbunden.

LCD-Pinbelegung im 4-Bit-Modus

LCD PINCONNECTED TO
01GNDGND
02VCC5V
03Vo5V or potentiometer's pin
04RSAn Arduino's pin
05R/WGND
06ENAn Arduino's pin
07D0NOT connected
08D1NOT connected
09D2NOT connected
10D3NOT connected
11D4An Arduino's pin
12D5An Arduino's pin
13D6An Arduino's pin
14D7An Arduino's pin
15A5V
16KGND

LCD-Koordinate

LCD 16x2 umfasst 16 Spalten und 2 Zeilen. Die Spalten und Zeilen beginnen bei 0.

Arduino LCD Koordinate

Wie es funktioniert

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

Der Prozess des Sendens von Daten (zur Anzeige) an das LCD:

  1. Arduino setzt den RS-Pin auf HIGH (um das Datenregister auszuwählen)
  2. Arduino schreibt Daten an die D4 bis D7 Pins (Datenbus).
  3. LCD empfängt Daten über den Datenbus.
  4. LCD speichert die empfangenen Daten im Daten-Widerstand, da der RS-Pin HIGH ist. Dann zeigt das LCD die Daten auf dem Bildschirm an

Der Prozess des Sendens eines Befehls (zur Steuerung) an das LCD-Display (z. B. das LCD blinken lassen, den Cursor an eine bestimmte Position setzen, das Display löschen ...):

  1. Arduino setzt den RS-Pin auf LOW (um das Befehlsregister auszuwählen)
  2. Arduino schreibt den Befehl auf die D4 bis D7-Pins (Datenbus).
  3. Das LCD empfängt die Daten über den Datenbus.
  4. Das LCD speichert die empfangenen Daten im Befehlsregister, da der RS-Pin LOW ist. Dann führt das LCD basierend auf dem Wert des Befehls eine Aktion aus.

Arduino - LCD-Anzeige

Die Ansteuerung eines LCDs ist eine ziemlich komplizierte Aufgabe. Glücklicherweise erleichtert die LiquidCrystal-Bibliothek den Prozess der Ansteuerung eines LCDs für Sie, sodass Sie die Low-Level-Anweisungen nicht kennen müssen. Sie müssen lediglich den Arduino mit dem LCD verbinden und die Funktionen der Bibliothek verwenden. Die Verwendung des LCDs ist ein Kinderspiel.

Verdrahtungsdiagramm

Arduino LCD Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wie man für LCD programmiert

  • Die Bibliothek einbinden:
#include <LiquidCrystal.h>
  • Definieren Sie, welcher Arduino-Pin mit den sechs LCD-Pins verbunden ist: RS, EN, D4, D4, D6, D7
const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5;

Eine der Vorteile der Bibliothek besteht darin, dass der mit dem LCD verbundene Arduino-Pin einstellbar ist. Dies macht es flexibel, wenn Sie Arduino mit LCD und anderen Sensoren/Aktuatoren verbinden.

  • Deklariere ein LiquidCrystal-Objekt:
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
  • Stellen Sie die Anzahl der Spalten und Zeilen des LCD ein.
lcd.begin(16, 2);
  • Bewege den Cursor an die gewünschte Position (Spaltenindex, Zeilenindex)
lcd.setCursor(column_index, row_index);
  • Eine Nachricht auf dem LCD ausgeben.
lcd.print("Hello World!");

Es gibt noch viele weitere Dinge, die wir mit LCD tun können (siehe Abschnitt 'Do More with LCD').

※ Notiz:

Sie können sechs beliebige Pins des Arduino-Boards verwenden, um eine Verbindung zum LCD herzustellen, solange Sie im Arduino-Code den jeweiligen Pin angeben.

Arduino-Code

#include <LiquidCrystal.h> // LCD-Pins <--> Arduino-Pins const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); void setup() { lcd.begin(16, 2); // Legt die Anzahl der Spalten und Zeilen fest lcd.setCursor(0, 0); // Cursor an die Position (0, 0) setzen lcd.print("Arduino"); // Nachricht bei (0, 0) ausgeben lcd.setCursor(2, 1); // Cursor an die Position (2, 1) verschieben lcd.print("GetStarted.com"); // Nachricht bei (2, 1) ausgeben } void loop() { }

Schnelle Schritte

  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino hochzuladen
  • Sehen Sie das Ergebnis auf dem LCD
Text auf dem LCD mit Arduino anzeigen
  • Versuchen Sie, Text und Position zu ändern

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Benutzerdefinierter Charakter

Die Funktion lcd.print() unterstützt nur ASCII-Zeichen. Wenn Sie ein Sonderzeichen oder Symbol anzeigen möchten (z. B. Herz, Angry Bird), müssen Sie den untenstehenden Zeichengenerator verwenden.

LCD 16x2 kann 32 Zeichen darstellen (2 Zeilen und 16 Spalten). Jedes Zeichen besteht aus 40 Pixeln (8 Zeilen und 5 Spalten).

Arduino LCD 16x2 Pixel

Der Zeichengenerator stellt ein Zeichen dar (40 Pixel). Sie müssen nur die folgenden Schritte ausführen:

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <LiquidCrystal.h> // LCD-Anschlüsse <--> Arduino-Anschlüsse const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.begin(16, 2); // Festlegen der Anzahl von Spalten und Zeilen lcd.createChar(0, customChar); // Erstellen eines neuen benutzerdefinierten Zeichens lcd.setCursor(2, 0); // Cursor auf (2, 0) setzen lcd.write((byte)0); // Das benutzerdefinierte Zeichen an der Position (2, 0) ausgeben } void loop() { }

Ergebnis auf dem LCD:

LCD-benutzerdefiniertes Zeichen

Mehrere benutzerdefinierte Zeichen

Wir können bis zu acht benutzerdefinierte Zeichen erstellen (mit Indizes von 0 bis 7). Das folgende Beispiel erstellt und zeigt drei Zeichen.

#include <LiquidCrystal.h> // LCD-Anschlüsse <--> Arduino-Anschlüsse const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.begin(16, 2); // Legt die Anzahl der Spalten und Zeilen fest lcd.createChar(0, customChar0); // Erstellt ein neues benutzerdefiniertes Zeichen (Index 0) lcd.createChar(1, customChar1); // Erstellt ein neues benutzerdefiniertes Zeichen (Index 1) lcd.createChar(2, customChar2); // Erstellt ein neues benutzerdefiniertes Zeichen (Index 2) lcd.setCursor(2, 0); // Cursor auf (2, 0) setzen lcd.write((byte)0); // Das benutzerdefinierte Zeichen 0 an der Position (2, 0) ausgeben lcd.setCursor(4, 0); // Cursor auf (4, 0) setzen lcd.write((byte)1); // Das benutzerdefinierte Zeichen 1 an der Position (4, 0) ausgeben lcd.setCursor(6, 0); // Cursor auf (6, 0) setzen lcd.write((byte)2); // Das benutzerdefinierte Zeichen 2 an der Position (6, 0) ausgeben } void loop() { }

Ergebnis auf dem LCD:

Mehrere benutzerdefinierte Zeichen auf dem LCD

Zusammenfassung: Wie man ein benutzerdefiniertes Zeichen auf dem LCD verwendet.

  • Verwenden Sie den oben genannten Zeichengenerator, um den Binärcode für das benutzerdefinierte Zeichen zu erstellen.
  • Geben Sie den Binärcode für das benutzerdefinierte Zeichen an (kopieren Sie ihn aus dem vorherigen Schritt).
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Erstelle ein benutzerdefiniertes Zeichen und weise es einem Indexwert zu (von 0 bis 7) in der setup() Funktion
lcd.createChar(index, customChar);
  • Zeige das benutzerdefinierte Zeichen jederzeit und überall auf dem LCD (in der setup() oder loop() Funktion)
lcd.setCursor(column, row); // Cursor an die gewünschte Position bewegen lcd.write((byte)index); // das benutzerdefinierte Zeichen an der gewünschten Position ausgeben

Fordere dich selbst heraus

Verwenden Sie ein LCD-Display, um eines der folgenden Projekte durchzuführen:

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!