Visa text på en LCD-skärm
LCD-teckenskärmar är användbara för att visa information utan behov av en extern bildskärm. Vanliga LCD-teckenskärmar kan anslutas direkt till GPIO-stiften, men en sådan metod kräver att upp till 10 GPIO-stift används. För scenarier som kräver anslutning till en kombination av enheter är det ofta opraktiskt att ägna så mycket av GPIO-huvudet åt en teckenvisning.
Många tillverkare säljer 20x4 LCD-teckenskärmar med en integrerad GPIO-expanderare. Teckenvisningen ansluter direkt till GPIO-expanderaren, som sedan ansluter till Raspberry Pi via serieprotokollet Inter-Integrated Circuit (I2C).
I det här avsnittet använder du .NET för att visa text på en LCD-teckenskärm med hjälp av en I2C GPIO-expanderare.
Förutsättningar
- ARM-baserad (ARMv7 eller senare) enkelkortsdator (SBC)
- 20x4 LCD-teckenskärm med I2C-gränssnitt
- Bygeltrådar
- Brödbräda (valfritt/rekommenderat)
- Raspberry Pi GPIO breakout board (valfritt/rekommenderat)
- .NET SDK 7 eller senare
Anteckning
Den här självstudien skrivs förutsatt att målenheten är Raspberry Pi. Den här självstudien kan dock användas för alla Linux-baserade SBC som stöder .NET, till exempel Orange Pi, ODROID med mera.
Anteckning
Det finns många tillverkare av LCD-teckenskärmar. De flesta designer är identiska och tillverkaren bör inte göra någon skillnad för funktionaliteten. Som referens utvecklades den här självstudien med SunFounder LCD2004.
Förbereda SBC
Se till att din SBC är konfigurerad för att stödja följande tjänster:
- SSH
- I2C
För många enheter krävs ingen ytterligare konfiguration. Använd kommandot för raspi-config
Raspberry Pi. Mer information om raspi-config
finns i Raspberry Pi-dokumentationen.
Förbereda maskinvaran
Använd bygeltrådar för att ansluta de fyra stiften på I2C GPIO-expanderaren till Raspberry Pi enligt följande:
- GND till marken
- VCC till 5V
- SDA till SDA (GPIO 2)
- SCL till SCL (GPIO 3)
Se följande siffror efter behov:
I2C-gränssnitt (baksidan av displayen) | Raspberry Pi GPIO |
---|---|
Bild med tillstånd Raspberry Pi Foundation. |
Tips
En GPIO-utbrytningstavla tillsammans med en brödbräda rekommenderas för att effektivisera anslutningarna till GPIO-huvudet.
Skapa appen
Slutför följande steg i önskad utvecklingsmiljö:
Skapa en ny .NET-konsolapp med antingen .NET CLI eller Visual Studio. Ge den namnet LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Lägg till paketet Iot.Device.Bindings i projektet. Använd antingen .NET CLI från projektkatalogen eller Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Ersätt innehållet i Program.cs med följande kod:
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); }
I koden ovan:
En användningsdeklaration skapar en instans av
I2cDevice
genom att anropaI2cDevice.Create
och skicka in en nyI2cConnectionSettings
med parametrarnabusId
ochdeviceAddress
. DettaI2cDevice
representerar I2C-bussen. Deklarationenusing
säkerställer att objektet tas bort och att maskinvaruresurser släpps korrekt.Varning
Enhetsadressen för GPIO-expanderaren beror på vilket chip som används av tillverkaren. GPIO-expanderare som är utrustade med en PCF8574 använder adressen
0x27
, medan de som använder PCF8574A-chips använder0x3F
. Läs lcd-dokumentationen.En annan
using
deklaration skapar en instans avPcf8574
och skickarI2cDevice
den till konstruktorn. Den här instansen representerar GPIO-expanderaren.En annan
using
deklaration skapar en instans avLcd2004
för att representera visningen. Flera parametrar skickas till konstruktorn som beskriver de inställningar som ska användas för att kommunicera med GPIO-expanderaren. GPIO-expanderaren skickas som parameter.controller
En
while
loop körs på obestämd tid. Varje iteration:- Rensar skärmen.
- Anger markörens position till den första positionen på den aktuella raden.
- Skriver aktuell tid till visningen vid den aktuella markörens position.
- Itererar den aktuella radräknaren.
- Rymmer 1 000 ms.
Skapa appen. Om du använder .NET CLI kör du
dotnet build
. Om du vill skapa i Visual Studio trycker du på Ctrl+Skift+B.Distribuera appen till SBC som en fristående app. Anvisningar finns i Distribuera .NET-appar till Raspberry Pi. Se till att ge den körbara körningsbehörigheten med hjälp av
chmod +x
.Kör appen på Raspberry Pi genom att växla till distributionskatalogen och köra den körbara filen.
./LcdTutorial
Observera LCD-teckenvisningen när den aktuella tiden visas på varje rad.
Tips
Om skärmen är tänd men du inte ser någon text kan du prova att justera kontrastratten på baksidan av skärmen.
Avsluta programmet genom att trycka på Ctrl+C.
Grattis! Du har visat text på en LCD-skärm med en I2C och en GPIO-expanderare!
Hämta källkoden
Källan för den här självstudien är tillgänglig på GitHub.