Freigeben über


Anzeigen von Text in einem LC-Display

LCD-Zeichen sind zum Anzeigen von Informationen nützlich, ohne dass ein externer Monitor erforderlich ist. Gängige LCD-Zeichen können direkt mit den GPIO-Pins verbunden werden, jedoch erfordert ein solcher Ansatz die Verwendung von bis zu 10 GPIO-Pins. Szenarios, die eine Verbindung mit einer Kombination von Geräten erfordern, sind häufig nicht praktikabel.

Viele Hersteller verkaufen 20 x 4 LCD-Zeichenanzeigen mit einem integrierten GPIO-Expander. Die Zeichenanzeige verbindet sich direkt mit dem GPIO Expander, der dann über das serielle Inter-Integrated Circuit (I2C)-Protokoll mit dem Raspberry Pi verbunden wird.

In diesem Thema verwenden Sie .NET, um Text auf einem LCD-Zeichendisplay mit einem I2C GPIO-Expander anzuzeigen.

Voraussetzungen

Hinweis

Dieses Tutorial wurde unter der Annahme geschrieben, dass das Zielgerät ein Raspberry Pi ist. Dieses Lernprogramm kann jedoch für jeden linuxbasierten SBC verwendet werden, der .NET unterstützt, z. B. Orange Pi, ODROID und mehr.

Hinweis

Es gibt viele Hersteller von LCD-Zeichenanzeigen. Die meisten Designs sind identisch, und der Hersteller sollte keinen Unterschied zu den Funktionen machen. Als Referenz wurde dieses Lernprogramm mit dem SunFounder-LCD2004 entwickelt.

Vorbereiten des SBC

Stellen Sie sicher, dass Ihr SBC für die Unterstützung der folgenden Dienste konfiguriert ist:

  • SSH
  • I2C

Bei vielen Geräten ist keine weitere Konfiguration erforderlich. Verwenden Sie für Raspberry Pi den raspi-config Befehl. Weitere Informationen raspi-configfinden Sie in der Raspberry Pi-Dokumentation.

Vorbereiten der Hardware

Verwenden Sie Jumper-Kabel, um die vier Pins auf dem I2C GPIO Expander wie folgt mit dem Raspberry Pi zu verbinden:

  • GND zu Erde
  • VCC zu 5V
  • SDA zu SDA (GPIO 2)
  • SCL zu SCL (GPIO 3)

Weitere Informationen finden Sie in den folgenden Abbildungen:

I2C-Schnittstelle (Rückseite des Displays) Raspberry Pi GPIO
Ein Bild der Rückseite der Zeichenanzeige, das den I2C GPIO-Expander zeigt. Ein Diagramm, das die Pinbelegung des Raspberry Pi GPIO-Headers zeigt. Bild mit freundlicher Genehmigung der Raspberry Pi Foundation.
Bild mit freundlicher Genehmigung der Raspberry Pi Foundation.

Tipp

Ein GPIO-Breakout-Board in Verbindung mit einer Steckplatine wird empfohlen, um die Verbindungen zum GPIO-Header zu optimieren.

Erstellen der App

Führen Sie in Ihrer bevorzugten Entwicklungsumgebung die folgenden Schritte aus:

  1. Erstellen Sie eine neue .NET Konsolen-App entweder mithilfe der .NET CLI oder Visual Studio. Nennen Sie es LcdTutorial.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. Fügen Sie das Iot.Device.Bindings-Paket dem Projekt hinzu. Verwenden Sie entweder .NET CLI aus dem Projektverzeichnis oder Visual Studio.

    dotnet package add Iot.Device.Bindings --version 4.1.0
    
  3. Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code:

    using System;
    using System.Device.Gpio;
    using System.Device.I2c;
    using System.Threading;
    using Iot.Device.CharacterLcd;
    using Iot.Device.Pcx857x;
    
    Console.WriteLine("Displaying current time. Press Ctrl+C to end.");
    
    using I2cDevice i2c = I2cDevice.Create(new I2cConnectionSettings(1, 0x27));
    using var driver = new Pcf8574(i2c);
    using var lcd = new Lcd2004(registerSelectPin: 0, 
                            enablePin: 2, 
                            dataPins: new int[] { 4, 5, 6, 7 }, 
                            backlightPin: 3, 
                            backlightBrightness: 0.1f, 
                            readWritePin: 1, 
                            controller: new GpioController(PinNumberingScheme.Logical, driver));
    int currentLine = 0;
    
    while (true)
    {
        lcd.Clear();
        lcd.SetCursorPosition(0,currentLine);
        lcd.Write(DateTime.Now.ToShortTimeString());
        currentLine = (currentLine == 3) ? 0 : currentLine + 1; 
        Thread.Sleep(1000);
    }
    

    Im vorhergehenden Code:

    • Eine using-Deklaration erstellt eine Instanz von I2cDevice, indem sie I2cDevice.Create aufruft und ein neues I2cConnectionSettings mit den Parametern busId und deviceAddress übergibt. Dies I2cDevice stellt den I2C-Bus dar. Die using Deklaration stellt sicher, dass das Objekt beendet wird und Hardwareressourcen ordentlich freigegeben werden.

      Warnung

      Die Geräteadresse für den GPIO-Expander hängt von dem vom Hersteller verwendeten Chip ab. GPIO-Expander, die mit einem PCF8574 ausgestattet sind, verwenden die Adresse 0x27, während diejenigen, die PCF8574A-Chips verwenden, 0x3F verwenden. Weitere Informationen finden Sie in der Dokumentation des LCD.

    • Eine weitere using Deklaration erstellt eine Instanz von Pcf8574 und übergibt I2cDevice an den Konstruktor. Diese Instanz stellt den GPIO-Expander dar.

    • Eine weitere using Deklaration erstellt eine Instanz von Lcd2004, die die Anzeige repräsentiert. Es werden mehrere Parameter an den Konstruktor übergeben, die die Einstellungen beschreiben, die für die Kommunikation mit dem GPIO-Expander verwendet werden sollen. Die GPIO-Erweiterung wird als controller Parameter übergeben.

    • Eine while Schleife läuft endlos. Bei jeder Iteration passiert Folgendes:

      1. Löscht die Anzeige.
      2. Legt die Cursorposition auf die erste Position in der aktuellen Zeile fest.
      3. Schreibt die aktuelle Uhrzeit an der aktuellen Cursorposition in die Anzeige.
      4. Iteriert den aktuellen Linienzähler.
      5. Wartet 1000 ms lang ab.
  4. Erstellen Sie die App. Wenn Sie die .NET CLI verwenden, führen Sie dotnet build aus. Zum Erstellen in Visual Studio drücken Sie Ctrl+Shift+B.

  5. Stellen Sie die App auf dem SBC als eigenständige App bereit. Anweisungen finden Sie unter Deploy .NET apps to Raspberry Pi. Stellen Sie sicher, dass Sie der ausführbaren Datei mit chmod +x die Berechtigung zum Ausführen erteilen.

  6. Führen Sie die App auf dem Raspberry Pi aus, indem Sie zum Bereitstellungsverzeichnis wechseln und die ausführbare Datei ausführen.

    ./LcdTutorial
    

    Sehen Sie sich die LCD-Zeichenanzeige an, wenn die aktuelle Uhrzeit in jeder Zeile angezeigt wird.

    Tipp

    Wenn die Anzeige beleuchtet ist, aber kein Text angezeigt wird, versuchen Sie, die Kontrastauswahloption auf der Rückseite der Anzeige anzupassen.

  7. Beenden Sie das Programm, indem Sie STRG+C drücken.

Glückwunsch! Sie haben Text auf einem LCD-Display mit einer I2C und einem GPIO-Erweiterung angezeigt!

Herunterladen des Quellcodes

Die Quelle für dieses Lernprogramm ist auf GitHub verfügbar.

Nächste Schritte