Simatic S5


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Das 2 x 16 Zeichen Display mit dem Raspberry Pi

In dem folgenden Mini-Projekt wird ein 2x16 Display an Raspberry Pi angeschlossen und angesteuert. Das Display stellt zwei Zeilen für Text zur Verfügung. In jeder Zeile können 16 Zeichen angezeigt werden. Das Beispiel bezieht sich auf ein Display, das mit einem HD44780 Controller-Chip (oder einem auf ihm basierend) ausgestattet ist. Die meisten im Handel angebotenen Displays erfüllen diese Bedienung. Sie können günstig so im Fachhandel als auch bei allgemeinen Internet-Anbietern wie Amazon oder Ebay erworben werden. Hier kommt ein Display mit Bezeichnung 1602A QAPASS zum Einsatz:

Display 2x16 Frontansicht

Display 2x16 Frontansicht

Display 2x16 Rückseite

Display 2x16 Rückseite

Die Anschlussleiste des Displays besteht aus 16 Anschlüssen. Bei den Anschlüssen VSS/VDD handelt es sich um Spannungsversorgung. Das Display arbeitet mit 5 VDC. Die beiden letzten Anschlüsse A und K (15/16) sind für Hintergrundbeleuchtung zuständig. Mithilfe des Anschlusses V0 (Pin Nr. 3) kann Kontrast eingestellt werden. Hier kann ein Poti angeschlossen werden, wodurch Kontrast stufenlos verändert werden kann. Die vollständige Pinbelegung des Displays sieht wie folgt aus:

Display - Pinbelegung

Display - Pinbelegung

Die Anschlüsse RS, RW und E sind Steueranschlüsse. Am Pin 7 bis Pin 14 werden Datenleitungen angeschlossen.
Das Display kann direkt von Raspberry Pi mit Strom versorgt werden. Dazu werden der Pin Nr. 1 und Nr. 2 der Raspi-Stiftleiste verwendet. Die Spannung am Pin Nr. 2 beträgt 5 V. Der Anschluss RW am Display, Pin Nr. 5, wird mit Masse verbunden. Damit wird die Funktion „Daten senden“ des Displays unterbunden. Es ist wichtig, da LCD-Display mit 5V arbeitet, die Raspi-Eingänge dagegen nur 3,3 V vertragen. Möchte man diese Funktion nutzen, so muss der Spannungspegel dieses Display-Ausgangs zuerst auf 3,3 V gesenkt werden.

Pinbelegung_Raspberry_PI

Pinbelegung_Raspberry_PI

Das Display kann grundsätzlich über vier oder acht Datenleitungen angesprochen werden. In der folgenden Schaltung werden vier Datenleitungen verwendet. Bei dieser Methode werden die Datenanschlüsse des Displays D4 bis D7 verwendet.
Der komplette Schaltplan für diesen Versuch:

Raspi_LCD_2x16_Schaltplan

Raspi und LCD-Display-2x16: Schaltplan

Aufgebaute Testschaltung könnte dann so aussehen:

Testschaltung

Testschaltung

Das Programm

Um das Display anzusprechen, wird eine Bibliothek, die uns Datenübertragung mit notwendiger Synchronisation und Byte-Zerlegung (4 Datenleitungen = 4 Bit Übertragung) abnimmt, verwendet. In diesem Fall kommt die Bibliothek „Adafruit_CircuitPython_CharLCD“ zum Einsatz
(Internet: https://github.com/adafruit/Adafruit_CircuitPython_CharLCD).
Bevor die Bibliothek installiert werden kann, muss die aktuelle Pip-Version vorinstalliert sein. Gegebenenfalls ist das Programm zu installieren:

$ sudo apt-get install python3-pip

Anschließend kann „adafruit-blinka“ installiert werden

$ sudo pip3 install adafruit-blinka

Und schließlich die eigentliche Bibliothek „adafruit-circuitpython-charlcd“

$ sudo pip3 install adafruit-circuitpython-charlcd

Mit dem Programm werden das aktuelle Datum, die aktuelle Zeit und einige Text-Ausgabe-Möglichkeiten angezeigt. Die entsprechenden Programmabschnitte sind mit einem Kommentar versehen.


# -----------------------------------------------
# Display 2x16 (4 Bit)
# Raspberry Pi 3B
# Python 3
# -----------------------------------------------

from time import sleep
from datetime import datetime
import board
import digitalio
import adafruit_character_lcd.character_lcd as characterlcd
 
# Display Daten -------------------------------------------------
lcd_columns = 16
lcd_rows = 2

# Digitale Ausgänge ---------------------------------------------
lcd_rs = digitalio.DigitalInOut(board.D22)
lcd_en = digitalio.DigitalInOut(board.D17)
lcd_d4 = digitalio.DigitalInOut(board.D25)
lcd_d5 = digitalio.DigitalInOut(board.D24)
lcd_d6 = digitalio.DigitalInOut(board.D23)
lcd_d7 = digitalio.DigitalInOut(board.D18)
 
 
# Initialisierung -----------------------------------------------
lcd = characterlcd.Character_LCD_Mono(lcd_rs, lcd_en, lcd_d4,
                                      lcd_d5, lcd_d6,lcd_d7,
                                      lcd_columns,lcd_rows)
 
while True:

    # aktuelles Datum -------------------------------------------
    lcd.clear()
    lcd.message = "Aktuelles Datum:"
    sleep(2)
    lcd.message = datetime.now().strftime('\n   %d %b %y')
    sleep(3)

    # aktuelle Zeit ---------------------------------------------
    lcd.clear()
    lcd.message = "Aktuelle Zeit:"
    sleep(2)
    for i in range (5):
        lcd.message = datetime.now().strftime('\n   %H:%M:%S')
        sleep(1)
        
    # Blinkender Cursor -----------------------------------------
    lcd.clear()
    lcd.message = "Cursor blinkt:\n"
    sleep(2)
    lcd.blink = True
    sleep(5)
    lcd.blink = False

    # Cursor Ein / Aus ------------------------------------------
    lcd.clear()
    lcd.message = "Cursor Ein/Aus\n"
    sleep(2)
    lcd.cursor = True
    sleep(3)
    lcd.cursor = False
    
    # Links-Scrollen --------------------------------------------
    lcd.clear()
    Satz = "LINKS-SCROLLEN"
    lcd.message = Satz
    sleep(2)
    for i in range(len(Satz)):
        lcd.move_left()
        sleep(0.5)
    sleep(1)
    
    # Rechts-Scrollen -------------------------------------------
    lcd.clear()
    Satz = "RECHTS-SCROLLEN"
    lcd.message = Satz
    sleep(2)
    for i in range(16):
        lcd.move_right()
        sleep(0.5)
    sleep(1)
# ----------------------------------------------------------
        

Kurzvideo

Kurzvideo: Raspi & 2x16 Display


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz