Сдвиговый регистр 74HC595

На этом уроке мы разберем работу сдвигового регистра 74HC595, который может хранить 8 бит данных. Схема выводов микросхемы представлена на картинке. Кстати, у этого регистра есть и отечественный аналог КР1564ИР52.

Распиновка регистра 595
  • Q0-Q7 — выходы каждой из 8 ячеек;
  • VCC — питание микросхемы, 5В;
  • GND — земля;
  • DS — линия данных;
  • ST_CP — линия синхроимпульса для передачи данных из внутренних ячеек, во внешние;
  • SH_CP — линия синхроимпульса для передачи данных из DS во внутренние ячейки;
  • OE — инверсный, разрешение на вывод данных с внешних ячеек;
  • Q7′ — выход регистра, который необходимо соединить с DS следующего регистра для создания цепочки.

У регистра есть один вход данных и два входа синхронизации. Синхроимпульс SH_CP запоминает текущее состояние входа данных DS. Другими словами, если на DS в момент синхронизации был высокий уровень HIGH, то в первой ячейке регистра сохранится 1. В противном случае, сохранится 0.

Но надо отметить, что на самом деле сдвиговый регистр 74HC595 содержит не 8, а целых 16 ячеек памяти! Первые 8 ячеек заполняются последовательно, как мы и выяснили из предыдущей диаграммы, а  вот другие 8 носят особую функцию. Второй слой ячеек соединяется непосредственно с выходами Q0-Q7, и чтобы переместить бит из первого слоя во второй, нам потребуется второй синхроимпульс ST_CP. Это может немного путать, но зато такой двухслойный регистр дает нам очень полезную возможность. Мы можем неторопливо заполнять ячейки первого слоя памяти, при этом на выходе регистра всё еще будут старые значения. После того, как мы заполним весь регистр, просто отправим на ST_CP импульс, и выходы регистра одновременно обновятся.

Двухслойная структура регистра пригодится нам в следующем уроке, где нужно будет избавиться от паразитной засветки индикаторов.

Теперь подробнее про алгоритм работы с синхроимпульсами. Вот так выглядит временная диаграмма регистра 74HC595:

shift_register_10_lrg

Необходимо отметить, что порядок следования импульсов очень важен. Сначала мы устанавливаем на выводе DS нужный уровень сигнала, и только потом делаем импульс на SH_CP.


Изменено: