
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Контроллер MAX7219, производимый компанией Maxim Integrated, представляет собой компактный драйвер дисплея с общим катодом последовательного ввода / вывода, который может сопрягать микроконтроллеры с 64 отдельными светодиодами, 7-сегментными цифровыми светодиодными дисплеями до 8 цифр, гистограммами и т. Д. -чип представляет собой декодер BCD-кода-B, схему мультиплексного сканирования, драйверы сегментов и цифр и статическое ОЗУ 8 × 8, в котором хранится каждая цифра.
Модули MAX7219 очень удобны в использовании с такими микроконтроллерами, как ATtiny85 или, в нашем случае, Tinusaur Board.
Шаг 1. Аппаратное обеспечение


Модули MAX7219 обычно выглядят так. У них есть входная шина с одной стороны и выходная шина с другой. Это позволяет вам последовательно подключать 2 или более модулей, то есть один за другим, для создания более сложных настроек.
Модули, которые мы используем, могут быть соединены в цепочку с помощью 5 небольших перемычек. См. Картинку ниже.
Шаг 2: распиновка и сигналы
Модуль MAX7219 имеет 5 контактов:
- VCC - мощность (+)
- GND - земля (-)
- DIN - ввод данных
- CS - выбор чипа
- CLK - Часы
Это означает, что нам нужно 3 контакта на стороне микроконтроллера ATtiny85 для управления модулем. Это будут:
- PB0 - подключен к CLK
- PB1 - подключен к CS
- PB2 - подключен к DIN
Этого достаточно для подключения к модулю MAX7219 и его программирования.
Шаг 3: Протокол

Связь с MAX7219 относительно проста - он использует синхронный протокол, что означает, что для каждого отправляемого бита данных существует тактовый цикл, который означает наличие этого бита данных.
Другими словами, мы отправляем в биты 2 параллельные последовательности - одну для часов, а другую для данных. Это то, что делает программа.
Шаг 4: Программное обеспечение

Этот модуль MAX7219 работает следующим образом:
- Записываем байты в его внутренний регистр.
- MAX7219 интерпретирует данные.
- MAX7219 управляет светодиодами в матрице.
Это также означает, что нам не нужно постоянно обходить массив светодиодов, чтобы зажечь их - контроллер MAX7219 позаботится об этом. Он также может управлять яркостью светодиодов.
Итак, чтобы использовать модули MAX7219 удобным образом, нам нужна библиотека функций для этой цели.
Во-первых, нам понадобятся некоторые базовые функции для записи в регистры MAX7219.
- Запись байта в MAX7219.
- Запись слова (2 байта) в MAX7219.
Функция, записывающая один байт в контроллер, выглядит так:
void max7219_byte (данные uint8_t) {для (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Установите для CLK значение LOW if (data & 0x80) // Маскируйте старший бит данных PORTB | = (1 << MAX7219_DIN); // Установите для DIN значение HIGH else PORTB & = ~ (1 << MAX7219_DIN); // Установите для DIN значение LOW PORTB | = (1 << MAX7219_CLK); // Установите для CLK значение HIGH data << = 1; // Сдвиг влево}}
Теперь, когда мы можем отправлять байты на MAX7219, мы можем начать отправку команд. Это делается путем отправки двух байтов - первое - для адреса внутреннего регистра, а второе - для данных, которые мы хотим отправить.
Регистров в контроллере MAX7219 больше десятка.
Отправка команды или слова - это, по сути, отправка 2 последовательных байтов. Функция, реализующая это, очень проста.
void max7219_word (адрес uint8_t, данные uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Установить CS на LOW max7219_byte (address); // Отправляем адрес max7219_byte (data); // Отправка данных PORTB | = (1 << MAX7219_CS); // Установить CS на HIGH PORTB & = ~ (1 << MAX7219_CLK); // Установите для CLK значение LOW}
Здесь важно отметить строку, в которой мы возвращаем сигнал CS в HIGH - это означает конец последовательности - в данном случае конец команды. Подобный метод используется при управлении несколькими матрицами, соединенными в цепочку. Следующим шагом, прежде чем мы начнем включать и выключать светодиоды, является инициализация контроллера MAX7219. Это делается путем записи определенных значений в определенные регистры. Для удобства при кодировании мы могли поместить последовательность инициализации в массив.
uint8_t initseq = {0x09, 0x00, // Регистр режима декодирования, 00 = Без декодирования 0x0a, 0x01, // Регистр интенсивности, 0x00.. 0x0f 0x0b, 0x07, // Регистр ограничения сканирования, 0x07 для отображения всех строк 0x0c, 0x01, // Регистр выключения, 0x01 = Нормальная работа 0x0f, 0x00, // Регистр тестирования дисплея, 0x00 = Нормальная работа};
Нам просто нужно отправить 5 команд выше в последовательности в виде пар адрес / данные. Следующий шаг - зажечь ряд светодиодов.
Это очень просто - мы просто пишем одну команду, где 1-й байт - это адрес (от 0 до 7), а 2-й байт - это 8 бит, представляющих 8 светодиодов в строке.
void max7219_row (адрес uint8_t, данные uint8_t) {if (адрес> = 1 && адрес <= 8) max7219_word (адрес, данные); }
Важно отметить, что это будет работать только для 1 матрицы. Если мы соединим больше матриц в цепочку, все они будут отображать одни и те же данные. Причина этого заключается в том, что после отправки команды мы возвращаем сигнал CS обратно в HIGH, что вызывает фиксацию всех контроллеров MAX7219 в цепочке и отображение последней команды.
Рекомендуемые:
Создайте свою собственную светодиодную матрицу 15x10 RGB: 10 шагов

Создайте свою собственную светодиодную матрицу 15x10 RGB: в этой серии видео я покажу вам, как построить светодиодную матрицу 15x10 RGB. Эта матрица имеет ширину 1,5 м и высоту 1 м. Он состоит из светодиодов PL9823 RGB, которые являются дешевой альтернативой обычным светодиодам WS2812. Я расскажу о проблемах, которые
Создайте свою светодиодную матрицу 10x10: 5 шагов (с изображениями)

Создайте свою собственную светодиодную матрицу 10x10: в этом проекте я покажу вам, как объединить широко доступные светодиоды WS2812B RGB с Arduino Nano, чтобы создать красочную светодиодную матрицу 10x10. Давайте начнем
Arduino: индикатор потенциала использует светодиодную матрицу MAX7219: 4 шага

Arduino: индикатор Potentio использует светодиодную матрицу MAX7219: в предыдущем уроке я сделал индикацию потенциометра, используя нео-пиксельный светодиод с кольцом RGB. вы можете увидеть это в этой статье «Индикатор потенциала использует неопиксель RGB». И сегодня я покажу индикатор потенциометра с использованием светодиода MAX7219 с
Как использовать матрицу Max7219 8x8 с "skiiiD": 9 шагов

Как использовать точечную матрицу Max7219 8x8 с "skiiiD": это видеоинструкция по использованию точечной матрицы Max7219 8x8 через "skiiiD". Перед началом ниже приводится базовое руководство по использованию skiiiD https://www.instructables.com/id / Начало работы-W
Как построить БОЛЬШУЮ светодиодную матрицу 8x8 (светодиод MAX7219 10 мм): 9 шагов (с изображениями)

Как построить БОЛЬШУЮ светодиодную матрицу 8x8 (MAX7219 LED 10 мм): Работали ли вы с готовой светодиодной матрицей 8x8 в качестве дисплеев? Они бывают разных размеров и с ними довольно интересно работать. Большой доступный размер составляет около 60 мм x 60 мм. Однако, если вы ищете готовую светодиодную матрицу гораздо большего размера