Микросхема MAX 7219 служит для управления до 8-ми семисегментных светодиодных индикаторов или матрицей светодиодов размерностью 8х8. Для управления всеми сегментами индикатора или точками матрицы используются всего три контакта:
Передача данных осуществляется по такому алгоритму:
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, то «Р».
Режимы дешифровки: |
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 - режим тестирования дисплея (все светодиоды загораются с максимальной яркостью) |