Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyświetlacze lcd są przydatne do wyświetlania informacji bez konieczności korzystania z monitora zewnętrznego. Typowe wyświetlacze LCD można podłączyć bezpośrednio do wyprowadzeń GPIO, ale takie podejście wymaga użycia maksymalnie 10 wyprowadzeń GPIO. W przypadku scenariuszy, które wymagają łączenia różnych urządzeń, poświęcanie tak dużej części nagłówka GPIO na wyświetlacz znakowy jest często niepraktyczne.
Wielu producentów sprzedaje 20x4 wyświetlacze znakowe LCD ze zintegrowanym ekspanderem GPIO. Wyświetlacz znaków łączy się bezpośrednio z ekspanderem GPIO, który następnie łączy się z Raspberry Pi za pośrednictwem protokołu szeregowego Inter-Integrated Circuit (I2C).
W tym temacie użyjesz platformy .NET do wyświetlania tekstu na wyświetlaczu znaków LCD przy użyciu rozszerzenia GPIO I2C.
Wymagania wstępne
- Komputer z jedną płytą (ARMv7 lub nowszy) oparty na architekturze ARM (SBC)
- Wyświetlacz 20x4 znakowy LCD z interfejsem I2C
- Przewody skoczkowe
- Płytka prototypowa (opcjonalna/zalecana)
- Płytka rozdzielcza GPIO do Raspberry Pi (opcjonalnie/zalecane)
- .NET SDK 8 lub nowszy
Uwaga
Ten samouczek został napisany przy założeniu, że docelowe urządzenie to Raspberry Pi. Jednak ten samouczek może być używany dla dowolnego systemu Linux opartego na protokole SBC, który obsługuje platformę .NET, taką jak Orange Pi, ODROID i nie tylko.
Uwaga
Istnieje wiele producentów wyświetlaczy znakowych LCD. Większość projektów jest identyczna, a producent nie powinien mieć żadnej różnicy w funkcjonalności. Dla odniesienia, ten samouczek został opracowany przy użyciu SunFounder LCD2004.
Przygotowywanie SBC
Upewnij się, że protokół SBC jest skonfigurowany do obsługi następujących usług:
- Protokół SSH
- I2C
W przypadku wielu urządzeń nie jest wymagana żadna dodatkowa konfiguracja. W przypadku urządzenia Raspberry Pi użyj polecenia raspi-config
. Aby uzyskać więcej informacji na temat raspi-config
, zapoznaj się z dokumentacją Raspberry Pi.
Przygotowywanie sprzętu
Użyj przewodów zworkowych, aby podłączyć cztery piny na ekspanderze GPIO I2C do Raspberry Pi w następujący sposób:
- GND na ziemię
- VCC na 5V
- SDA do SDA (GPIO 2)
- SCL do SCL (GPIO 3)
W razie potrzeby zapoznaj się z następującymi ilustracjami:
Interfejs I2C (z tyłu ekranu) | Raspberry Pi GPIO |
---|---|
![]() |
![]() Obraz dzięki uprzejmości Raspberry Pi Foundation. |
Wskazówka
Zaleca się użycie płytki rozszerzeń GPIO w połączeniu z płytką stykową, aby usprawnić połączenia z nagłówkiem GPIO.
Tworzenie aplikacji
Wykonaj następujące kroki w preferowanym środowisku projektowym:
Utwórz nową aplikację konsolową platformy .NET przy użyciu interfejsu wiersza polecenia platformy .NET lub programu Visual Studio. Nadaj jej nazwę LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Dodaj pakiet Iot.Device.Bindings do projektu. Użyj .NET CLI z katalogu projektu lub programu Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*
Zastąp zawartość pliku Program.cs następującym kodem:
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); }
W poprzednim kodzie:
Deklaracja using tworzy wystąpienie
I2cDevice
przez wywołanieI2cDevice.Create
i przekazując nowyI2cConnectionSettings
z parametramibusId
ideviceAddress
. ToI2cDevice
reprezentuje magistralę I2C. Deklaracjausing
gwarantuje, że obiekt zostanie usunięty, a zasoby sprzętowe zostaną prawidłowo zwolnione.Ostrzeżenie
Adres urządzenia dla ekspandera GPIO zależy od mikroukładu używanego przez producenta. Rozszerzenia GPIO wyposażone w PCF8574 używają adresu
0x27
, podczas gdy te korzystające z układów PCF8574A używają adresu0x3F
. Zapoznaj się z dokumentacją wyświetlacza LCD.Inna
using
deklaracja tworzy wystąpieniePcf8574
i przekazujeI2cDevice
do konstruktora. Ta instancja reprezentuje rozszerzenie GPIO.Inna
using
deklaracja tworzy wystąpienieLcd2004
do reprezentowania ekranu. Kilka parametrów jest przekazywanych do konstruktora opisującego ustawienia używane do komunikowania się z ekspanderem GPIO. Rozszerzenie GPIO jest przekazywane jakocontroller
parametr .Pętla
while
jest uruchamiana w nieskończoność. Każda iteracja:- Czyści ekran.
- Ustawia położenie kursora na pierwszą pozycję w bieżącym wierszu.
- Zapisuje bieżący czas na wyświetlaczu w bieżącym położeniu kursora.
- Iteruje licznik aktualnej linii.
- Śpi 1000 ms.
Kompilowanie aplikacji. Jeśli używasz interfejsu wiersza polecenia platformy .NET, uruchom polecenie
dotnet build
. Aby skompilować w programie Visual Studio, naciśnij Ctrl+Shift+B.Wdróż aplikację w SBC jako samodzielną aplikację. Aby uzyskać instrukcje, zobacz Wdrażanie aplikacji .NET na urządzeniach Raspberry Pi. Upewnij się, że nadajesz plikowi wykonywalnemu uprawnienia do wykonywania używając
chmod +x
.Uruchom aplikację na urządzeniu Raspberry Pi, przełączając się do katalogu wdrożenia i uruchamiając plik wykonywalny.
./LcdTutorial
Obserwuj ekran LCD, na którym aktualny czas jest wyświetlany na każdej linii.
Wskazówka
Jeśli ekran jest oświetlony, ale nie widzisz żadnego tekstu, spróbuj dostosować pokrętło kontrastu z tyłu ekranu.
Zakończ program, naciskając Ctrl+C.
Gratulacje! Wyświetliłeś tekst na wyświetlaczu LCD przy użyciu I2C i ekspandera GPIO!
Pobieranie kodu źródłowego
Źródło tego samouczka jest dostępne w witrynie GitHub.