Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 användning av upp till 10 GPIO-stift. 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)
- 20 x 4 LCD-teckenskärm med I2C-gränssnitt
- Bygeltrådar
- Brödskiva (valfritt/rekommenderas)
- Raspberry Pi GPIO breakout board (valfritt/rekommenderas)
- .NET SDK 8 eller senare
Anmärkning
Den här handledningen är skriven med antagandet att målenheten är en Raspberry Pi. Den här handledningen kan dock användas för alla Linux-baserade SBC som stöder .NET, till exempel Orange Pi, ODROID med mera.
Anmärkning
Det finns många tillverkare av LCD-teckenskärmar. De flesta designerna är identiska och tillverkaren bör inte göra någon skillnad för funktionerna. Som referens utvecklades den här handledningen med SunFounder LCD2004.
Förbereda SBC
Kontrollera att din SBC har konfigurerats 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 Raspberry Pi raspi-config
. 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 jord
- VCC till 5V
- SDA till SDA (GPIO 2)
- SCL till SCL (GPIO 3)
Se följande siffror efter behov:
I2C-gränssnitt (baksidan av skärmen) | Raspberry Pi GPIO |
---|---|
![]() |
![]() Bild med tillstånd Raspberry Pi Foundation. |
Tips/Råd
En GPIO-utbrytartavla tillsammans med en brödskiva rekommenderas för att effektivisera anslutningarna till GPIO-huvudet.
Skapa appen
Slutför följande steg i den utvecklingsmiljö du föredrar:
Skapa en ny .NET-konsolapp med hjälp av .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 3.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 din LCD-dokumentation.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-expander skickas somcontroller
-parameter.En
while
loop körs på obestämd tid. Varje iteration:- Rensar visningen.
- Anger markörens position till den första positionen på den aktuella raden.
- Skriver den nuvarande tiden till skärmen vid den nuvarande markörpositionen.
- Itererar den aktuella radräknaren.
- Väntar i 1000 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 filen körningsbehörighet med hjälp av
chmod +x
.Kör appen på Raspberry Pi genom att växla till mappen för distribution och köra den körbara filen.
./LcdTutorial
Observera LCD-teckenvisningen när den aktuella tiden visas på varje rad.
Tips/Råd
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 hjälp av en I2C och en GPIO-expanderare!
Hämta källkoden
Källan för den här handledningen är tillgänglig på GitHub.