20.7.2008

PWM (ШИМ) управлением LED матрицей 8х8 через регистр сдвига 74HC595

Есть матрица 8х8, одноцветная. Выглядит так:

Всего, соответственно, 16 выходов: 8 на столбцы и 8 на строки.

Проблема номер один – понять какой контакт чем управляет. Хотелось бы, что бы один ряд из 8 контактов был столбцами, а другой – строками. Но это не так. Контакты, мягко говоря, стоят, как попало.

После того, как определили, какой контакт за что отвечает, через резюки в минимум 20 Ом (а лучше больше и посчитать так, чтобы ток не было более 100 мА) подключаем на входы двух шифтиков 74HC595. (я резюки не ставил, так как шифты реально боле 80мА выдать не могут, но это НЕПРАВИЛЬНО и годится только чтобы на коленках демку собрать).

595-е шифты – особенно приятные, так как у них есть отдельно регистр загрузки и отдельно буфер выдачи. Поэтому, когда идет загрузка нового байта, предыдущий продолжает выводиться, а после загрузки, одним импульсом, новый байт перегружается из шифта в буфер вывода. И скорость у него до 50МГц, что ни с одной AVR и не светит.

Как подключать (нулевой бит шифта к самой левой колонке или к самой правой или к самому верхнему ряду или к самому нижнему) – дело хозяйское. Потов в программе просто придется порядок загрузки в шифт поменять.

Итак, по схеме.

Выводы шифтов одного шифта – на колонки. Выводы другого – на строки.
Перепутаете полюсность – будет все в инверсии.

OE (он же G) с шифта для СТРОК кидаем на PD6
OE (он же G) с шифта для КОЛОНОК кидаем на GND (всегда активно)
SCRL (clear) обоих – кидаем на Vcc
SI (serial input) обоих – кидаем на PD1
RCK (latch output, storage register clock input) СРОК – на PD2
RCK (latch output, storage register clock input) КОЛОНОК– на PD4
SCK (shift register clock input) обоих - PD3

Т.е. все у всех шифтов висит на одних и тех же ногах МК, кроме G (он же OE).

Подключаем Vcc и GND для шифтов.

В собранном состоянии так выходит:

[открывается по нажатию в полном размере]

Компилим и заливаем прошивку. 74h595.c

Должно получиться что-то вроде такого:

Данная прошивка позволяет задавать 16 уровней (4 бита) на 1 пиксель. В ней есть несколько хитростей, чтобы все было быстрее на С. Но если ее переписать на ассемблере, то можно цикл вывода сделать еще раза в 2 быстрее (из-за того, что в C нет команды roll для байта, а есть только shift, а тут был бы очень нужен именно roll).

В замедленных кадрах прорисовка идет так:

Замер быстродействия на 12Мгц показал, что отрисовка идет со скоростью 600 кадров в секунду. Соответственно, если ускорить еще в 2 раза (или ассемблером или разгоном чипа на 24Мгц), то будет около 1200 кадров в сек. В практическом смысле это означает, что если в матрице будут RGB светодиоды, то скорость будет в 3 раза меньше (400 кадров в сек), и далее если кубиков 8х8 будет 4, то будет 100 кадров в сек., и меньше этого делать уже не стоит, так как будет видно моргание при определенных обстоятельствах. Если сделать на ассемблере и разогнать на 24Мгц, то можно сделать до 8 RGB кубиков 8х8 (т.е. экран 64х16).

Комментарии
Роман (Ташкент, Узбекистан) 2008-09-01 09:24:44 #1 link
Классная схема и программа!!! Так держать!!!
Александр Логвинчук (Севастополь, неУкраина) 2008-09-05 19:46:30 #2 link
Супер, очень понравилось, искал решения для светодиодной подсветки рекламного щита, наткнулся на ваш сайт. Самое любопытное что у меня уже есть готовая плата с атмегой и 595 регистром на борту:-)
www.airex.biz
Владимир () 2009-05-31 04:44:11 #3 link
Приветствую вас , посмотрел видео и мечтаю научиться програмить ,был-бы признателен если-бы вы мне подсказали ,что читать ,а то литературы море а скилет знаний уловить не могу ,,,,,,,,,, или не всем дано?
Заранее благодарен .
retukov@yandex.ru
сергей (Днепропетровск, украина) 2010-10-10 19:49:28 #4 link
доброе время суток можете выложить скомпилированную прошивку сего девайса а то у меня нет компилятора заранее благодарен
Артем Кучин (Москва, Россия) 2010-10-10 22:59:40 #5 link
ну нет, конечно.
Компилятор бесплатный, качайте на www.ateml.com: AVR Studio 4 + gcc копилятор к нему по имени WinAVR
Евгений (Москва, Россия) 2013-08-26 12:05:49 #6 link
Доброе время суток! Если Вас не затруднит, могли бы Вы мне помочь: хотел бы собрать лед матрицу на основе сдвигового регистра, как сделано Вами , но у меня есть затруднение, не знаю куда подключать пины 14, 12, 11 у обеих микросхем и 13 пин у одной, к ардуине меге2560, и хотел узнать: для Вашей прошивке надо скачивать ещё какие-нибудь библиотеки? Заранее спасибо!
Добавить комментарий
Ваше имя:
город: страна:
Комментарий:

Введите код "7081" -
Сообщения не по теме будут удалены. Вопросы не по теме следует направлять по электронную почту. Ваши данные будут запомнены в cookie для удобства. HTML запрещен.

(C)1999-2021 Артем Кучин
Email: artem@artem.ru
На письма без темы или без имени отправителя не отвечаю

При использовании материалов ссылка на сайта www.artem.ru обязательна! Автор оставляет за собой право отказать в праве использования материалов на безвозмездной основе без объяснения причин. Материалы сайта защищены законом об авторских и смежных правах.

Цена домена: 1 500 000 руб.