Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отображение символов LCD полезно для отображения сведений без необходимости внешнего монитора. Обычные символьные дисплеи LCD могут быть подключены непосредственно к контактам GPIO, но такой подход требует использования до 10 контактов GPIO. Для сценариев, требующих подключения к сочетанию устройств, выделение значительной части заголовка GPIO для символьного дисплея часто оказывается нецелесообразным.
Многие производители продают символьные LCD дисплеи размером 20x4 с интегрированным расширителем GPIO. Отображение символов подключается непосредственно к расширительу GPIO, который затем подключается к Raspberry Pi через последовательный протокол канала Inter-Integrated (I2C).
В этом разделе вы будете использовать .NET для отображения текста на дисплее символов LCD с помощью расширителя I2C GPIO.
Предпосылки
- Компьютер на основе ARM (ARMv7 или более поздней версии) с одной платой (SBC)
- Символьный ЖК-дисплей 20x4 с интерфейсом I2C
- Перемычки
- Хлебная доска (необязательно/рекомендуется)
- Плата расширения для Raspberry Pi GPIO (необязательно/рекомендуется)
- Пакет SDK для .NET 8 или более поздней версии
Примечание.
В этом руководстве предполагается, что целевое устройство — Raspberry Pi. Однако это руководство можно использовать для любого SBC на основе Linux, который поддерживает .NET, например Orange Pi, ODROID и многое другое.
Примечание.
Множество производителей выпускают символьные дисплеи LCD. Большинство конструкций идентичны, и производитель не должен влиять на функциональность. Для справки, это руководство было разработано с использованием SunFounder LCD2004.
Подготовка SBC
Убедитесь, что SBC настроен для поддержки следующих служб:
- SSH
- I2C
Для многих устройств дополнительная конфигурация не требуется. Для Raspberry Pi используйте raspi-config
команду. Подробнее о raspi-config
смотрите в документации Raspberry Pi.
Подготовка оборудования
Используйте провода-перемычки для подключения четырех контактов на расширителе I2C GPIO к Raspberry Pi следующим образом:
- GND на землю
- VCC до 5В
- SDA в SDA (GPIO 2)
- SCL к SCL (GPIO 3)
При необходимости ознакомьтесь со следующими цифрами:
Интерфейс I2C (задняя часть экрана) | Raspberry Pi GPIO |
---|---|
![]() |
![]() Изображение любезно Raspberry Pi Foundation. |
Подсказка
Использование платы вывода GPIO в сочетании с макетной платой рекомендуется, чтобы упростить подключения к заголовку GPIO.
Создание приложения
Выполните следующие действия в предпочтительной среде разработки:
Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его LcdTutorial.
dotnet new console -o LcdTutorial cd LcdTutorial
Добавьте в проект пакет Iot.Device.Bindings . Используйте .NET CLI из каталога проекта или Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*
Замените содержимое файла Program.cs кодом, приведенным ниже.
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); }
В предыдущем коде:
using-директива создает экземпляр
I2cDevice
путем вызоваI2cDevice.Create
и передачи новогоI2cConnectionSettings
с параметрамиbusId
иdeviceAddress
. ЭтоI2cDevice
представляет шину I2C. Объявлениеusing
гарантирует, что объект удаляется, а аппаратные ресурсы освобождаются должным образом.Предупреждение
Адрес устройства для расширителя GPIO зависит от микросхемы, используемой производителем. Расширители GPIO, оснащенные микросхемами PCF8574, используют адрес
0x27
, а те, что с чипами PCF8574A, используют адрес0x3F
. Обратитесь к документации по вашему ЖК-дисплею.Другое
using
объявление создает экземплярPcf8574
и передаетI2cDevice
в конструктор. Этот экземпляр представляет расширитель GPIO.Другое
using
объявление создает экземплярLcd2004
для представления отображения. В конструктор передаются несколько параметров, описывающих параметры для взаимодействия с расширителем GPIO. Расширитель GPIO передается в качествеcontroller
параметра.Цикл
while
выполняется неограниченно. Каждая итерация:- Очищает отображение.
- Устанавливает курсор в первую позицию текущей строки.
- Записывает текущее время на отображение в текущей позиции курсора.
- Выполняет итерацию текущего счетчика строк.
- Спит 1000 мс.
сборка приложения. При использовании .NET CLI выполните команду
dotnet build
. Чтобы создать проект в Visual Studio, нажмите CTRL+SHIFT+B.Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе "Развертывание приложений .NET в Raspberry Pi". Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью
chmod +x
.Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.
./LcdTutorial
Наблюдайте за дисплеем LCD, где текущее время отображается на каждой строке.
Подсказка
Если экран загорается, но не отображается текст, попробуйте настроить контрастный набор на задней части дисплея.
Завершите программу, нажав клавиши CTRL+C.
Поздравляю! Вы отображали текст на дисплее с использованием расширителя I2C и GPIO!
Получение исходного кода
Источник этого руководства доступен на сайте GitHub.