74hc595
- Войдите на сайт для отправки комментариев
Чт, 18/12/2014 - 22:20
Объясните пожалуйста как работать со сдвиговыми регистрами.
Собрал такую схему
+uln2003 и пара транзисторов.
Мне нужно зажечь поочередно светодиоды, все 16, один за другим. И потом в том же порядке один за другим погасить.
Никак не могу найти инфы как это сделать :|
Есть 2 пути програмный и аппаратный.
В програмном вы каждый раз отправляете 2 байта(16 бит) с состоянием всех светодиодов. Используя двубайтную переменную сдвигаете ее побитово и устанавливаете первый бит, потом отсылаете эти байты регистрам.
В аппаратном вы манипулируете выводами. Данные в 1 и дергаете строб и запись 16 раз. Единица данных при этом плавно заполняет регистры зажигая диоды.
Так как будем делать ?
замечательная статья
http://www.rlocman.ru/shem/schematics.html?di=65110
Есть 2 пути програмный и аппаратный.
В програмном вы каждый раз отправляете 2 байта(16 бит) с состоянием всех светодиодов. Используя двубайтную переменную сдвигаете ее побитово и устанавливаете первый бит, потом отсылаете эти байты регистрам.
В аппаратном вы манипулируете выводами. Данные в 1 и дергаете строб и запись 16 раз. Единица данных при этом плавно заполняет регистры зажигая диоды.
Так как будем делать ?
Наверно первым способом.
Вы картинки эти где взяли?
Наверника тут.
https://arduino.ru/Tutorial/registr_74HC595
Там и коды примеров есть 1.1, 1.2 , 2.1 , 2.2. Аж 4 штуки. Ткните надпись "показать код".
Только используемая в этом случае функция shiftOut мне не понравилась. работает конечно, но...
Короче я ее немного переписал.
Как работает сдвиговой регистр хорошо показано анимашке
http://avrproject.ru/publ/kak_podkljuchit/bascom_avr_74hc595/2-1-0-44
Попробуй сначала на одном регистре и кнопках, а там дальше разберешься.... вот я набросал...
595 - вообще все просто! у меня семисегментники на них. я массив в начале сделал, затем обрабаываю через оператор if, полученное вывожу через shiftOut. кажет счас попеременно время и температуру )
595 - вообще все просто! у меня семисегментники на них. я массив в начале сделал, затем обрабаываю через оператор if, полученное вывожу через shiftOut. кажет счас попеременно время и температуру )
А у меня еще и влажность. и без моргания дисплея во время считывания данных с датчика.
тока точка когда моргает между часами и минутами заметно потухание едениц часов. надо бы допилить. драйвер токовый поставить. уже заказал.
Вот опять удивляюсь тонкостям дуины (кто это придумал то все?!) зачем каждый раз проверять как пихать байт справа или слева?
shiftOut(dataPin, clockPin, MSBFIRST, out0);