свою проблемму решил еще проще, буквально изменением 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мм закатанное черной самоклейкой передняя панель из красного акрила у которого одна сторона глянцевая (наружняя) внутренняя матовая. это стекло позволяет видеть только горящие светодиоды а самих матриц не видно на фото смотрится по другому не так симпатично
Резал лазером с минимальным количеством воздуха это дает ровный чистый рез а клеил клеем космофен можно дихлоэтаном Можно вместо лазера использовать фрезер еще лучше торец получается ровный и под прямым углом к поверхности.Лазер чуть подкашивает торец особенно на толстых материалах
Сейчас этот форум просматривают: eduard74291 и гости: 35
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения