zurück zur Übersicht...
25.03.2019

LCD-Anzeige

LCD-Display-Modul 1602

Anschlüsse

Pin-Nr. Pin Level Funktion
1 VSS - GND
2 VDD - Stromversorgung (+5V)
3 V0 - Stromversorgung für LCD (+5V)
4 RS HIGH/LOW "Register Select": HIGH = Data input; LOW = Instruction input
5 R/W HIGH/LOW "Read/Write":HIGH = lesen; LOW = schreiben
6 E HIGH / HIGH-LOW "Enable signal"
7 D0 HIGH/LOW Datenbus für 8bit-Transfer
8 D1 HIGH/LOW Datenbus für 8bit-Transfer
9 D2 HIGH/LOW Datenbus für 8bit-Transfer
10 D3 HIGH/LOW Datenbus für 8bit-Transfer
11 D4 HIGH/LOW Datenbus für 4bit- und 8bit-Transfer
12 D5 HIGH/LOW Datenbus für 4bit- und 8bit-Transfer
13 D6 HIGH/LOW Datenbus für 4bit- und 8bit-Transfer
14 D7 HIGH/LOW Datenbus für 4bit- und 8bit-Transfer
15 A - Hintergrundbeleuchtung (+5V)
16 K - Hintergrundbeleuchtung (GND)

Zeichentabelle

Das interne CGROM (Zeichengenerator-ROM) enthält 208 Zeichen in einer 5×8-Matrix, sowie 32 Zeichen in einer 5×10-Matrix, letztere wird jedoch bei fast keinem LCD-Modul verwendet. Darüber hinaus existiert ein CGRAM (ein Zeichengenerator-RAM), in welches 8 benutzerdefinierte Zeichen in einer 5×8-Matrix bzw. 4 Zeichen in einer 5×10-Matrix hochgeladen werden können.

Zeichentabelle des 1602 LCD-Moduls

Verwendete Bauteile

Aufbau der Schaltung

Schaltplan für LCD-Panel 1602 und Arduino

Demo für das LCD-Panel

Der folgende Sketch demonstriert die Funktionalität des LCD-Moduls unter Verwendung der Library LiquidCrystal.

#include <LiquidCrystal.h>

#define PIN_RS 12
#define PIN_EN 11
#define PIN_D4 2
#define PIN_D5 3
#define PIN_D6 4
#define PIN_D7 5

LiquidCrystal lcd(PIN_RS, PIN_EN, PIN_D4, PIN_D5, PIN_D6, PIN_D7);

void setup()
{
    lcd.begin(16, 2); // set up the LCD with columns and rows
}

void loop()
{
    lcd.print("Hello!");
    delay(2000); // 3 seconds delay

    lcd.setCursor(2, 1);
    lcd.print("World!");
    delay(2000);

    lcd.clear();
    lcd.blink();
    delay(2000);

    lcd.setCursor(7, 1);
    delay(3000);

    lcd.noBlink();
    lcd.cursor();
    delay(3000);

    lcd.noCursor();
    lcd.clear();
}

Alle Zeichen anzeigen

Der folgende Sketch zeigt alle möglichen Zeichen auf dem LCD-Modul an. Ein weiteres Potentiometer hilft hier dabei, die Zeichen nacheinander durchzuschalten.

#include <LiquidCrystal.h>

#define PIN_RS 12
#define PIN_EN 11
#define PIN_D4 2
#define PIN_D5 3
#define PIN_D6 4
#define PIN_D7 5

#define PIN_POTENTIOMETER A5

LiquidCrystal lcd(PIN_RS, PIN_EN, PIN_D4, PIN_D5, PIN_D6, PIN_D7);
char c;
byte i, iOld;
int value;

void setup()
{
    lcd.begin(16, 2);
    pinMode(PIN_POTENTIOMETER, INPUT);
}

void loop()
{
    value = analogRead(PIN_POTENTIOMETER);
    i = map(value, 0, 1023, 32, 254);
    if (iOld != i) {
        iOld = i;
        c = 0x00 + i;
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Index: ");
        lcd.print(i);
        lcd.setCursor(1, 1);
        lcd.print("Char: ");
        lcd.print(c);
    }
}

Eigene Zeichen

Der folgende Sketch zeigt, wie man für das LCD-Modul auch eigene Zeichen definieren und anzeigen kann. Hinweis: Es können nur max. 8 eigene Zeichen definiert werden, da der interne RAM des LCD-Modul nur sehr begrenzt ist.

#include <LiquidCrystal.h>

#define PIN_RS 12
#define PIN_EN 11
#define PIN_D4 2
#define PIN_D5 3
#define PIN_D6 4
#define PIN_D7 5

LiquidCrystal lcd(PIN_RS, PIN_EN, PIN_D4, PIN_D5, PIN_D6, PIN_D7);

byte customChar[2][8]= {
    {
        B01110,
        B10001,
        B10001,
        B10101,
        B10101,
        B10101,
        B10001,
        B01110
    },
    {
        B01110,
        B10001,
        B10001,
        B10001,
        B11111,
        B10001,
        B10001,
        B01110
    }
};

void setup()
{
    lcd.begin(16, 2); // set up the LCD with columns and rows
    lcd.createChar(1, customChar[0]);
    lcd.createChar(2, customChar[1]);
}

void loop()
{
    for(byte i=0; i<=30; i++) {
        lcd.setCursor(i/2, 0);
        lcd.write(1+i%2);
        delay(350);
        lcd.clear();
    }
}

Eigene Zeichen können auch mit dem LCD-Zeichen-Generator auf dieser Seite erstellt werden.