Поделиться через


Отображение текста на lcd-дисплее

Отображение символов LCD полезно для отображения сведений без необходимости внешнего монитора. Обычные символьные дисплеи LCD могут быть подключены непосредственно к контактам GPIO, но такой подход требует использования до 10 контактов GPIO. Для сценариев, требующих подключения к сочетанию устройств, выделение значительной части заголовка GPIO для символьного дисплея часто оказывается нецелесообразным.

Многие производители продают символьные LCD дисплеи размером 20x4 с интегрированным расширителем GPIO. Отображение символов подключается непосредственно к расширительу GPIO, который затем подключается к Raspberry Pi через последовательный протокол канала Inter-Integrated (I2C).

В этом разделе вы будете использовать .NET для отображения текста на дисплее символов LCD с помощью расширителя I2C GPIO.

Предпосылки

Примечание.

В этом руководстве предполагается, что целевое устройство — 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
Изображение тыльной стороны дисплея символов с I2C GPIO расширителем. Схема, показывающая распиновку заголовка GPIO Raspberry Pi. Изображение предоставлено Raspberry Pi Foundation.
Изображение любезно Raspberry Pi Foundation.

Подсказка

Использование платы вывода GPIO в сочетании с макетной платой рекомендуется, чтобы упростить подключения к заголовку GPIO.

Создание приложения

Выполните следующие действия в предпочтительной среде разработки:

  1. Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его LcdTutorial.

    dotnet new console -o LcdTutorial
    cd LcdTutorial
    
  2. Добавьте в проект пакет Iot.Device.Bindings . Используйте .NET CLI из каталога проекта или Visual Studio.

    dotnet add package Iot.Device.Bindings --version 3.2.0-*
    
  3. Замените содержимое файла 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 выполняется неограниченно. Каждая итерация:

      1. Очищает отображение.
      2. Устанавливает курсор в первую позицию текущей строки.
      3. Записывает текущее время на отображение в текущей позиции курсора.
      4. Выполняет итерацию текущего счетчика строк.
      5. Спит 1000 мс.
  4. сборка приложения. При использовании .NET CLI выполните команду dotnet build. Чтобы создать проект в Visual Studio, нажмите CTRL+SHIFT+B.

  5. Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе "Развертывание приложений .NET в Raspberry Pi". Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью chmod +x.

  6. Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.

    ./LcdTutorial
    

    Наблюдайте за дисплеем LCD, где текущее время отображается на каждой строке.

    Подсказка

    Если экран загорается, но не отображается текст, попробуйте настроить контрастный набор на задней части дисплея.

  7. Завершите программу, нажав клавиши CTRL+C.

Поздравляю! Вы отображали текст на дисплее с использованием расширителя I2C и GPIO!

Получение исходного кода

Источник этого руководства доступен на сайте GitHub.

Дальнейшие действия