Как подключить дисплей HPDL-1414 к Arduino
by
aave
Дисплей HPDL-1414 – это миниатюрный 4-символьный «умный» дисплей. Он имеет встроенную память для хранения набора предустановленных символов, встроенный декодер ASCII-кодов, а также необходимую «обвязку», т.е. готов для подключения прямо к Arduino. Изучим его и научимся управлять с помощью микроконтроллера Arduino.
Для работы нам понадобятся:
- Ардуино UNO (или совместимая плата);
- экран со светодиодами HPDL-1414;
- макетная плата;
- соединительные провода;
- персональный компьютер или ноутбук.
1Описание и подключение«умного» экрана HPDL-1414
Экран HPDL-1414 – это миниатюрный модуль размером 20×17.5 мм и высотой 6 мм без учёта высоты выводов. На экран одновременно можно выводить до 4-х символов. К недостаткам дисплея можно отнести то, что символы, которых нет в ПЗУ дисплея, вывести невозможно, т.е. произвольное управление сегментами дисплея не предусмотрено.

Высота каждого символа – 2.85 мм, ширина – 2.1 мм. Символ состоит из 16-ти сегментов и десятичной точки. Сегменты обозначаются латинскими буквами от A до M.

На боковой грани модуля, на которой расположен вывод 1, располагается маркировка вида HPDL 1414 YYWW Z. Здесь HPDL 1414 – название модуля; YYWW – это год и неделя изготовления, а Z – это категория интенсивности свечения.

Всего имеются 4 категории яркости:
| Обозначение категории яркости | Яркость, мкКд |
|---|---|
| H | 2020…2630 |
| I | 2630…3420 |
| J | 3420…4200 |
| K | 4200…5040 |
В соответствии со сказанным, дата изготовления приведённого на фотографии модуля – 41-я неделя 1999 года, и самая большая яркость свечения (категория K).
Модуль HPDL 1414 имеет 12 «ножек»-выводов. Первая ножка обозначена срезом на верхней продольной выступающей полоске. Назначение выводов следующее:
| Номер вывода | Обозначение | Назначение |
|---|---|---|
| 1 | D5 | Вход данных 5 |
| 2 | D4 | Вход данных 4 |
| 3 | WR# | Запись данных в выбранный разряд |
| 4 | A1 | Выбор разряда экрана 1 |
| 5 | A0 | Выбор разряда экрана 0 |
| 6 | Vdd | Питание, 4.5…5.5 В |
| 7 | GND | Земля |
| 8 | D0 | Вход данных 0 |
| 9 | D1 | Вход данных 1 |
| 10 | D2 | Вход данных 2 |
| 11 | D3 | Вход данных 3 |
| 12 | D6 | Вход данных 6 |
Выводы располагаются на корпусе модуля против часовой стрелки.

Напряжение питания экрана составляет от 4.5 до 5.5 В.
2Принципы работы с экраном HPDL-1414
Дисплей HPDL-1414 имеет встроенную память, в которой записаны 64 символа. Для вывода заданного символа на дисплей прежде всего необходимо с помощью линий адреса A0 и A1 выбрать один из четырёх разрядов экрана. И после этого выставить на линиях данных D0…D6 адрес ячейки памяти нужного символа в соответствии с приведённой таблицей.

Кстати, приведённая таблица представляет собой первые 64 печатных символа из таблицы символов ASCII. ASCII – это таблица, в которой в определённом стандартизированном порядке представлены распространённые печатные (и непечатные) символы.

Например, для вывода на экран HPDL-1414 символа "@" необходимо выставить на линии данных D0..D6 шестнадцатеричное число 0x40. В этом и заключается функциональность ASCII-декодера: он преобразует числовой код символа из таблицы ASCII в символ на экране.
Временная диаграмма передачи данных представлена ниже.

На диаграмме используются следующие обозначения.
| Обозначение | Расшифровка | Назначение | Среднее значение, нс |
|---|---|---|---|
| tAS | Address Setup Time | Время выставления адреса | 115 |
| tWD | Write Delay Time | Задержка записи | 15 |
| tW | Write Time | Время записи | 100 |
| tDS | Data Setup Time | Время установки данных | 60 |
| tDH | Data Hold Time | Время удержания данных | 45 |
| tAH | Address Hold Time | Время удержания адреса | 45 |
Согласно диаграмме, сначала следует выставить разряд символа экрана (от 0 до 3) на линиях A0 и A1, затем опустить строб записи данных WR#, затем выставить адрес символа согласно таблице ASCII на линиях D0..D6, а затем поднять строб WR#.
3Управление экраном HPDL-1414 с помощью Arduino
Теперь у нас есть все необходимые данные для работы с дисплеем 1414. Подключим его к Arduino вот по такой схеме.

И напишем первый скетч, в котором будем явно назначать для каждого разряда символ:
Простейший скетч для работы с экраном HPDL 1414 (разворачивается)
#define AD0 2 // пины установки разряда экрана HPDL 1414
#define AD1 3
#define WR 4 // пин разрешения записи
const int D[]={5,6,7,8,9,10,11}; // номера пинов для D0..D6
void setup() {
// задаём режимы работы выводов Arduino
pinMode(AD0,OUTPUT);
pinMode(AD1,OUTPUT);
pinMode(WR,OUTPUT);
for (int i=0; i<7; i++){ pinMode(D[i],OUTPUT); }
digitalWrite(WR, HIGH); // ставим строб разрешения записи в исходное состояние
// Выводим на экран HP1414 четыре символа:
writeChar(3, 'A'); // переменная типа Char указывается в одинарных кавычках
writeChar(2, 'A');
writeChar(1, 'V');
writeChar(0, 'E');
}
void loop() {
// ничего не делаем
}
// Выводит в заданный разряд экрана заданный символ
void writeChar(int digit, unsigned char chr) {
digitalWrite(AD0, 1 & digit); // выставляем младший разряд адреса
digitalWrite(AD1, 1 & digit>>1); // выставляем старший разряд адреса
digitalWrite(WR, LOW); // разрешаем запись данных
int address = (int)chr; // переменная типа char хранит номер символа в таблице ASCII,
// поэтому достаточно преобразовать его в int
for (int i=0; i<7; i++) {
digitalWrite(D[i], address>>i & 1); // поразрядно выставляем адрес символа на линии данных D0..D6
}
digitalWrite(WR, HIGH); // запрещаем запись данных, символ выводится на экран
}
Получим такой результат:

Тут нужно дать несколько пояснений. В функции writeChar() имеется строка int address = (int)chr, которая преобразует символ типа Char в целое число. Дело в том, что переменные типа Char в Arduino сами по себе хранят численные значения символов согласно таблице ASCII. Поэтому достаточно преобразовать переменную типа Char в Integer, чтобы узнать её адрес в таблице ASCII. Например, символ "A" при преобразовании в Integer будет 65 или 0x41. А это как раз то, что нам и нужно выставить на линиях D0..D6 экрана HPDL 1414.
Далее с помощью операции сдвига >> i мы сдвигаем адрес символа на i разрядов, берём младший разряд сдвинутого числа с помощью операции логического умножения & 1. Таким образом каждый разряд выставляем на соответствующих линиях данных D0..D6.
Операция логическое «И» называется конъюнкция или логическое умножение.
4Вывод бегущей строки на экран HPDL-1414 с помощью Arduino
Теперь немного усложним задачу: будем выводить на экран 1414 бегущую строку. По сути, у нас уже есть всё необходимое для этого. Добавим лишь одну функцию, которая будет разбивать переданную строку на подстроки и выводить их со сдвигом на экран.
Скетч для вывода бегущей строки на экран HPDL 1414 (разворачивается)
void writeString(String s) {
s.toUpperCase(); // т.к. в ПЗУ символы только в верхнем регистре,
// то переводим строку в верхний регистр
int t = 150; // длительность задержки, мс
int position = 0; // текущая позиция в строке
for (int i=0; i<s.length()+4; i++) { // выводим по 4 символа строки
for (int dig=0; dig<4; dig++) { // один символ на один разряд индикатора
writeChar(3-dig, s.charAt(position+dig));
}
position += 1; // смещаемся на 1 позицию в строке
delay(t); // задержка регулирует скорость бегущей строки
}
}
Использовать эту функцию крайне просто:
writeString("hello, soltau.ru!");
Если добавить этот вызов в функцию loop(), то получим бесконечно бегущую строку на экране.
А чтобы строка как бы «выезжала» с правого края дисплея, добавим перед циклом for в предыдущем скетче в функцию writeString() вот что:
// выводим первые 4 символа строки: writeChar(0, s.charAt(0)); delay(t); writeChar(1, s.charAt(0)); writeChar(0, s.charAt(1)); delay(t); writeChar(2, s.charAt(0)); writeChar(1, s.charAt(1)); writeChar(0, s.charAt(2)); delay(t);
Конечно, использовать 7 выводов для управления дисплеем весьма расточительно. Чтобы сэкономить выводы Arduino можно использовать сдвиговый регистр (шифтер). Он преобразует последовательный интерфейс SPI в параллельный, и с его помощью можно сократить число задействованных выводов до 4-х. Ну и ещё 2 вывода для выбора разряда дисплея. Всего будет задействовано 6 выводов вместо текущих 9-ти. Подключение сдвигового регистра 74HC595 мы подробно обсуждали здесь. Можно воспользоваться и другим сдвиговым регистром, на ваше усмотрение.
Скачать вложения:
- Техническое описание дисплея HPDL 1414 (1035 Скачиваний)
Поблагодарить автора:
Поделиться
2 комментарии
-
Алексей 13.02.2021 19:25 КомментироватьЗдравствуйте, с статьи не очень понятно для меня, куда подключать 3-ю ногу (WR) (arduino nano)?
-
aave1 14.02.2021 00:47 КомментироватьАлексей, ногу WR дисплея в данном примере подключаем к выводу D4 Arduino. Но в принципе, можно подключить к любому другому цифровому выводу, главное прописать это в скетче. В строчке "#define WR 4" скетча мы как раз назначаем ноге 4 Arduino функцию управления разрешением записи WR экрана 1414.


