свою проблемму решил еще проще, буквально изменением 3 строк WiseLord спасибо за такой код, есть чему поучиться с помощью этой функции можно воротить матрицами как хочешь даже для удобства разводки можно подключать произвольно матрицу к 7219, правда это требует дополнительного кода
для понимания, обьясните как идет сканирование и отображение матрицы, вопрос возник анализируя картинку с 1 стр расположения матриц с ОА и ОК и схеме на схеме написано аноды строки - снизу вверх, катоды - слева направо у меня не совсем сходиться расположение матриц, просто хочу по новой развести правильно большие матрицы 60х60 с 13,3,4,10,6,11,15,16 - катоды (FYM-23881BUHR) Спасибо
Сканированием занимается сама MAX7219. Ей просто нужно передать номер столбца и данные для него. И так восемь раз, для каждого из столбцов. По сути, вся функция max7219SendDataBuf() сводится к коду:
А дальше уже частные случаи. Например, при rotate номера столбцов должны идти в обратном порядке:
Код:
max7219SendByte(MAX7219_DIGIT_7 - i)
При необходимости поворота на 90 градусов нужны уже разные битовые сдвиги (собрать N-ный бит каждого из 8 столбцов, и сформировать из них байт данных data, который уже и послать в драйвер, и так 8 раз для каждого N-ного бита)
Для четырёх матриц данные посылаются следующим образом, если упростить:
Код:
for (i = 0; i < 8; i++) { // биты PORT(MAX7219_LOAD) &= ~MAX7219_LOAD_LINE; for (j = 0; j < MAX7219_NUM_USED; j++) { // номер матрицы max7219SendByte(MAX7219_DIGIT_0 + i) } PORT(MAX7219_LOAD) |= MAX7219_LOAD_LINE; }
Получается, мы посылаем 4 байта (первый столбец каждой из 4 матриц), записываем в матрицы, потом ещё 4 (второй столбец) и так 8 раз
В случае отсутствия поворота - да. Данные пишутся в драйвер 0, дальше передаются по цепочке в драйвер 1, драйвер 2, драйвер 3. Поэтому сначала нужно передать данные для 3 матрицы, потом для 2-й, потом для 1-й и потом уже для 0-й:
Код:
матрица 0 1 2 3
данные для 3 матрицы: 3 данные для 2 матрицы: 2 3 данные для 1 матрицы: 1 2 3 данные для 0 матрицы: 0 1 3 3 сохранили (LOAD)
И так 8 раз для каждого из 8 столбцов.
Собственно сканированием (развёрткой) занимается сама MAX7219. Главное, если смотреть на матрицу с лицевой стороны светодиодов чтобы DIG_0 выход был подключен к левому столбцу (катоду), DIG_7 к правому. А выходы анодов (A-DP) шли сверху вниз. Как на схеме.
Нет, при перевороте как раз-таки передаём с 0 по 3 матрицу, а без переворота - с 3 по 0. Потому что байт, переданный первым, после передачи всех четырёх, как раз-таки окажется "напротив" последней матрицы, и по команде LOAD загрузится именно в неё.
ну правильно я это и имел ввиду 1 первый посланный бай при 4 кратной посылке применится к последней матрице то есть 1 байт - 4 матрица 2 байт - 3 матрица 3 байт - 2 матрица 4 байт - 1 матрица при перевороте наоборот спасибо все понятно
WiseLord здравствуйте! Что то у меня не получается отключить ежечасный сигнал. В редакторе снимаю галочку но после загрузки точка сигнала горит и соответственно звучит сигнал. Отключаю сигнал 1 и 3 кнопкой точка гаснет но сигнал все равно звучит. Помогите пожалуйста. Спасибо
корпус оргстекло 3мм закатанное черной самоклейкой передняя панель из красного акрила у которого одна сторона глянцевая (наружняя) внутренняя матовая. это стекло позволяет видеть только горящие светодиоды а самих матриц не видно на фото смотрится по другому не так симпатично
Резал лазером с минимальным количеством воздуха это дает ровный чистый рез а клеил клеем космофен можно дихлоэтаном Можно вместо лазера использовать фрезер еще лучше торец получается ровный и под прямым углом к поверхности.Лазер чуть подкашивает торец особенно на толстых материалах
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения