сдвиговый регистр
Есть вопросы ? Напишите нам.
Вы
Понятие сдвигового регистра
Сдвиговый регистр — это устройство, которое позволяет добавлять к микроконтроллеру дополнительные входы или выходы. Это достигается путем преобразования данных между параллельным и последовательным форматами.
Микропроцессор взаимодействует с регистром сдвига, используя последовательную информацию, а тот, в свою очередь, собирает или выводит данные в параллельном (многоконтактном) формате.
На фото ниже представлена микросхема регистра сдвига SIPO SN74HC595N DIP16, которая является аналогом отечественной платы КР1564ИР52.
Типы регистров сдвига
Описываемые микросхемы бывают двух основных типов: SIPO (Serial-In-Parallel-Out), или PISO (Parallel-In-Serial-Out). Первый тип, SIPO, удобен для управления большим количеством выходов, включая светодиоды, а второй тип, PISO, хорош для сбора большого количества входов, например, кнопок.
Если требуется более 8 дополнительных линий ввода-вывода, можно легко объединить несколько сдвиговых регистров, подключив выходную сторону одной коммутационной платы к входной стороне другой платы.
Зачем сдвигать биты?
Купить сдвиговые регистры часто стремятся те, кто хочет сохранить необходимые свободные выводы на микроконтроллере. Каждый микроконтроллер имеет ограниченное количество контактов для общих входов и выходов (GPIO).
Если проекту необходимо управлять 16 светодиодами, для этого обычно требуется 16 контактов микроконтроллера. Если у вас нет 16 доступных контактов ввода-вывода, здесь пригодится сдвиговый регистр.
С двумя последовательно соединенными регистрами сдвига мы можем выполнить задачу управления 16 светодиодами, используя только 4 контакта ввода-вывода. Это большая разница, и вы можете сохранить тем больше контактов, чем больше сдвиговых регистров вы соедините вместе.
Пример применения
Реальным примером использования регистра сдвига для сбора входных данных является оригинальный контроллер Nintendo. Основной микроконтроллер NES должен был получать нажатия кнопок от контроллера, и для выполнения этой задачи использовали сдвиговый регистр.
Использована коммутационная плата 74HC165 и Arduino Uno, чтобы показать, как сделать распиновку параллельного входа и последовательного выхода для этой задачи (см. рис.) Они могут быть легко объединены в цепочку для большего количества входных данных.
Для 8-битного регистра требуется 4 линии микроконтроллера:
-
один для часов синхронизации передачи данных;
-
один для включения часов;
-
один для загрузки/фиксации/сдвига битов;
-
один для последовательной передачи данных.
Часы (CLK) подсоединяются к контакту 12, а разрешение часов (CE) — к контакту 9. Часы устанавливают частоту, с которой сдвигаются биты, в то время как линия разрешения часов позволяет тактовому сигналу проходить через схему сдвига.
Сдвиг/загрузка SH/LD соединяются с контактом 8. Переход в низкий уровень указывает регистру сдвига захватить текущее состояние 8 входных контактов A-H, которые могут быть подключены к входу какого-либо типа, например, к кнопкам, переключателям или цифровой транзисторной схеме.
Подключите последовательный выход (SER_OUT) к контакту 11. На этот контакт мы получаем последовательную информацию из регистра сдвига. Не забудьте подключить питание и землю.