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) |
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.
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();
}
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);
}
}
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 das 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.
zurück