Цена:
Символьный дисплей — самый простой, недорогой, надёжный и доступный способ отображения разнородной информации в любом электронном устройстве со схемой микроконтроллерного управления. Дисплей позволяет выводить информацию в формате произвольных цифро-буквенных сочетаний, визуально воспринимаемую пользователем устройства, о внутрипрограммных событиях или, например, полученную с различных многофункциональных расширений или измерительных датчиков. Символьный дисплей состоит из нескольких 7-сегментных светодиодных разрядов со статической индикацией и, не смотря на простоту своей конструкции, способен кроме цифр показывать ещё и некоторые буквы латинского алфавита, которые вполне пригодятся при создании простых или многоуровневых меню, предполагающих управление или настройку внутренней части устройства. Символьный дисплей достаточно часто используется в проектах для Arduino, STM32, Raspberry Pi или для других, более мощных и совершенных платформ, ориентированных на разработку электронных приложений.
Технические характеристики
Аппаратная часть
Перед тем, как приступать к практическому программированию, совсем неплохо было бы немного разобраться с техническим исполнением аппаратной стороны модуля. Полученные знания помогут понять, как устроено управление дисплеем. Начинка модуля состоит из двух одиночных светодиодных индикаторов SM410501N и двух микросхем 8-битного сдвигового регистра с последовательным входом/последовательным или параллельным выходом 74HC595. Внутри индикатора SM410501N размещены 8 ярких красных светодиодов, первые семь расположены в форме сегментов цифры, последний необходим для отображения децимальной точки. Чтобы управлять таким индикатором и зажигать необходимые светодиоды только одного разряда, при прямом подключении к микроконтроллеру пришлось бы задействовать минимум 8 его контактов (или N*8, если у дисплея несколько разрядов). Сократить количество занимаемых выводов контроллера помогает интегрированный чип 74HC595 с упрощённым 3-проводным интерфейсом, выполняющий функцию расширителя портов.
Микросхема 74HC595 имеет в своём распоряжении 8 свободных программируемых цифровых выводов, к ним подключены все сегменты светодиодного индикатора. А также линию входящих последовательных данных DATA_IN, линию синхронизации CLOCK, линию выходящих последовательных данных DATA_OUT и контакт триггера-защёлки LATCH (см.схему). Формирование символов на экране индикатора происходит по следующем алгоритму. Пользовательское приложение подготавливает набор из логических нулей и единиц, соответствующий отображаемому на экране символу. Один бит данных равен одному передаваемому импульсу. Контроллер посылает низкоуровневый сигнал на вход защелки, приводя сдвиговый регистр в готовность к приёму информации. Затем, используя аппаратную синхронизацию, контроллер передаёт заданную последовательность в микросхему 74HC595. Начиная с первого, биты поочерёдно распределяются по цифровым выводам 7-0 расширителя портов 74HC595 (метод параллельного вывода данных), образуя на его контактах высокоуровневые (HIGH) или низкоуровневые (LOW) импульсы. Окончив трансляцию данных, контроллер устанавливает на входе триггера-защёлки постоянный высокоуровневый сигнал. Следующая порция данных повторяет весь процесс сначала.
Последовательный выход данных первого расширителя портов 74HC595 соединён с второй эквивалентной микросхемой модуля трехсимвольного дисплея методом каскадного подключения, а вторая точно также с третьей. Применённый метод подключения образует схему из 24 доступных портов, и позволяет аналогичным образом управлять вторым и третьим восьмисегментным индикатором. Разница заключается в необходимости трансляции пакета данных из трех байт (24 бит), по одному байту для каждого регистра 74HC595. Механизм обмена данными между регистрами очень прост. В то время, пока защелка открыта, биты данных будут поступать на вход первого регистра, микросхема 74HC595 приступит к считыванию группы из первых восьми бит. Следующий за ними девятый бит, вошедший в первый регистр, сдвинет первый бит информации на вход второго регистра, десятый бит сдвинет второй, одинадцатый бит подвинет третий на выход, и так далее. Данные будут побитово перемещаться от регистра к регистру (как бы "протекать") сквозь них до тех пор, пока не закончится передача или не закроется защёлка.
Модуль трехсимвольного дисплея наделён входом P1 и выходом P2. Ко входу P1 может быть подключен управляющий контроллер, если в разрабатываемом проекте задействован один дисплей. Либо к выходу идентичных модулей с двумя, тремя или четырьмя индикаторами, если таких дисплеев два и более. Выход Р2 — для дополнительно присоединяемых в схему модулей. Все контакты на входе и выходе платы запараллелены с их прямым назначением, за исключением последовательного входа первого регистра SDI и последовательного выхода второго регистра SDO.
Статическая индикация
Секрет статической индикации дисплея заключается в самом наличии нескольких контроллеров 74HC595, расставленных на каждом разряде дисплея. Именно эти микросхемы в отдельности управляют свечением сразу всех 8 светодиодных сегментов одного связанного разряда и выводят на индикатор ту информацию, которая была получена с последним входящим байтом данных. Вне зависимости от того, чем занят внешний управляющий контроллер, данные на дисплее сохраняются до их очередного обновления или простого отключения электроэнергии. Благодаря такому алгоритму работы, внешнему управляющему контроллеру необходимо следить только за уровнем сигнала триггера-защёлки LATCH, открывать и закрывать её при отправке на дисплей новой порции данных.
Примеры программирования в редкаторе Arduino IDE
Матрица SM410501N модуля трехсимвольного дисплея построена на общем аноде. Все плюсовые выводы её светодиодов подключены к положительной линии питания, а катоды разведены по цифровым выводам 74HC595. Таким образом, чтобы зажечь отдельно взятый сегмент, необходимо адресовать для него низкоуровневый сигнал, выраженный в программе логическим нулём. Простыми словами, чтобы заставить один индикатор светится всеми сегментами, нужно переслать один байт информации, состоящий из восьми логических нулей, чтобы погасить все светодиоды — набор из восьми единиц.
Код приведённого примера содержит стандартную программную функцию ShiftOut() из среды программирования Arduino IDE, выполняющую последовательный вывод одного байта информации с использованием двух портов контроллера — сигнал данных и сигнал синхронизации. Благодаря возможностям этой функции, передаваемый байт может быть побитово считан в любом направлении, как слева (MSBFIRST), так и справа (LSBFIRST). От выбранного способа считывания зависит последовательность логических нулей и единиц в представлении отображаемой цифры или символа. Первый бит данных всегда будет принадлежать к вспомогательному сегменту с децимальной точкой. Затем, именно в таком порядке — DP(точка), G, F, E, D, C, B и A, определяются семь бит остальных сегментов индикатора.
//Пример управления трехсимвольным дисплеем
//Пин подключен к SH_CP входу 74HC595
int clockPin = 6;
//Пин подключен к ST_CP входу 74HC595
int latchPin = 7;
//Пин подключен к DS входу 74HC595
int dataPin = 8;
// Битовый массив отображаемых цифр от 0 до 9, минуса, символа градуса цельсия и букв лат.алфавита
byte DigitsArray[33] = {
B11000000, B11111001, B10100100, B10110000, // 0, 1, 2, 3 (0-3)
B10011001, B10010010, B10000010, B11111000, // 4, 5, 6, 7 (4-7)
B10000000, B10010000, B10111111, B10011100, // 8, 9, -, ° (8-11)
B10001000, B11000110, B10000110, B10001110, // A, C, E, F (12-15)
B10001001, B11110001, B11000111, B10001100, // H, J, L, P (16-19)
B11000001, B10010001, B10000011, B10100111, // U, Y, b, c (20-23)
B10100001, B10000100, B10001011, B10101011, // d, e, h, n (24-27)
B10100011, B10000111, B11100011, B11111111, // o, t, u, всеВЫКЛ (28-31)
B00000000 // всеВКЛ
};
// Очищаем все три индикатора
void ClearDisplay(){
DigitShow(31); // разряд сотни
DigitShow(31); // разряд десятка
DigitShow(31); // разряд единицы
delay (5);
}
// Управляем регистром 74CH595, выводим символ на индикатор дисплея
void DigitShow (int NumCharacter) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, DigitsArray[NumCharacter]);
digitalWrite(latchPin, HIGH);
}
void setup() {
//Устанавливаем режим ВЫХОД пинам управления
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
ClearDisplay();
}
void loop() {
// Поочередно считываем цифры и буквы из массива
for (int Count=0; Count < 31; Count++) {
// цифра единичного разряда чила
DigitShow(Count + 2);
// цифра десятичного разряда числа
DigitShow(Count + 1);
// цифра разряда сотых числа
DigitShow(Count);
delay (500);
}
}
Физические размеры дисплея
Документация
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru