Das kleine LCD Kochbuch, oder… Heute kam mein Paket…

…mit 10 Stück „Jumbo“ Dot-Matrix LCD-Anzeigen mit 4 Zeilen zu je 40 Zeichen! Diese LCDs hatte ich über ebay von Privat als bereits verbaute, jedoch neuwertige und kaum in Betrieb genommene Produkte ersteigert.

LCD_4_40_10Stück_unbekanntDas Paket erreichte mich nach wenigen Tagen in einem ordentlichen Zustand. Die LCDs waren sachgerecht in ESD-Schutztüten verpackt. Den Zustand der Anzeigen würde ich als nahezu neuwertig bezeichnen. An einigen LCDs sind noch Kabelfragmente angelötet oder die Unterteile der Flachkabelverbinder vorhanden; das war jedoch vor dem Kauf bereits abgesprochen und daher bekannt.

LCD_4_40_16pol+2Der spannendste Teil aber kommt jetzt. Wie müssen diese Teile nun eigentlich angeschlossen und angesteuert werden? Die Anzeigen sind nach Aussage des Verkäufers mit einem HD44780 kompatiblem Controller ausgestattet. Aber auch nach wiederholter Anfrage beim Verkäufer, bekam ich leider keine Antwort zur Pinbelegung des 2*8-poligen Anschlusses und beschloss daher anzufangen selber zu recherchieren.

Da ich bereits in mehreren meiner Projekte LCDs unterschiedlicher Art verbaut hatte, war mir bewusst, dass es unterschiedliche Stecker- und Pinbelegungen gibt. Über Internetsuchmaschinen versuchte ich daher das LCD mit der Bezeichnung TMBC40465A A03 zu identifizieren, allerdings erst einmal ohne Erfolg. Zumindest aber bekam ich nun eine Idee, dass der Hersteller Samsung sein könnte. Über diesen Weg fand ich dann eher zufällig ein Datenblatt von Vishay, welches meinen LCDs hier sehr nah kam. Aber zuerst einmal einige etwas allgemeinere Informationen vorab.

Bekannte Anschlusskonfigurationen einiger Dot-Matrix LCDs

Die gängigen LCDs mit 5*8 Pixeln je Zeichen haben 2 Zeilen mit je 16 Zeichen. Die Kontaktleiste ist in der Regel einreihig 16-polig. Die Kontakte sind üblicherweise durchnummeriert von links nach rechts mit 1 bis 16 oder der Pin 1 ist zumindest mit einer Markierung versehen. Es gibt sogar Module bei denen die Bedeutung der Anschlüsse in Kurzform aufgedruckt ist. An den Kontakten 15 und 16 ist normalerweise die LED Hintergrundbeleuchtung angeschlossen. Die Belegung der Anode und Kathode ist jedoch leider nicht immer eindeutig. Die ersten mir bekannten LCDs von Hitachi hatten übrigens nur einen 14-poligen Anschluss. Die optionale Hinterleuchtung wurde deshalb oftmals an separaten Pins meist auf der Gegenseite herausgeführt. Es gibt aber auch 15-polige Anschlüsse, bei denen dann die Kathode der LED gemeinsam mit der Controllermasse herausgeführt ist und der Pin 15 damit mit der Anode belegt ist.

Ob die LED Hinterleuchtung einen Vorwiderstand benötigt oder nicht, lässt sich allgemeingültig leider auch nicht sagen. Im Zweifelsfall immer mit einem 470 Ohm Vorwiderstand an 5V austesten und ggf. unter Beobachtung der Stromaufnahme sukzessive verkleinern.

Bei meinen Recherchen bin ich übrigens auch auf Hinweise in Datenblättern gestoßen, die von einem reinem 3,3V Betrieb sprechen. Solche LCDs habe ich bislang allerdings noch nicht gesehen.

Beispiel 1: LCD mit 2*16 Zeichen und einreihiger Stiftleiste

LCD_2_16_16polOberhalb der Anzeige (das Display ist hier noch mit Schutzfolie) ist gut die 16-polige Stifleiste zu erkennen. Links ist hier der Pin1 und rechts Pin 16 zu finden. Das ist die allgemein übliche Belegung. Es gibt aber auch LCDs mit umgedrehter Reihenfolge! Nachfolgend die Kontaktbelegung des abgebildeten Displays:

  • LCD-Pin Bez. Beschreibung
  • 1              Vss   Masse
  • 2              Vdd   +5V
  • 3              Vo    ca. +0,7V LCD-Kontrast, typ. über Poti einstellbar
  • 4              RS    Register Select 0=Kommandos / 1=Dateneingabe
  • 5              R/W  1=Read / 0=Write
  • 6              E      Enable
  • 7              D0    Datenbit 0 LSB
  • 8              D1    Datenbit 1
  • 9              D2    Datenbit 2
  • 10            D3    Datenbit 3
  • 11            D4    Datenbit 4
  • 12            D5    Datenbit 5
  • 13            D6    Datenbit 6
  • 14            D7    Datenbit 7 MSB
  • 15            A      Anode über Vorwiderstand 100R an +5V
  • 16            K      Masse der Hintergrundbeleuchtung

Obige Anschlussbelegung scheint die gängigste zu sein. Aber Achtung!! Leider gibt es auch Anzeigen, bei denen die Stromversorgungsanschlüsse der Pins 1 und 2 genau andersherum angeschlossen sind! Das ist besonders fatal, wenn hier die Konfiguration völlig unbekannt ist. Mit etwas Glück lässt sich der Masseanschlüsse jedoch mit einem Ohmmeter ermitteln. Funktioniert die Hintergrundbeleuchtung überhaupt nicht, sind vermutlich Anode und Kathode andersherum belegt.

Beispiel 2: LCD mit 2*16 Zeichen und zweireihiger Stiftleiste

LCD_2_16_14pol+2Bei diesem Display handelt es sich ebenfalls um ein 2-zeiliges Display, allerdings dieses Mal mit einem 2-reihigen 14-poligen, eindeutig durchnummerierten Anschluss an der linken Seite. Die Bedruckung auf der Oberseite weist oben links auf Pin 14 hin, rechts daneben auf Pin 13. Unten links ist der Pin 2 und rechts daneben demzufolge der Pin 1.

Auf der rechten Seite der Anzeige befindet sich oben der Pin 15 und unten der Pin 16 für die Versorgung der LED Hintergrundbeleuchtung.

Die Pinbelegung entspricht hier ansonsten der Tabelle aus dem Beispiel 1, obwohl hier nun ein 2-reihiger 2*7 poliger Anschluss mit separaten Kontakten für die LED Hinterleuchtung zu finden sind.

Beispiel 3: LCD mit 4*16 Zeichen und einreihiger Stiftleiste

LCD_4_16_16polHier ist die Pinbelegung an der einreihigen 16-poligen Anschlussleiste sogar im Klartext auf der Oberseite des Displays gut lesbar zu sehen. Auch bei diesem LCD-Modul entspricht die Kontaktbelegung dem Beispiel 1.

 

 

Beispiel 4: LCD mit 4*20 Zeichen und einreihiger Stiftleiste

LCD_4_20_16polHier ist erneut eine einreihige 16-polige Anschlussleiste zu sehen, allerdings ohne Beschriftung auf der Oberseite. Diese befindet sich in diesem Beispiel auf der Lötseite und ist links oben mit 1 und rechts mit 16 beschriftet. Alles weitere entspricht wieder dem Beispiel 1. Und auch hier gelten die bereits angesprochenen möglichen Abweichungen.

 

Beispiel 5: LCD mit 4*40 Zeichen und zweireihiger Stiftleiste

LCD_4_40_16pol+2Bei diesem Neuerwerb im 10er Pack befindet sich links am Modul ein zweireihiger 16-poliger Anschluss. Rechts vom LCD sind die beiden separaten Kontakte für die Hintergrundbeleuchtung zu sehen; oben befindet sich der Pin 17 unten 18. Die Beschriftung des 16-pol. Anschlusses befindet sich dagegen auf der Lötseite. Von der LCD-Seite aus betrachtet, ist der Pin 1 oben links, Pin 2 oben rechts usw. Nach einer Messung mit dem Ohmmeter zwischen allen 16 Kontakten mit Pin 17 und 18 der LED-Hintergrundbeleuchtung ergaben sich keine Verbindungen. Das ließ damit den Schluss zu, dass es sich hier erstmalig um insgesamt 18 Anschlüsse handeln muss. Nachfolgend die recherchierte Kontaktbelegung:

  • LCD-Pin Bez. Beschreibung
  • 1              D7    Datenbit 7 MSB
  • 2              D6    Datenbit 6
  • 3              D5    Datenbit 5
  • 4              D4    Datenbit 4
  • 5              D3    Datenbit 3
  • 6              D2    Datenbit 2
  • 7              D1    Datenbit 1
  • 8              D0    Datenbit 0
  • 9              E1     Enable 1
  • 10            R/W  Read / Write (H=Read, L=Write)
  • 11            RS    Register Select L=Kommandos / H=Dateneingabe
  • 12            Vo    +0,7V LCD-Kontrast, typ. über Poti einstellbar
  • 13            Vss   Ground, Masse, GND
  • 14            Vdd   +5V
  • 15            E2     Enable 2
  • 16            NC    Not connected oder negative Vo bei einigen LCDs (Vee)
  • 17            A      Anode über Vorwiderstand 100R an +5V
  • 18            K      Masse der Hintergrundbeleuchtung

Der Grafik-Controller HD44780

Die meisten gängigen Dot-Matrix LCD-Anzeigen sind alle ähnlich mit einem Hitachi HD44780 oder kompatiblem Controller und entsprechende Displaytreiber HD44100 aufgebaut. Maximal 80 Stellen können so angesteuert werden. Nun wird auch langsam deutlich, weshalb hier gleich 2 Taktleitungen mit E1 und E2 an der Schnittstelle ausgewiesen sind. Mit 4*40 Zeichen, entsprechend 160 Positionen, werden 2 der HD44780 bzw. kompatiblen Controller benötigt. Nach einigen weiteren Recherchen, habe ich die m. E. sehr gute LCD-Beschreibung von Sprut wiedergefunden. Seine Seiten kann ich übrigens generell empfehlen. Ich kenne diese noch aus meinen ersten Versuchen mit den Microchip PIC-Controllern. Auch technisch komplexere Vorgänge werden hier simpel und nachvollziehbar dargestellt.

Nachfolgend noch einige zum Hitachi Urvater HD44780 kompatible Controller. Die kurze Liste erhebt allerdings keinen Anspruch auf Vollständigkeit.

KS0066
KS0073
SED7076
SED1278
ST7036
ST7066

Die Verdrahtung

Mit den obigen Beschreibungen sollte es kein größeres Problem mehr darstellen, sein LCD mit einem Arduino zu verbinden. In diesem Arduino Tutorial sind bei Bedarf noch weitere Details zu finden.

Der Arduino Sketch

Bleibt nun noch nur zu klären, wie das 4*40 Zeichen LCD mit einem Arduino Sketch angesteuert werden kann. Als Basis für die weiteren Untersuchungen dient der bekannte Arduino Beispielsketch Hello World.

/*
LiquidCrystal Library – Hello World
Demonstrates the use a 16×2 LCD display.  The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.
This sketch prints „Hello World!“ to the LCD
and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe

This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print(„hello, world!“);
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}

Die Herausforderung ist nun die beiden im 4*40 Zeichen LCD verbauten Controller mit der Arduino LiquidCrystal.h Library so anzusprechen, dass auch alle 4 Zeilen mit ihren jeweils 40 Zeichen angesprochen werden können.

Die einzelnen Zeilen eines LCDs werden normalerweise von oben nach unten, hier also von 0 bis 3, durchnummeriert. Da hier jedoch das Display in 2 Segmente aufgeteilt wird, werden die ersten beiden Zeilen vom 1. Controller mit den Zeilen 0 und 1 und die nachfolgenden Zeilen 2 und 3 über den 2. Controller nun ebenfalls mit den Zeilen 0 und 1 adressiert.

Dazu müssen im obigen Sketch folgende farblich markierte Anpassungen ergänzt bzw. angepasst werden.

// Connect E1 to pin 11 and E2 to 13
// Init Library Pin    RS, E, D4,D5,D6,D7
LiquidCrystal lcd1(12, 11, 5, 4, 3, 2);
LiquidCrystal lcd2(12, 13, 5, 4, 3, 2);

Im setup() sind nachfolgende Anpassungen durchzuführen.

lcd1.begin(40, 2);      // Auch (40, 4) funktioniert
lcd2.begin(40, 2);      // Auch (40, 4) funktioniert
// Print a message to the LCD // Oberste Zeile
lcd1.print(„hello, world!“);

Den Inhalt der loop() löschen wir komplett und schreiben der Einfachheit halber hier jetzt nur einige neue print() Zeilen zur besseren Veranschaulichung wie folgt.

// Displaycontroller 1
lcd1.setCursor(0, 1);  // Zeilenanfang der 2. Zeile
lcd1.print(„4 * 40 Zeichen / 1. Controller 2. Zeile“);
// Displaycontroller 2
lcd2.setCursor(0, 0);  // Zeilenanfang der 3. Zeile
lcd2.print(„4 * 40 Zeichen / 2. Controller 3. Zeile“);
lcd2.setCursor(0, 1);  // Zeilenanfang der 4. Zeile
lcd2.print(„4 * 40 Zeichen / 2. Controller 4. Zeile“);

LCD_4_40_Z1_Z4_ArduAuf vergleichbarem Wege lassen sich übrigens auch sehr komfortabel mehrere einzelne LCDs über die Library kontrollieren.

Die technischen Daten des LCDs in Kurzform
Vcc:                            +5V
Controller:                   HD44780 kompatibel
Interface:                    4-bit oder 8-bit parallel, RS, E1 und E2, (R/W), Vo
Hinterleuchtung:         Gelb, 5V über Vorwiderstand z. B. 470 Ohm
Abmessungen PCB: 190mm * 54mm
Abmessungen LCD: Sichtfläche LCD: 147mm * 29,5mm; Rahmen 166,3mm * 41,9mm

Hier meine Zusammenfassung
Bauteil:                      LCD 4 * 40 Zeichen
Artikelnummer:          ohne
Lieferant:                   eBay
Verkäufer:                  von Privat
Preis:                        10 €
Lieferzeit:                  4 Tage
Versandkosten:         5,50 €
Sonstiges:                keine Beanstandungen
Bewertung:               bin sehr zufrieden mit dem Schnapper 🙂

 

Agenda zur Bewertung
*=Ganz Mies            **=Mies        ***=Akzeptabel     ****=Gut     *****=Sehr gut
Verkäufer:                          ****
Produkt:                            *****

Olaf Meier
Arduino Hannover       http://Arduino-Hannover.de                                     http://electronicfreakblog.wordpress.com/

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.