Текстовый экран 8×2

Текстовый экран 8×2 пригодится для вывода показаний датчиков, отображения простых меню, подсказок и приветствий.

Подключение и настройка

Дисплей MT-08S2A предназначен для вывода текста на латинице и кириллице.

Экран имеет 14 контактов для подведения питания и взаимодействия с управляющей электроникой.

Вывод Обозначение Описание
1 GNDОбщий вывод (0 В)
2 VccНапряжение питания (5 В/3,3 В)
3 VoУправление контрастностью
4 RSВыбор регистра
5 R/WВыбор режима записи или чтения
6 EРазрешение обращений к индикатору (а также строб данных)
7 DB0Шина данных (8-ми битный режим)(младший бит в 8-ми битном режиме)
8 DB1Шина данных (8-ми битный режим)
9 DB2Шина данных (8-ми битный режим)
10 DB3Шина данных (8-ми и 4-х битные режимы)(младший бит в 4-х битном режиме)
11 DB4Шина данных (8-ми и 4-х битные режимы)
12 DB5Шина данных (8-ми и 4-х битные режимы)
13 DB6Шина данных (8-ми и 4-х битные режимы)
14 DB7Шина данных (8-ми и 4-х битные режимы)

Дисплей может работать в двух режимах:

  • 8-битный режим — в нём используются и младшие и старшие биты (DB0-DB7)
  • 4-битный режим — в нём используются только младшие биты (DB4-DB7)

Использовать восьмибитный режим не целесообразно. Для его работы требуется на 4 дополнительные ноги, а выигрыша по скорости практически нет.

Подключение дисплея к управляющей плате

В качестве примера подключим дисплей к управляющей плате Iskra Neo.

Вывод Обозначение Пин Iskra Neo
1 GND GND
2 Vcc 5V
3 Vo GND
4 RS 12
5 R/W GND
6 E 11
7 DB0
8 DB1
9 DB2
10 DB3
11 DB4 5
12 DB5 4
13 DB6 3
14 DB7 2

Примеры работы

Для упрощения работы с LCD-дисплеем используйте встроенную библиотеку Liquid Crystal. В ней вы найдёте примеры кода с подробными комментариями.

Библиотека подходит как для работы с контроллерами на AVR-платформе, так и с ARM-контроллерами.

Вывод текста

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

Hello.ino
// подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup()
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(8, 2);
    // печатаем первую строку
    lcd.print("Hello,");
    // устанавливаем курсор в колонку 0, строку 1
    // на самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(0, 1);
    // печатаем вторую строку
    lcd.print("world!");
}
 
void loop()
{
}

Кириллица

Информация в этом разделе относится именно к дисплеям от МЭЛТ. Китайские и европейские аналоги часто не имеют в своём наборе кириллических символов. Обратитесь к документации на дисплей, чтобы узнать об этом подробнее.

Вывод русских букв не совсем тривиален: не получится просто написать lcd.print("Вася"). Это связано с таблицами кодировок. Каждому символу соответствует код и при компиляции программы, если строка содержит кириллицу, она будет сконвертирована в коды по таблице utf-8, cp-1251 или какой-то другой — в зависимости от настроек компилятора. Контроллер экран ожидает данные в собственной, заранее определённой, кодировке.

Так букве «Я» соответствует код B1 в шестнадцатеричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

lcd.print("\xB1ndex");

Вы можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x, он считывает за ним все символы, которые могут являться разрядами шестнадцатеричной системы даже если их больше двух. Из-за этого нельзя использовать символы из диапазона 0-9, a-f следом за двузначным кодом символа: это вызовет ошибку компиляции. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются. Так, если вы хотите написать «Яeee»:

lcd.print("\xB1eee"); // ошибка
lcd.print("\xB1""eee"); // правильно

Например, чтобы написать «Привет, мир!», использовался код:

cyrillic.ino
// подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup()
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(8, 2);
    // печатаем первую строку
    lcd.print("\xA8p\xB8\xB3""e\xBF,");
    // устанавливаем курсор в колонку 0, строку 1
    // на самом деле это вторая строка, т.к. нумерация начинается с нуля
    lcd.setCursor(0, 1);
    // печатаем вторую строку
    lcd.print("\xBC\xB8p!");
}
 
void loop()
{
}

Переключение страниц знакогенератора

Дисплейный модуль хранит в памяти две страницы знакогенератора. По умолчанию установлена нулевая страница. Для переключения страницы используйте метод command(0x101010), а обратно — command(0x101000).

Дисплей не может одновременно отображать символы разных страниц.

Рассмотрим пример, в котором одна и та же строка будет отображаться по-разному — в зависимости от выбранной страницы.

change_page.ino
// Подключаем стандартную библиотеку LiquidCrystal
#include <LiquidCrystal.h>
 
// Инициализируем объект-экран, передаём использованные 
// для подключения контакты на Arduino в порядке:
// RS, E, DB4, DB5, DB6, DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() 
{
    // устанавливаем размер (количество столбцов и строк) экрана
    lcd.begin(8, 2);
}
 
void loop() 
{
    // устанавливаем 0 станицу знакогенератора (стоит по умолчанию) 
    lcd.command(0b101000);
    // печатаем первую строку
    lcd.print("\x9b\x9c\x9d\x9e\x9f");
    // ждём 1 секунду
    delay(1000);
    // устанавливаем 1 станицу знакогенератора
    lcd.command(0b101010);
    // ждём 1 секунду
    delay(1000);
    // очищаем дисплей
    lcd.clear();
}

Полную таблицу символов с кодами можно найти в документации к экрану.

Включение подсветки

Фоновая подсветка дисплея — это отдельный контур, не связанный с остальным. Для включения подсветки необходимо выполнить следующие действия:

  1. Установить перемычку на элемент J2 на плате, что обеспечит подачу питания на анод подсветки через резистор.
  2. Установить перемычку на элемент J3 на плате, что обеспечит подачу земли на катод подсветки.

Для создания перемычки достаточно капнуть припой на контактную площадку.

Характеристики

  • Напряжение питания: 5 В
  • Максимальный ток потребления: 0,8 мА
  • Потребляемый ток подсветки: 30 мА
  • Габариты: 58×32×12,9 мм

Ресурсы