MAX 7219. Управление светодиодными индикаторами. Часть 1 (теория).

72197segМикросхема MAX 7219 служит для управления до 8-ми семисегментных светодиодных индикаторов или матрицей светодиодов размерностью 8х8. Её можно применять как в виде единичного драйвера, так и в составе каскада аналогичных микросхем, управляя большим количеством светодиодов
(чаще всего такая схема применяется в управлении несколькими матрицами 8х8).

Соответственно, наболее часто мы можем видеть данную микросхему в составе готовых модулей. Таких какие представлены на рисунках. Кстати, на этих же рисунках прекрасно видно, что для управления всеми сегментами индикатора или точками матрицы используются всего три контакта DIN (вход данных или Data in), CLK (вход тактирования или Clock), CS (выбор чипа или Chip Select, иногда его еще называют Load).

Передача данных осуществляется крайне просто: на вход CS подаем логический «ноль», а далее побитово, начиная со старшего разряда, последовательно выгружаем два байта. Берем старший разряд байта, выводим его на вход DIN, далее выводим «1» на CLK, а потом «0» на CLK. Берем следующий разряд и делаем тоже самое и так всего 16 раз. Для наглядности я скопирую картинку из datasheet’a:

7219time

А теперь давайте подробней разберем, что же именно за байты необходимо записывать в MAX 7219. Дело в том, что управление микросхемой, а соответственно и светодиодами, осуществляется простой записью однобайтовых значений в определенные внутренние регистры. Стало быть, первый байт — это адрес регистра. А второй байт это значение. Ни больше, ни меньше. Всё предельно просто, господа. Ну, а теперь снова обратимся к datasheet‘y. Посмотрим, что он там нам про регистры говорит.

регистры

А говорит он, как мы видим, следующее: по адресам с 0x01 по 0x08 (Digit 0 — Digit 7)располагаются регистры, где собственно и хранятся данные. Состояние каждого из светодиодов кодируется битом, а так как битов всего 64 (8 бит по 8 байт), то и максимальное количество адресуемых (отображаемых) точек, тоже 64. Или, как мы говорили ранее, матрица 8х8 или, 8 семисегментных индикаторов с десятичными точками. Меньше можно, но больше нельзя, если, конечно, не использовать еще такую же микросхему, включенную каскадом с данной. Принудительно можно отключать отображение информации части регистров с Digit 0 по Digit 7, для этого используется регистр по адресу 0x0B (Scan Limit). Записывая в него число 0, мы разрешаем отображение только из регистра Digit 0, записывая 1, разрешаем отображение из двух регистров Digit 0, Digit 1, и так далее. Соответственно, если мы хотим, чтобы информация оторажалась из всех регистров, в 0x0B нужно записать 7.

Далее: в регистре 0x0А (Intensity) находится значение яркости всего дисплея, от 0 до 15. В регистре 0x0F (Display Test) может храниться 1, включая режим тестирования дисплея (тогда все присоединенные светодиоды загораются на максимальной яркости), или 0, что соответствует нормальному режиму, в котором можно управлять свечением каждого светодиода. В регистре 0x0С (Shutdown), для нормальной работы, должна быть записана 1, если в данном регистре — 0, то дисплей выключен.

И последний настроечный регистр 0x09 (Decode Mode), он управляет режимом отображения. Дело в том, что в нашей микросхеме содержится, кроме всего прочего, еще и дешифратор семисегментного кода. Если в данном регистре записан 0, то дешифратор выключен, ничего хитрого не происходит, каждый бит в регистрах Digit 0 — Digit 7 отвечает за свой светодиод. Но если режим включен, то дешифратор отбрасывает значения страших четырех битов в регистрах Digit 0 — Digit 7 и преобразует значения четырех младших битов непосредственно в цифры от «0» до «9», а также в какие-то неясно зачем придуманные буквы и символы «-«, «Е», «Н», «L»,»P», » «. Иначе говоря, если в одном из регистров Digit 0 — Digit 7 записано 7, то на семисегментный индикатор будет выводиться «7», если 9, то «9», ну а если 10, то «-«, а случае, прости господи, 14, будет выводиться буква «Р».

Режимы дешифровки такие: если 0x00 — дешифратор выключен вообще. Если 0x01 — дешифратор включен только для Digit 0. Если 0x0F, то дешифратор включен только для Digit 0 — Digit 3. Если 0xFF, то дешифратор включен для всех регистров Digit 0 — Digit 7.

Ну вот и всё, мы разобрали все регистры, кроме одного — 0х00. Данный регистр нужен при каскадировании микросхем MAX 7219. Если мы посылаем в качестве адреса 0х00, то управление передается следующей в каскаде микросхеме. Это нужно, для того, чтобы управлять неограниченным числом индикаторов всего по трём проводам.

Завершаем теоретическую часть. В следующих статьях поговорим о подключении модулей на основе MAX 7219 к Arduino и «голому» микроконтроллеру AVR (Atmega или Attiny).

Ссылки:

Datasheet — https://yadi.sk/i/cjDKD81HsThv6

Метки , , , , , , , , , , , , , , , , , , , , , , , , , , . Закладка постоянная ссылка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *