Муфты электромонтажные от производителя Fucon

Подключение 4-разрядного светодиодного индикатора по SPI интерфейсу

Семисегментные светодиодные индикаторы очень популярны среди устройств отображения цифровых значений и находят применение в передних панелях микроволновых печей, стиральных машин, цифровых часах, счетчиках, таймерах и др. По сравнению с ЖК индикаторами, сегменты светодиодного индикатора светятся ярко и различимы на большом расстоянии и при широком угле обзора. Для подключения семисегментного 4-разрядного индикатора к микроконтроллеру потребуется, по крайней мере, 12 линий ввода/вывода. Поэтому использовать данные индикаторы с микроконтроллерами с малым количеством выводов, например серии PIC12F от  компании Microchip, практически невозможно. Конечно, можно использовать разные методы мультиплексирования (описание которых можно найти на сайте Радиолоцман в разделе "Схемы"), но и в этом случае имеются определенные ограничения для каждого метода, и зачастую в них используются сложные программные алгоритмы.

Какими будут станции зарядки электромобилей в 2030 году: лучшие решения и мировой опыт для отечественных разработок

Мы рассмотрим метод подключения индикатора по интерфейсу SPI, который потребует всего 3 линии ввода/вывода микроконтроллера. При этом сохранится управление всеми сегментами индикатора.

Модуль 4-разрядного индикатора с управлением по интерфейсу SPI

Для подключения 4-разрядного индикатора к микроконтроллеру по SPI шине используется специализированная микросхема-драйвер MAX7219 производства компании Maxim. Микросхема способна управлять восемью семисегментными индикаторами с общим катодом и имеет в своем составе BCD-декодер, драйверы сегментов, схему мультиплексирования и статическое ОЗУ для хранения значений цифр.

Ток через сегменты индикаторов устанавливается с помощью лишь одного внешнего резистора. Дополнительно микросхема поддерживает управление яркостью индикаторов (16 уровней яркости) посредством встроенного ШИМ.

Рассматриваемая в статье схема – это схема дисплейного модуля с интерфейсом SPI, который может использоваться в радиолюбительских конструкциях. И нас больше интересует не сама схема, а работа с микросхемой по интерфейсу SPI. Питание модуля +5 В подается на вывод Vcc, сигнальные линии MOSI, CLK и CS предназначены для коммуникации мастер-устройства (микроконтроллер) с ведомым (микросхема MAX7219).

Микросхема используется в стандартном включении, из внешних компонентов нужен только резистор, который задает ток через сегменты, защитный диод по питанию и фильтрующий конденсатор по питанию.

Типовая схема включения MAX7219

Данные передаются в микросхему 16-битными пакетами (по два байта), которые помещаются во встроенный 16-битный регистр сдвига по каждому нарастающему фронту сигнала CLK. 16-битный пакет мы обозначим D0-D15, где биты D0-D7 содержат данные, D8-D11 содержат адрес регистра, биты D12-D15 значения не имеют. Бит D15 – старший значащий бит и является первым принимаемым битом. Хотя микросхема способна управлять восемью индикаторами, мы рассмотрим работу только с четырьмя. Управление ими осуществляется на выходах DIG0 – DIG3, расположенных в последовательности справа налево, 4-битные адреса (D8-D11), которые им соответствуют, это 0×01, 0×02, 0×03 и 0×04 (шестнадцатеричный формат). Регистр цифр реализуется на базе встроенного ОЗУ с организацией 8×8 и адресуются непосредственно, так что каждая отдельная цифра на дисплее может обновляться в любое время. В следующей таблице приведены адресуемые цифры и регистры управления микросхемы MAX7219.

Регистр
Адрес
HEX-значение
D15-D12
D11
D10
D9
D8
Нет операции
Х
0
0
0
0
0хХ0
Разряд 0
Х
0
0
0
1
0хХ1
Разряд 1
Х
0
0
1
0
0хХ2
Разряд 2
Х
0
0
1
1
0хХ3
Разряд 3
Х
0
1
0
0
0хХ4
Разряд 4
Х
0
1
0
1
0хХ5
Разряд 5
Х
0
1
1
0
0хХ6
Разряд 6
Х
0
1
1
1
0хХ7
Разряд 7
Х
1
0
0
0
0хХ8
Режим декодирования
Х
1
0
0
1
0хХ9
Яркость
Х
1
0
1
0
0хХA
Количество индикаторов
Х
1
0
1
1
0хХB
Выключение
Х
1
1
0
0
0хХC
Тест индикатора
Х
1
1
1
1
0хХF

Регистры управления

Микросхема MAX1792 имеет 5 регистров управления: режим декодирования (Decode-Mode), управление яркостью индикатора (Intensity), регистр количества подключенных индикаторов (Scan Limit), управление включением и выключением (Shutdown), режим тестирования (Display Test).

Включение и выключение микросхемы

При подаче питания на микросхему все регистры сбрасываются, и она переходит в режим Shutdown (выключение). В этом режиме дисплей отключен. Для перехода в нормальный режим работы необходимо установить бит D0 регистра Shutdown (адрес 0Сh). В любое время этот бит может быть сброшен, чтобы перевести драйвер в выключенное состояние, при это содержимое всех регистров сохраняется неизменным. Этот режим может использоваться для экономии энергии или в режиме сигнализации миганием индикатора (последовательная активация и деактивация режима Shutdown).

Перевод микросхемы в режим Shutdown осуществляется последовательной передачей адреса (0Сh) и данных (00h), а передача 0Ch (адрес) и затем 01h (данные) возвращают в нормальный режим работы.

Режим декодирования

C помощью регистра выбора режима декодирования (адрес 09h) можно использовать BCD code B декодирование (отображаемые символы 0-9, E, H, L, P, -) или же без декодирования для каждой цифры. Каждый бит в регистре соответствует одной цифре, установка логической единицы соответствует включению декодера для данного разряда, установка 0 – декодер исключается. Если используется BCD декодер, то принимается во внимание только младший полубайт данных в регистрах цифр (D3-D0), биты D4-D6 игнорируются, бит D7 не зависит от BCD декодера и отвечает за включение десятичной точки на индикаторе, если D7=1. Например, при последовательной посылке байтов 02h и 05h на индикаторе DIG1 (второй разряд справа) будет отображаться цифра 5. Подобным образом, при посылке 01h и 89h на индикаторе DIG0 будет отображаться цифра 9 с включенной десятичной точкой. В таблице ниже приведен полный список символов, отображаемых при использовании BCD декодера микросхемы.

Символ
Данные в регистрах
Включенные сегменты = 1
D7*
D6-D4
D3
D2
D1
D0
DP*
A
B
C
D
E
F
G
0
 
X
0
0
0
0
 
1
1
1
1
1
1
0
1
 
X
0
0
0
1
 
0
1
1
0
0
0
0
2
 
X
0
0
1
0
 
1
1
0
1
1
0
1
3
 
X
0
0
1
1
 
1
1
1
1
0
0
1
4
 
X
0
1
0
0
 
0
1
1
0
0
1
1
5
 
X
0
1
0
1
 
1
0
1
1
0
1
1
6
 
X
0
1
1
0
 
1
0
1
1
1
1
1
7
 
X
0
1
1
1
 
1
1
1
0
0
0
0
8
 
X
1
0
0
0
 
1
1
1
1
1
1
1
9
 
X
1
0
0
1
 
1
1
1
1
0
1
1
 
X
1
0
1
0
 
0
0
0
0
0
0
1
E
 
X
1
0
1
1
 
1
0
0
1
1
1
1
H
 
X
1
1
0
0
 
0
1
1
0
1
1
1
L
 
X
1
1
0
1
 
0
0
0
1
1
1
0
P
 
X
1
1
1
0
 
1
1
0
0
1
1
1
Пусто
 
X
1
1
1
1
 
0
0
0
0
0
0
0
*Десятичная точка устанавливается битом D7=1

При исключении BCD декодера из работы биты данных D7-D0 соответствуют линиям сегментов (A-G и DP) индикатора.

Управление яркостью индикаторов

Микросхема позволяет программно управлять яркостью индикаторов посредством встроенного ШИМ. Выход ШИМ контролируется младшим полубайтом (D3-D0) регистра Intensity (адрес 0Ah), который позволяет устанавливать один из 16 уровней яркости. При установке всех битов полубайта в 1 выбирается максимальная яркость индикатора.

Количество подключенных индикаторов

В регистре Scan-Limit (адрес 0Bh) устанавливается значение количества разрядов, обслуживаемых микросхемой (1 … 8). Для нашего варианта с 4 разрядами в регистр должно быть записано значение 03h.

Тест индикатора

Регистр, отвечающий за этот режим, находится по адресу 0Fh. Устанавливая бит D0 в регистре, пользователь включает все сегменты индикаторов, при этом содержимое регистров управления и данных не изменяется. Для выключения режима Display-Test бит D0 должен быть равен 0.

Интерфейс с микроконтроллером

Модуль индикатора может быть подключен к любому микроконтроллеру, который имеет три свободные линии ввода/вывода. Если микроконтроллер имеет встроенный аппаратный модуль SPI, то модуль индикатора может подключаться как ведомое устройство на шине. В этом случае сигнальные линии SPI интерфейса SDO (serial data out), SCLK (serial clock) и SS (slave select) микроконтроллера могут быть непосредственно подключены к выводам MOSI, CLK и CS микросхемы MAX7219 (модуля), сигнал CS имеет активный низкий уровень.

В случае если микроконтроллер не имеет аппаратного SPI, то интерфейс можно организовать программно. Общение с микросхемой MAX7219 начинается с установки и удержания низкого уровня на линии CS, после чего последовательно посылаются 16 бит данных (старший значимый бит передается первым) по линии MOSI по нарастающему фронту сигнала CLK. По завершению передачи на линии CS опять устанавливается высокий уровень.

В секции загрузок пользователи могут скачать исходный текст тестовой программы и HEX-файл прошивки, в которой реализуется обычный 4-разрядный счетчик с отображением значений на модуле индикатора с интерфейсом SPI. Используемый микроконтроллер – PIC12F683, интерфейс реализован программно, сигнальные линии CS, MOSI и CLK модуля индикатора подключены к портам GP0, GP1 и GP2, соответственно. Используется компилятор mikroC для PIC микроконтроллеров (mikroElektronika), однако код может быть модифицирован под другие высокоуровневые компиляторы. Микроконтроллер работает на тактовой частоте 4 МГц от встроенного RC осциллятора, выход MCLR отключен.

Счетчик на PIC микроконтроллере: индикатор подключен по интерфейсу SPI

Данный модуль можно подключать и к платформе Arduino. Для работы с ним потребуется библиотека LedControl, доступная для скачивания на сайте Arduino.

Загрузки

Исходный код тестовой программы и HEX-файл для прошивки микроконтроллера – скачать

embedded-lab.com

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Serial four digit 7-segment LED display module

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • ЭТО НЕЧЕСТНО!!! Тему более корректно назвать "подключение светодиодной матрицы с интеллектуальным контроллером по малопроводному интерфейсу". Такую городушку можно и самому соорудить - поставить на индикаторе чего из PIC12-PIC16 с соответствующим протоколом (microLAN, SPI, I2C, rs232 или еще чего самодельного - просто синхронный режим УСАПП). Сейчас разных семейств МК развелось в достаточном количестве - пора переходить к работе со схемами составленными из нескольких МК, каждый из которых выполняет свою задачу, а не стараться грузить все "на одну голгву".
  • Это для буржуинов окаяных статейка! Больно уж дорого стОят чипы от Maxim. Есть куда более простое решение - последовательно-параллльные сдвиговые регистры. Правда, проводов больше потребуется - общие выводы индикаторов переключать. Или, как верно заметил коллега, использовать два МК. Это всё равно дешевле, чем Максовские чипы... З.Ы. Можно, правда, изваять универсальную схему на двух регистрах. Тогда можно обойтись четырьмя проводами: такт, данные, запись и знак/место. Количество знакомест будет ограничено лишь разрядностью регистров.
  • Сам начинал со сдвиговых регистров. Но потом отказался. Причина проста. Необходимо значительное время процессора для индикации. Для простых программ пойдёт. По мере роста объёма ПО падает яркость. Ток индикатора тоже нельзя увеличивать до величин превосходящих постоянный ток сегмента. Программа может и повиснуть. Отдельный процессор тоже не выход.Резисторы процессор и размеры платы и обвязка будут стоить 2/3 стоимости MAX7219 на плате. Имею ввиду 8 разрядную индикцию. Неоднократно выходил с Терраэлектроники с кучкой чего-то зажатой в руке. И за что отдал 6000-10000 деревянных? И когда потом сдаёшь заказчику устройство , вспоминаешь и думаешь от скольки проблем меня это спасло.И они стоят того. Со временем вы поменяете точку зрения.
  • Позвольте не согласиться ;) Минимальный комплект для индикатора 4 позиции * 8 сегментов : pic16f628a или attiny2313 (кушает значительно больше) в режиме "растрового" сканирования, яркость правда не слишком велика, зато деталей минимум. В большинстве решений с достаточно значительным током сегментов и повышенным (+11 - +27 Вольт нестабилизированное постоянное) напряжением проблему создают только "верхние" ключи (независимо, что кормим с +U - сегмент или анод матрицы индикатора). Cтандартный набор : pic16f628a/attiny2313/, pic16f676 uln2803 tpic6b595 ( hc595hc595 + uln2803 ) и наборчик npn транзисторов (по схеме эмиттерного поворителя) в качестве "верхних" ключей в качестве активных источников тока стандартное решение на LM317L (LM317T). При известном и стабильном уровне напряжения, питающего аноды рассчет базовых резисторов верхних ключей достаточно прост. Некоторые проблемы возникают при питании повышенным нестабилизированным постоянным напряжением...:mad: Возможно решение при помощи специализированных микросхем - но те достаточно дорогое удовольствие, по сему была придумана "обманка", быстродействия которой вполне достаточно, а детали весьма народные - комплект из нескольких резисторов, 4N33 и мощного n-p-n транзистора (см. схему по ссылке [url]http://radiokot.ru/forum/download/file.php?id=93485[/url] ):)
  • В каких-то случаях сдвиговые регистры и оправданы. Ну не берусь я за копеечные конструкции. Если например делаю электронный теодолит за 80 . То четырёх строчный LCD за 1т.р. надо покупать. Просто жалко тратить время на индикацию. Ключи паять, Растрачивать время процессора-оно самое дорогое. Да и заказчик обычно привередливый. Яркость должна быть нормальной. Да вы забыли посчитать стоимость набора деталей и не забудьте туда включить разницу в стоимости печатной платы(она будет больше) и время монтажа. И ещё об одном. Тут специфика работы. К примеру повис PIC. Есть возможность понять причину. Последние данные до сбоя вы можете увидеть. Вот и недавний пример 3 месяца очень редкий и непонятный сбой в программе. Не знал где и искать. Тут ещё и пальцы отдавило работнику конкретно. И когда увидел последние данные перед сбоем - понял причину.
  • Разница между профессиональным оборудованием и любительскими самоделками всегда была, есть и будет - "по крутому" разработанную схему сдал китаям, а те вообще на "капельке" ее соорудят:) Сетодиодный примитив - не конкурент моноблоку на ЖКИ (правда за редкими исключениями). А вот за примером типового применения МК в сьёмных индикаторах далеко ходить не потребуется - стоит обратить внимание на решение у так называемых фискальных регистраторов (дисплей клиента) - там у одного аппарата может применяться любой вариант (люминесцентный/ЖКИ/светодиодный) - лиш бы протокол связи поддерживался и клиенту нравился (готов денюжку на то выложить)... Чего касательно закладки в разработку по принципу "клиент может заплатить больше"... дык тот, у кого много денежки готовенькое у фирмачей покупает, а к самодельщику обращаются либо "по нищете", либо полные жлобы, умеющие найти любой повод для последующего кидалова...:mad: Для себя самого сгодится то, что в данный момент доступно (и не всегда самое свеженькое - ramtronовских часиков я уже лет 12 никак не увижу в продаже :)). Кроме всего прочего - практически ведь болшинство "специализированных" БИС создаются на базе тех же МК с масочной программой. ;)
Полный вариант обсуждения »