Проект Eldigi.ru пережил своё новое становление. В связи с этим на сайте могут быть ошибки. Нашли ошибку? Помогите проекту, выделите её и нажмите Ctrl+Enter. Подробнее...

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

Есть матрица 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 для шифтов.

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

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

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

Данная прошивка позволяет задавать 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).

Скачать исходный код на C под WinAVR (2 Кб). Загрузок: 413

Автор статьи: Артем Кучин E-mail: artem@artem.ru

Просмотров: 5365

Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены... подробнее...

Очень удобная программа для чтения pdf Foxit Reader
26.04.2014
Foxit Reader - Компактная и шустрая программа для чтения PDF файлов. Может служить альтернативой для популярного просмотрщика PDF - Adobe Reader.... подробнее...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры.... подробнее...

Новое становление сайта Eldigi.ru
01.04.2014
Проект Eldigi.ru который долгое время находился в застывшем состоянии снова принимается за работу с новымы силами, с новыми статьями и с... подробнее...

Proteus 7.7 SP2 + Crack v1.0.2 + RUS
22.04.2014
Proteus VSM - программа-симулятор микроконтроллерных устройств. Поддерживает МК: PIC, 8051, AVR, HC11, ARM7/LPC2000 и другие распространенные процессоры.... подробнее...

Splan 7.0.0.9 Rus + Portable + Viewer Fiinal
26.04.2014
sPlan – удобный инструмент для черчения электронных схем. Имеет простой и интуитивно понятный интерфейс. В программе заложены... подробнее...

Цифровая паяльная станция своими руками (ATmega8, C)
27.05.2012
Состав: ATmega8, LM358, IRFZ44, 7805, мост, 13 резисторов, один потенциометр, 2 электролита, 4 конденсатора, трехразрядный светодиодный семисегментный... подробнее...

Тахометр на AVR микроконтроллере (ATtiny2313, C)
13.01.2010
Данное устройство представляет собой неплохой тахометр, предел его измерений составляет 100 - 9990 об/мин. Точность измерения - ± 3 об/мин.... подробнее...

Частотомер на PIC контроллере с LCD дисплеем (PIC18F252, C)
09.08.2008
Частотомер собран на достаточно распространённых микроконтроллерах фирмы MICROCHIP PIC18F252 с применением 2х16 (он был под рукой), хотя можно... подробнее...

Экономичный цифровой термометр (PIC16F628, asm)
16.01.2008
В последнее время конструирование цифровых термометров очень популярно. Применение микроконтроллеров (МК) и современных датчиков... подробнее...

PWM (ШИМ) управление LED матрицей 8х8 через регистр сдвига 74HC595 (ATmega8, C)
23.01.2011
Есть матрица 8х8, одноцветная. Всего, соответственно, 16 выходов: 8 на столбцы и 8 на строки. Проблема номер один – понять какой контакт чем... подробнее...

Цифровой термометр на DS18B20 (ATmega8, C)
18.10.2009
Цифровой термометр предназначен для измерения температуры с точностью до одной десятой доли градуса Цельсия*. Цифровой термометр... подробнее...