Вывод различной информации на ЖК-дисплей 16×2 с Arduino (обучение работе с Proteus)
В данной статье рассматривается практический пример вывода информации на ЖК-дисплей 16×2 с использованием Arduino.
Проект создан специально для обучения работе с симулятором Proteus и демонстрирует принципы построения текстового интерфейса без использования кнопок и датчиков.
Скетч реализует автоматический вывод различной информации на экран: статус работы Arduino, время работы системы, простую визуальную индикацию активности и текстовую информационную строку. Все эффекты выполняются программно и хорошо подходят для изучения в среде Proteus.
Назначение проекта
Цель проекта — показать, как можно организовать структурированный вывод информации на стандартном ЖК-дисплее 16×2, используя только программную логику Arduino.
- поочерёдный вывод разных экранов с информацией;
- использование функции millis() вместо delay;
- отображение времени работы микроконтроллера;
- создание пользовательских символов;
- реализация простой визуальной индикации.
Подобный принцип вывода информации применяется в индикаторах состояния, контроллерах, учебных стендах и простых встроенных устройствах.
Используемые компоненты
- Arduino UNO;
- ЖК-дисплей 16×2 (HD44780-совместимый);
- Proteus 8 или 9 с поддержкой Arduino.
Принцип вывода информации
Программа выводит информацию на дисплей в виде нескольких логических экранов. Каждый экран отображает свой тип данных, а переключение между ними происходит автоматически раз в одну секунду с использованием функции millis().
- текущий статус работы Arduino;
- время работы системы в секундах;
- визуальный индикатор активности;
- информационную текстовую строку.
Перед выводом новых данных используется функция lcd.clear(), что обеспечивает корректное обновление экрана и предотвращает наложение текста.
Пользовательский символ и визуальная индикация
В скетче применяется функция lcd.createChar() для создания пользовательского символа — заполненного блока. Он используется для формирования простой визуальной индикации процесса.
Количество выводимых блоков зависит от значения счётчика времени,что позволяет наглядно показать активность работы программы. Такой приём часто используется в индикаторах выполнения и меню устройств.
Arduino-скетч
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
unsigned long lastUpdate = 0;
int screen = 0;
int seconds = 0;
// символ анимации
byte bar[8] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, bar);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Arduino System");
lcd.setCursor(0, 1);
lcd.print("Starting...");
delay(2000);
lcd.clear();
}
void loop() {
if (millis() - lastUpdate > 1000) {
lastUpdate = millis();
seconds++;
screen++;
if (screen > 3) screen = 0;
lcd.clear();
}
switch (screen) {
case 0:
lcd.setCursor(0, 0);
lcd.print("Status:");
lcd.setCursor(0, 1);
lcd.print("RUNNING");
break;
case 1:
lcd.setCursor(0, 0);
lcd.print("Uptime:");
lcd.setCursor(0, 1);
lcd.print(seconds);
lcd.print(" sec");
break;
case 2:
lcd.setCursor(0, 0);
lcd.print("Processing");
lcd.setCursor(0, 1);
for (int i = 0; i < (seconds % 16); i++) {
lcd.write(byte(0));
}
break;
case 3:
lcd.setCursor(0, 0);
lcd.print("Website:");
lcd.setCursor(0, 1);
lcd.print("Arduino-Kid.ru");
break;
}
}
Работа проекта в Proteus
В симуляции Proteus ЖК-дисплей последовательно отображает все экраны, демонстрируя логику работы интерфейса. Переключение происходит автоматически, без использования кнопок или внешних сигналов.
Arduino к компьютеру подключать не требуется — вся работа выполняется внутри симулятора.
Запуск проекта в Proteus
- распакуйте архив с проектом;
- откройте файл .pdsprj;
- проверьте путь к файлу .hex в свойствах Arduino;
- нажмите Run Simulation;
- смотрите автоматическое переключение экранов на ЖК-дисплее.
Если что-то не работает
Если возникают сложности с запуском проекта, рекомендуется сначала изучить базовые принципы работы с LCD.
Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода