Загрузить данные в MAX 7219

У меня есть следующий код для записи данных на MAX7219 для освещения светодиодной матрицы 8x8:

for (i = 0; i < 8; i++)  
{          
    CLK = LOW;       
    DIN = temp & MSBIT >> i;  
    CLK = HIGH;  
}

Дело в том, к сожалению, я просто знаю, что строка кода (DIN = temp & MSBIT >> i;) должна быть именно такой, иначе светодиоды победили не показывает ожидаемое, но я не понимаю, как это работает...

Пожалуйста, мне действительно нужно объяснение, потому что я застрял....

Примечание: переменная "temp" всегда представляет собой шестнадцатеричное число, например 0x20, и "MSBIT" = 0x80.

, 👍-1

Обсуждение

Пожалуйста, опубликуйте полный код., @leoc7


1 ответ


0

Вы должны отправить 16 бит для загрузки данных. Первые 8 — это регистр, в который попадают данные, от 0 до 15, следующие 8 — это данные для отображения. Регистры 1-8 — это отображаемые данные, остальные используются для настройки: интенсивности, проверки дисплея, нормального/отключения, режима декодирования/без декодирования и количества подключенных цифр/столбцов (например, 4 цифры или 8 для матрица 8x8).

В Arduino я использую аппаратный SPI для отправки данных на MAX7219 — SCK, MOSI и SS.

digitalWrite (ssPin, LOW);
SPI.transfer(addressRegister); // от 0 до 15
SPI.transfer(dataToLoad); 
digitalWrite (ssPin, HIGH);

Проделайте это для каждого регистра. Регистры управления должны быть записаны только один раз. В Arduino это обычно находится в setup(). Интенсивность может быть изменена позже для яркости (от 0 до 15, как действительные данные).

В цикле() используйте описанное выше, чтобы обновить дисплей для 8 регистров данных дисплея (1-8).

,

Скорость SPI по умолчанию 4 МГц, MSBFIRST, SPI Mode 0 изменять не нужно., @CrossRoads