MAX 7219

Микросхема MAX 7219 служит для управления до 8-ми семисегментных светодиодных индикаторов или матрицей светодиодов размерностью 8х8. Для управления всеми сегментами индикатора или точками матрицы используются всего три контакта:

Передача данных осуществляется по такому алгоритму:

  1. Установить низкий уровень на линии  LOAD (CS0)
  2. Установить первый бит данных
  3. Установить высокий уровень на линии CLK
  4. Выждать необходимое время, за которое микросхема считает данные
  5. Установить низкий уровень на линии CLK
  6. Пункты 2-5 повторить для оставшихся 15-и битов
  7. Установить высокий уровень на линии LOAD  (CS1)

void spi_out(uint8_t data){
  CS0;
  for (uint8_t mask = 0x80; mask; mask >>= 1){
    if (data & mask) DATA1;
    else DATA0;
    SCK1;
    SCK0;
  }
  CS1;
}

Первый байт - адрес регистра. А второй байт это значение. Регистры:

Адрес Регистр Назначение
0х00 No-Op регистр нужен при каскадировании микросхем MAX 7219. Если мы посылаем в качестве адреса 0х00, то управление передается следующей в каскаде микросхеме.
0х01 Digit 0 Данные для 0-го индикатора
0х02 Digit 1 Данные для 1-го индикатора
0х03 Digit 2 Данные для 2-го индикатора
0х04 Digit 3 Данные для 3-го индикатора
0х05 Digit 4 Данные для 4-го индикатора
0х06 Digit 5 Данные для 5-го индикатора
0х07 Digit 6 Данные для 6-го индикатора
0х08 Digit 7 Данные для 7-го индикатора
0х09 Decode Mode Регистр управления отображением с помощью встроенного дешифратора семисегментного кода. Дешифратор отбрасывает значения старших четырех битов в регистрах Digit 0 — Digit 7 и преобразует значения четырех младших битов непосредственно в цифры от «0» до «9», и символы «-», «Е», «Н», «L», «P». Т.е., если в одном из регистров Digit 0 — Digit 7 записать 5, то на индикатор выведется «5», если 9, то «9», если 10, то «-», если 14, то «Р».

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

0х0A Intensity Регистр настройки яркости свечения, от 0 до 15.
0х0B Scan Limit Регистр настройки количества активных индикаторов:
=0 - разрешить только Digit 0
=1 - разрешить Digit 0 и Digit 1,
=7 - разрешить все Digit 0 - Digit 7
0х0C Shutdown Регистр управления режимом работы
=1 - включен дисплей
=0 - отключить дисплей
0х0F Display Test =0 - нормальный режим
=1 - режим тестирования дисплея (все светодиоды загораются с максимальной яркостью)