Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отображение символов LCD полезно для отображения сведений без необходимости внешнего монитора. Обычные символьные дисплеи LCD могут быть подключены непосредственно к контактам GPIO, но такой подход требует использования до 10 контактов GPIO. Для сценариев, требующих подключения к сочетанию устройств, выделение значительной части заголовка GPIO для символьного дисплея часто оказывается нецелесообразным.
Многие производители продают символьные LCD дисплеи размером 20x4 с интегрированным расширителем GPIO. Дисплей символов подключается непосредственно к расширителю GPIO, который затем подключается к Raspberry Pi через последовательный протокол Inter-Integrated Circuit (I2C).
В этом разделе вы будете использовать .NET для отображения текста на символьном LCD дисплее с помощью расширителя I2C GPIO.
Предпосылки
- Компьютер на основе ARM (ARMv7 или более поздней версии) с одной платой (SBC)
- Символьный дисплей 20x4 с интерфейсом I2C
- Перемычки
- Хлебная доска (необязательно/рекомендуется)
- Плата расширения для Raspberry Pi GPIO (необязательно/рекомендуется)
- SDK-пакет .NET версии 10 или более поздней
Примечание.
В этом руководстве предполагается, что целевое устройство — Raspberry Pi. Однако это руководство можно использовать для любого SBC на основе Linux, который поддерживает .NET, например Orange Pi, ODROID и многое другое.
Примечание.
Множество производителей выпускают символьные дисплеи LCD. Большинство конструкций идентичны, и производитель не должен влиять на функциональность. Для справки, это руководство было разработано с помощью SunFounder LCD2004.
Подготовка SBC
Убедитесь, что SBC настроен для поддержки следующих служб:
- SSH
- I2C
Для многих устройств дополнительная конфигурация не требуется. Для Raspberry Pi используйте 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 package add Iot.Device.Bindings --version 4.1.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(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 выполните
dotnet build. Чтобы создать Visual Studio, нажмите клавиши Ctrl+Shift+B.Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе Deploy .NET приложения в Raspberry Pi. Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью
chmod +x.Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.
./LcdTutorialНаблюдайте за дисплеем LCD, где текущее время отображается на каждой строке.
Подсказка
Если экран загорается, но не отображается текст, попробуйте настроить контрастный набор на задней части дисплея.
Завершите программу, нажав клавиши CTRL+C.
Поздравляю! Вы отобразили текст на дисплее, используя I2C и GPIO экспандер!
Получение исходного кода
Исходный код этого руководства доступен на GitHub.