7.3. Сдвиговый регистр 7 4НС595
В качестве сдвигового регистра мы будем применять микросхему 74НС595, цоколевка которой изображена на рис. 7.2.
Рис. 7.2. Цоколевка микросхемы 74НС595
Назначение контактов сдвигового регистра:
• QA - QH - восемь параллельных выходов сдвигового регистра;
• GND - соединяется с земляной шиной платы Arduino;
- 156 -
• SER - это вход данных (DA ТА на рис. 7.1 ). По этому входу передаются 8 последовательных битов данных для установки значений на параллельных выходах;
• SRCLK- это тактовый вход (CLOCK на рис. 7.1). При подаче импульса высокого напряжения HIGH на этот вход происходит считывание одного бита данных с входа DA ТА в сдвиговый регистр. Для получения всех 8 битов данных необходимо подать 8 импульсов на этот контакт;
• RCLK - это вход (LA ТСН на рис. 7.1) называется также защелкой и служит для одновременного вывода последовательных данных на параллельные выходы.
Выводы SRCLR и ОЕ не используются в примерах из книги, но они могут пригодиться вам в других проектах, поэтому посмотрим, каково их назначение. ОЕ разрешение вывода данных на параллельные выходы. Черта сверху означает, что активный уровень для этого входа - низкий. Когда на этом входе низкий уровень, параллельные выходы будут включены, когда высокий - выключены. В наших примерах контакт ОЕ подключен к земле, поэтому параллельные выходы постояо находятся во включенном состоянии. Вы можете соединить его с контактом ввода-вывода Arduino, чтобы одновременно включать или выключать все светодиоды. SRCLR - это вход сброса. Подача на него напряжения низкого уровня очищает содержимое регистра сдвига. В наших примерах он подключен к шине 5 В, чтобы предотвратить очистку сдвигового регистра.
Регистр сдвига является синхронным устройством, он принимает данные по нарастающему фронту тактового сигнала. Каждый раз, когда сигнал на входе CLOCK меняется с низкого на высокий, все значения, хранящиеся в восьми выходных ячейках, смещаются на одну позицию. Данные из последней ячейки либо сбрасываются, либо передаются на выход QH' (при каскадном подключении микросхемы 74НС595). Одновременно последовательные данные на входе DATA сдвигаются на одну позицию. За восемь тактов предыдущие значения в ячейках регистра уходят, а новые загружаются. Подача высокого уровня на вход LATCH выводит значения, хранящиеся в ячейках, на выходы регистра. Этот процесс проиллюстрирован на рис. 7.3.
Предположим, вы хотите включить некоторые из светодиодов, подключенных к параллельным выходам сдвигового регистра, например к выходам QA, QC, QE, QG. В двоичном представлении на параллельных выходах должно быть значение 10101010. Теперь посмотрим, как действует регистр. Установим низкий уровень на входе LATCH, чтобы значения на параллельных выходах не изменялись во время загрузки новых данных в ячейки регистра. Затем, подавая импульсы на вход CLOCK, значения на входе DATA загружаем и сдвигаем по ячейкам. После загрузки в регистр всей последовательности данных, устанавливаем на входе LATCH высокий уровень для вывода значений из ячеек на параллельные выходы.
- 157 -
Рис. 7.3. Перемещение данных по сдвиговому регистру
- 158 -
в сдвиговый регистр
Теперь можно написать программу для передачи данных из Arduino в сдвиговые регистры. Воспользуемся встроенной в Arduino IDE функцией shiftOut() для поразрядной выдачи данных на контакт платы Arduino. Эта функция принимает четыре аргумента:
• номер контакта DATA;
• номер контакта CLOCK;
• порядок выдачи битов;