Sdílet prostřednictvím


Zobrazení textu na displeji LCD

Znakové displeje LCD jsou užitečné pro zobrazení informací bez nutnosti externího monitoru. Běžné lcd displeje lze připojit přímo ke kolíkům GPIO, ale takový přístup vyžaduje použití až 10 kolíků GPIO. Ve scénářích vyžadujících připojení ke kombinaci zařízení je často nepraktické odchýlit tolik záhlaví GPIO na zobrazení znaků.

Mnoho výrobců prodává 20x4 znakové LCD displeje s integrovaným GPIO expander. Displej znaků se připojí přímo k rozbalovači GPIO, který se pak připojí k Raspberry Pi prostřednictvím sériového protokolu Inter-Integrated Circuit (I2C).

V tomto tématu použijete .NET k zobrazení textu na znakové obrazovce LCD pomocí rozšíření I2C GPIO.

Požadavky

  • Počítač s jednou deskou (SBC) s procesorem ARM (ARMv7 nebo vyšším)
  • 20x4 LCD Character Display s rozhraním I2C
  • Dráty propojek
  • Breadboard (volitelné/doporučené)
  • Breakout board Raspberry Pi GPIO (volitelné/doporučené)
  • .NET SDK 7 nebo novější

Poznámka

Tento kurz je napsán za předpokladu, že cílové zařízení je Raspberry Pi. Tento kurz se ale dá použít pro jakýkoli linuxový SBC, který podporuje .NET, například Orange Pi, ODROID a další.

Poznámka

Existuje mnoho výrobců znakových displejů LCD. Většina návrhů je identických a výrobce by neměl mít na funkčnosti žádný vliv. Pro referenci byl tento kurz vyvinut pomocí SunFounder LCD2004.

Příprava SBC

Ujistěte se, že je váš SBC nakonfigurovaný tak, aby podporoval následující služby:

  • SSH
  • I2C

U mnoha zařízení se nevyžaduje žádná další konfigurace. V případě Raspberry Pi použijte raspi-config příkaz . Další informace o raspi-confignajdete v dokumentaci k Raspberry Pi.

Příprava hardwaru

Pomocí propojky připojte čtyři kolíky na expandéru I2C GPIO k Raspberry Pi následujícím způsobem:

  • GND do země
  • VCC až 5V
  • Z SDA do SDA (GPIO 2)
  • SCL až SCL (GPIO 3)

Podle potřeby si projděte následující údaje:

Rozhraní I2C (zadní strana displeje) Raspberry Pi GPIO
Obrázek zadní části displeje znaků s rozbalovačem GPIO I2C. Diagram znázorňující pinout hlavičky Raspberry Pi GPIO Obrázek se svolením Raspberry Pi Foundation.
Obrázek se svolením Raspberry Pi Foundation.

Tip

Pro zjednodušení připojení k hlavičce GPIO se doporučuje breakout board GPIO ve spojení s breadboardem.

Vytvoření aplikace

V upřednostňovaném vývojovém prostředí proveďte následující kroky:

  1. Vytvořte novou konzolovou aplikaci .NET pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio. Pojmenujte ho LcdTutorial.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. Přidejte do projektu balíček Iot.Device.Bindings . Použijte rozhraní příkazového řádku .NET z adresáře projektu nebo sadu Visual Studio.

    dotnet add package Iot.Device.Bindings --version 2.2.0-*
    
  3. Obsah souboru Program.cs nahraďte tímto kódem:

    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);
    }
    

    V předchozím kódu:

    • Deklarace using vytvoří instanci I2cDevice voláním a předáním I2cDevice.Create nové I2cConnectionSettings s busId parametry a deviceAddress . To I2cDevice představuje autobus I2C. Deklarace using zajišťuje odstranění objektu a správné uvolnění hardwarových prostředků.

      Upozornění

      Adresa zařízení expanderu GPIO závisí na čipu používaném výrobcem. GPIO expandery vybavené PCF8574 používají adresu 0x27, zatímco ti, kteří používají PCF8574A čipy .0x3F Podívejte se do dokumentace k displeji LCD.

    • Jiná using deklarace vytvoří instanci Pcf8574 a předá do I2cDevice konstruktoru . Tato instance představuje rozšíření GPIO.

    • Jiná using deklarace vytvoří instanci Lcd2004 , která představuje zobrazení. Konstruktoru je předáno několik parametrů popisujících nastavení, která se mají použít ke komunikaci s rozšířením GPIO. Jako parametr se předává controller rozšíření GPIO.

    • Smyčka while běží neomezeně dlouho. Každá iterace:

      1. Vymaže displej.
      2. Nastaví pozici kurzoru na první pozici na aktuálním řádku.
      3. Zapíše aktuální čas do zobrazení na pozici aktuálního kurzoru.
      4. Iteruje aktuální čítač řádku.
      5. Režim spánku 1000 ms.
  4. Sestavení aplikace Pokud používáte .NET CLI, spusťte dotnet buildpříkaz . K sestavení v sadě Visual Studio stiskněte klávesu Ctrl+Shift+B.

  5. Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že jste spustitelnému souboru dali oprávnění ke spuštění pomocí příkazu chmod +x.

  6. Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.

    ./LcdTutorial
    

    Sledujte znak LCD, jak se na každém řádku zobrazuje aktuální čas.

    Tip

    Pokud se obrazovka rozsvítí, ale nevidíte žádný text, zkuste upravit kontrastní kruhový ovladač na zadní straně displeje.

  7. Ukončete program stisknutím klávesy Ctrl+C.

Gratulujeme! Zobrazili jste text na LCD pomocí I2C a GPIO expander!

Získání zdrojového kódu

Zdroj pro tento kurz je k dispozici na GitHubu.

Další kroky