Programmierung Raspberry Pi

Raspberry Pi LCD Display HD44780 ansteuern (2×16 Zeichen)

LCD Display HD44780
Geschrieben von Tony

Der Raspberry Pi und andere Einplatinencomputer bieten jede Menge Möglichkeiten der Datenverarbeiten. Im Headless-Betrieb bietet es sich an einige Daten einer Anwendung, oder wichtige System-Informationen des Pi auf einem LCD Display auszugeben. Der LCD Display HD44780 eignet sich dafür und ist mit wenig Aufwand am Pi installiert. Im Folgenden wird gezeigt, wie man am Raspberry Pi einen LCD Display HD44780 ansteuern kann.

LCD Display HD44780

In Verbindung mit dem Raspberry Pi ist der LCD Display mit dem Controller HD44780 gängig. Auf dem Display können auf 2 Zeilen jeweils 16 Zeichen ausgegeben werden. Preislich liegt der LCD Display, je nach Anbieter, zwischen 3 und 6 Euro. Für den Anschluss an Pi bzw. erste Tests eignet sich die Verwendung von Jumperkabeln und eines Breadboards. Je nach Aufbau und Verkabelung ist darauf zu achten, welche Jumperkabel man benötigt: Male – Male, Male – Female oder Female – Female. Desweiteren muss an dem Display eine Stiftleiste(Rastermaß 2,54) installiert werden, um Jumperkabel für das Verbinden zu nutzen. Alternativ zu dem Testaufbau können auch Drähte direkt an den HD44780 gelötet werden.

Schaltungsaufbau

Der LCD Display HD44780 verfügt insgesamt über 16 Pins. Für die reine Ansteuerung werden jedoch nur 6 GPIO Ports am Einplatinencomputer benötigt. Die Wahl der GPIO Pins, welche man nutzen will bzw. nutzen kann, ist dem Anwender überlassen. Bei Wahl von anderen GPIO-Pins als hier im Artikel verwendet, muss dementsprechend der Folgende Quellcode zu Ansteuerung angepasst werden. Im Folgenden sind die einzelnen Pins des LCD Displays HD44780 und deren Bedeutung für die Beschaltung näher definiert.

Pin LCD Display HD44780Raspberry Pi GPIO PinBeschreibung
1. VSSPin 6 (GND)Versorgungsspannung GND (Masse)
2. VDDPin 1 (5 Volt)Versorgungsspannung +5 Volt
3. V0Pin 6 (GND), Anpassung mit PotiKontrastspannung, Spannungs zwischen 0 und 5 Volt anpassen mit Poti
4. RSPin 37 (GPIO 26)Wahl des Registers: 0: Befehlsregister, 1: Datenregister
5. RWPin 6 (GND)Read/Write mit Read:1 / Write:0

Das Display kann auch Daten ausgeben. Dies ist für unser Vorhaben zum einen nicht nötig und zum anderen auch nicht mit einer Direktverkabelung umsetzbar. Die GPIO-Pins des Pi arbeiten bzw. vertragen nur 3,3 Volt. Der Spannungspegel des Displayausgangs beträgt aber 5 Volt und würde damit sonst den Pi zerstören. Zum Daten schreiben auf das Display wird dieser Pin auf GND geschalten.
6. EPin 33 (GPIO 13)Taktleitung, Enable
7. D0-Nicht belegt (4 Bit Modus)
8. D1-Nicht belegt (4 Bit Modus)
9. D2-Nicht belegt (4 Bit Modus)
10. D3-Nicht belegt (4 Bit Modus)
11. D4Pin 31Datenleitung 4
12. D5Pin 29Datenleitung 5
13. D6Pin 27Datenleitung 6
14. D7Pin 26Datenleitung 7
15. APin 1 (5 Volt), Anpassung mit Poti / WiderstandAnode der LED Hintergrundbeleuchtung. Anpassung mit Poti oder Widerstand
16. KPin 6 (GND)Kathode der LED Hintergrundbeleuchtung

Die Beschaltung des Displays und der Anschluss an den Raspberry Pi kann mit Hilfe der abgebildeten Tabelle vorgenommen werden. Besonders zu berücksichtigen ist dabei Pin 5 am LCD Display HD44780 zur Konfiguration von Lesen und Schreiben (Read/Write). Für unser Vorhaben, sprich zum Schreiben von Daten auf dem Display, muss der Pin auf GND (Masse) geschalten werden. Prinzipiell könnte man auch Daten vom Display auf dem Pi einlesen. Dies ist aber nicht praktikabel: Grund dafür ist das der Display mit einem Spannungspegel von 5 Volt arbeitet. Die GPIO Pins des Raspberry Pi vertragen nur 3,3 Volt, sodass eine direkte Beschaltung im Lesemodus den Pi beschädigen bzw. zerstören wurde.

An dieser Stelle ein allgemeiner Hinweis: Zum Nachbau der hier vorgestellten Thematik ist Grundwissen in Sachen Elektronik von Vorteil und empfehlenswert. Der Aufbau und Anschluss des LCD-Moduls sollte unbedingt im spannungsfreien Zustand (Raspberry Pi ausgeschalten) erfolgen. Vor dem Anschalten ist der Schaltungsaufbau zu überprüfen. Weiterhin wird für die hier vorgestellte Thematik keine Garantie und Haftung übernommen, für den Fall eines resultierenden Defekts der Hardware.

 

LCD Display HD44780: LED Hintergrundbeleuchtung und Kontrasteinstellung

Die Beschaltung des Displays am Raspberry Pi nach der vorgestellten Tabelle genügt prinzipiell zur Anteuerung. In meinem Fall war der Text dennoch relativ schlecht lesbar auf Grund der schlechten Kontrasteinstellung. Durch Anpassung der Schaltung kann die Lesbarkeit deutlich optimiert werden.

Zur Anpassung des Kontrastes kann können wir an Pin 3 (Kontrastspannung) des LCD Displays die Spannung zwischen 0 und 5 Volt variieren. Hierfür wird ein Poti (10 kOhm) zwischen Raspberry Pi und Pin 3 des LCDs geschalten.

Die Helligkeit der LED Hintergrundbeleuchtung des Displays kann mit Hilfe eines Widerstandes oder Potentiometers (Trimmer-Poti) angepasst werden. Dazu wird zwischen Pin 15 des LCDs (Anode) und den +5 Volt des Raspberry Pi ein 470 Ohm Widerstand (oder Poti, z.B. 1 kOhm) geschalten. In meinem Fall habe ich verwende ich einen festen 470 Ohm Widerstand. Nach der Anpassung bzw. Erweiterung der Beschaltung resultiert die im Folgenden dargestellte Schaltung.

LCD Display HD44780

LCD Display HD44780

LCD Display HD44780 ansteuern mit Python

Zum Ausgeben von Informationen auf dem Display nutzen wir einen Python-Skript. Dazu legen wir eine neue Datei mit dem Editor nano an.

nano hd44780.py

In die Datei fügen wir den folgenden Code ein.

Nach dem Einfügen des Codes können wir die Datei speichern und schließen. Weiterhin passen wir optional noch die Rechte an.

chmod +x hd44780.py

Zum Ausführen des Codes wird folgender Befehl genutzt. Wenn das Display richtig angeschlossen ist, sollte der Text einplatinencomputer.com auf dem Display sichtbar werden.

python hd44780.py

Der Python Skript baut sich grundlegend aus mehreren Funktionen auf. Dabei dient die die Funktion lcd_write_byte() dem schreiben von Bytes auf dem Display über die Datenleitungen. Weiterhin wird mit der Funktion display_init() der LCD HD44780 initialisiert und auf einen Anfangszustand gesetzt. Zuletzt nutzen wir die Funktion lcd_message() um Texte auf dem Display zu schreiben. In der eigentlichen Main-Funktion des Skripts werden die GPIO-Pins initialisiert (auf Output gesetzt), der Display initialisiert und anschließend der Text einplatinencomputer.com geschrieben. Wichtig ist, dass zu Beginn des Skripts die verwendetes GPIO-Pins angepasst werden, im Falle das bei Eurem Aufbau andere Pins genutzt werden als hier im Tutorial.

Der hier vorgestellte Python-Code bildet prinzipiell eine grundlegende Möglichkeit, um Ausgaben auf dem Display zu erzeugen. Durch Erweitern des Skripts können diverse Informationen mit der Funktion lcd_message() auf das LCD Display HD44780 geschrieben werden.

LCD Display HD44780: CPU Temperatur und Frequenz ausgeben

Um diesem Tutorial einen weiteren praktischen Bezug zu geben, kann der bereits vorgestellte Code erweitert werden. Dabei können wir beispielsweise den Skript um die folgendne Funktionen erweitern. Mit der Funktion get_cpu_temp() wird die Temperatur und mit get_cpu_speed() die aktuelle Frequenz des Prozessors des Raspberry Pi ermittelt.

Um nun die beiden Werte auszugeben nutzen wir die bereits bestehende Funktion lcd_message().

Über den Autor

Tony

Ich bin Tony, begeistert von Einplatinencomputer und berichte über meine Erfahrungen und Projekte mit dem Raspberry Pi, Banana Pi und anderen Minicomputern.

Hinterlasse eine Antwort