74Hc595 схема подключения – 74hc595 arduino: сдвиговый регистр, основы использования

Сдвиговый регистр 74HC595 и семисегментный индикатор

В ситуации когда не хватает выходов микроконтроллера, что обычно делают? Правильно – берут микроконтроллер с большим количеством выходов. А если не хватает выводов у микроконтроллера с самым большим количеством выходов, то могут поставить и второй микроконтроллер.
Но в большинстве случаев проблему можно решить более дешевыми способами например использовать сдвиговый регистр 74HC595.

Преимущества использования сдвигового регистра 74HC595:

  • не требует никакой обвязки кроме конденсатора по питанию;
  • работает через широкораспостраненный интерфейс SPI;
  • для самого простого включения достаточно двух выходов микроконтроллера;
  • возможность практически неограниченного расширения количества выходов без увеличения занятых выходов микроконтроллера;
  • частота работы до 100 МГц;
  • напряжение питания от 2 В до 6 В;
  • дешевый — стоит менее 5 центов;
  • выпускается как в планарных корпусах (74HC595D удобен для производства), так и в DIP16 (74HC595N удобен для радиолюбителей и макетирования).

Для понимания работы регистра стоит взглянуть на функциональную схему. Она состоит из:

  • 8-битного регистра сдвига,
  • 8-битного регистра хранения,
  • 8-битного выходного регистра.

Рассмотрим какие выводы есть у сдвигового регистра 74hc595.

Общего вывод и вывод питания объяснений не требуют.

  • GND — земля
  • VCC — питание 5 вольт

Входы 74HC595:

OE

Вход переводящий выходы из высокоимпедансного состояние в рабочее состояние. При логической единице на этом входе выходы 74HC595 будут отключены от остальной части схемы. Это нужно например для того чтобы другая микросхема могла управлять этими сигналами.
Если нужно включить в рабочее состояние микросхеме подайте логический ноль на этот вход. А если в принципе не нужно переводить выходы в высокоимпедансное состояние – смело заземляйте этот вывод.

MR — сброс регистра

Переводить все выходы в состояние логического нуля. Чтобы сбросить регистр нужно подать логический ноль на этот вход и подать положительный импульс на вход STCP.
Подключаем этот выход через резистор к питанию микросхемы и при необходимости замыкаем на землю.

DS – вход данных

Последовательно подаваемые сюда данные будут появляются на 8-ми выходах регистра в параллельной форме.

SHCP – вход для тактовых импульсов

Когда на тактовом входе SHCP появляется логическая единица, бит находящийся на входе данных DS считывается и записывается в самый младший разряд сдвигового регистра. При поступлении на тактовый вход следующего импульса высокого уровня, в сдвиговый регистр записывается следующий бит со входа данных. Тот бит который был записан ранее сдвигается на один разряд (из Q0 в Q1) , а его место занимает вновь пришедший бит. И так далее по цепочке.

STCP – вход «защёлкивающий» данные

Что бы данные появились на выходах Q0…Q7 нужно подать логическую единицу на вход STCP. Данные поступают в параллельный регистр который сохряняет их до следующего импульса STCP.

Выходы 74HC595

  • Q0…Q7 – выходы которыми будем управлять. Могут находится в трёх состояниях: логическая единица, логический ноль и высокоимпедансное состояние
  • Q7′ – выход предназначенный для последовательного соединения регистров.

Временная диаграмма на которой показано движение логической единицы по всем выходам регистра.

Как говориться лучше один раз увидеть, чем семь раз услышать. Я сам впервые применяя регистр 74HC595 не до конца понимал его работу и чтобы понять смоделировал нужную схему в Proteus.

Вот такая схема подключения семисегментных индикаторов к микроконтроллеру ATMega48 по SPI получилась:

Это схема с динамической индикацией, то есть в каждый момент времени загорается только одна цифра счетверенного семисегментного индикатора, потом загорается следующая и так по кругу. Но так как смена происходит очень быстро, то глазу кажется, что горят все цифры.
Кроме того одновременно эта схема и опрашивает 4 кнопки S1-S4. Добавив два сдвоенных диода можно опрашивать 8 кнопок. А добавив 4 транзистора и резистора можно подключить дополнительный 4-х знаковый индикатор.
Чтобы динамическая индикация заработала в регистры нужно послать два байта: первый байт определяет, какой из 4-х индикаторов будет работать и какую кнопку будем опрашивать. А второй, какие из сегментов загорятся.

hardelectronics.ru

Сдвиговый регистр 74HC595 или увеличение выходов Arduino с минимальными затратами

Этот обзор посвящен, собственно, начинающим пользователям Arduino или желающим приобщиться к этому делу. Речь пойдёт об увеличении количества выходов микроконтроллера при помощи сдвигового регистра, причём что это не требует больших затрат (по сравнению с покупкой Arduino Mega, например). Самое простое применение — помигать светодиодами, вот и попробуем это на практике.

Когда начинал знакомство с микроконтроллерами (собственно и сейчас всё ещё продолжаю «начинать знакомиться»), один из первых вопросов был: как же имея всего десяток выходов на контроллере управлять той же сотней, тысячей светодиодов? Да, можно использовать мультиплексирование сигнала, встречное включение и множество других ухищрений, но всё равно максимальное количество подключаемых светодиодов ограничено, и необходимо искать другое решение. И подсказали мне один из вариантов — «возьми одну, две, десяток микросхем сдвиговых регистров и развлекайся». Было решено сразу же их заказать, а в перспективе даже собрать светодиодный куб с их применением. От последнего правда пришлось отказаться, нашёл более простой вариант, но это — тема другого обзора.
Заказал сразу 20 штук 74HC595N, благо стоят сущие копейки. Буква N в конце маркировки обозначает, что микросхема в корпусе DIP-16, очень удобно для экспериментов на макетной плате, ничего даже паять не надо. Выглядит вот так:


Что же собой представляет эта микросхема? Это восьмиразрядный сдвиговый регистр с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой и тремя состояниями на выходе.
Проще говоря, используя всего 3 выхода контроллера можно управлять 8 выходами сдвигового регистра. А если микросхемы соединить последовательно друг за другом, то количество контролируемых выходов можно наращивать до любого разумного предела (не нашёл предельного количества, но сотнями вроде как объединяются без проблем; если кто знает, от чего зависит предельное количество включенных в каскад микросхем — интересно было бы узнать в комментариях).
Данные к микросхеме передаются последовательно. Биты 0 и 1 передаются в регистр друг за другом, счит

mysku.me

МИКРОСХЕМА SN74HC595N

Одно из основных предназначений микроконтроллеров – это управление относительно простыми устройствами и системами, что очевидно требует опроса датчиков и выдачи управляющих сигналов на исполнительные устройства. Зачастую имеющихся портов микроконтроллера для подобных целей может оказаться недостаточно. Одним из способов увеличения количества подключаемых внешних устройств может служить сдвиговый регистр SN74HC595N. Данная микросхема приобретена на Ru.aliexpress.com по 0,6$ за партию 10 штук.

Она позволяет, используя три порта микроконтроллера управлять 8 выходами [1-3], что немаловажно данный регистр позволяет осуществлять каскадное подключение, получая, таким образом, 16 и более цифровых выходов, управляемых все теми же тремя портами микроконтроллера. Конструктивно, это микросхема в корпусе DIP-16

Микросхема имеет 16 контактов, которые имеют следующее назначение: Vcc и GND питание +5В и общая шина, соответственно. DS – вход для данных, SHcp – вход синхронизации для записи состояния DS в память регистра, STcp – сигнал управления, по низкому уровню которого, данные из памяти регистра попадают в на информационные выходы Q0-Q7, Q7’ – выход для передачи данных на следующий регистр (необходим при совместной работе нескольких регистров), - управление включением/отключением выходов Q0-Q7, - обнуление регистра.

   

Для примера можно взять код от производителей аппаратной платформы Arduino, иллюстрирующий работу данного регистра [4]. Данная программа последовательно выдает на выходы Q0-Q7 двоичное число от 00000000 до 11111111. На примере подключено только пять светодиодов, но в целом понятно, что данная программа представляет собой просто счетчик от 0 до 255.

Видео

В итоге имеем простой и дешевый способ увеличения количества подключенных к Arduino внешних устройств, но за это приходится заплатить меньшим их быстродействием. Впрочем, для устройств вывода информации, типа семисегментных индикаторов и линейных светодиодных шкал, это не очень критично, так как скорость вывода информации все равно будет больше скорости восприятия ее органами чувств человека... Скачать файлы проекта. Обзор подготовил Denev.

Ссылки

  1. http://arduino.ru/Tutorial/registr_74HC595
  2. http://soltau.ru/index.php/arduino/item/458-kak-podklyuchit-sdvigovyj-registr-74hc595-k-arduino
  3. http://amperka.ru/product/74hc595-shift-out-register
  4. https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout/

   Форум

   Обсудить статью МИКРОСХЕМА SN74HC595N




radioskot.ru

Продолжим тему дачной автоматики, сдвиговый регистр 74HC595 для полива огорода

  • Цена: $0.94 (за 10 штук)

Летом и осенью я сделал немало устройств упрощающих жизнь в дачных условиях. Но наступила зима, да и времени было мало — была пауза в обзорах. Сейчас появилось время, и я продолжил свое творчество для дачи. Данная микросхема позволяет размножить выходы контроллера для управления большИм количеством устройств. Под катом краткий обзор микросхемы и изготовление устройства, ардуинство + программная часть…

Данная микросхема уже обозревалась здесь. Но там был пример, приведенный в большинстве инструкций по этой микросхеме. В данном обзоре постараемся рассмотреть реальное практическое применение.

Посылка дошла за 3 недели, никаких проблем с микросхемами в дороге не произошло.
Вид:

В прошлом обзоре уже привели основные свойства микросхемы, кратко скажу только следующее:
Датшит на микросхему.
Микросхема 74HC595 — один из самых распространённых сдвиговых регистров: синхронный, с регистром данных (latch). Она позволяет увеличивать количество выходов микроконтроллера.
Чип преобразовывает входящий последовательный сигнал на 1 пине (Ds) в выходной параллельный на 8 пинах (Qx). Последовательная передача синхронна: для такта используется дополнительный пин (SHcp). Также отдельным пином управляется регистр данных (STcp), что позволяет изменять сигнал на 8 выходах единовременно, когда все данные переданы.

Таким образом образом из трёх пинов микроконтроллера, такого как Arduino, можно получить 8 цифровых выходов. Из регистров 74HC595 можно делать каскады, подключая один за другим (через пин Q7’), и таким образом из всё тех же 3 входящих линий получать 16, 24, 32 и т.д. цифровых выходов. Естественно, что скорость передачи данных снизится.
Выпускается в корпусах:

В нашем случае микросхема 74HC595N, соответственно она имеет DIP-16 корпус.
Обозначения выводов:

Типовая схема вкл

mysku.me

Микроконтроллеры AVR: 74HC595 (сдвиговый регистр)

Сдвиговый регистр 74HC595 используется в основном для расширения количества выводов микроконтроллера. К примеру нам необходимо к микроконтроллеру ATtiny13 подключить 8 светодиодов. Сделать это попросту было бы не возможно, т.к. микроконтроллер имеет всего 8 ножек, две из которых отведены под питание и одна под сброс. Но если в Вашем арсенале есть сдвиговый регистр, то задача очень сильно упрощается. управлять регистром можно всего по трем ножкам. А что если потребуется подключить 16, 24 или еще больше светодиодов? Все просто, сдвиговый регистр 74HC595 имеет возможность наращивать разрядность при помощи аналогичных микросхем. При этом количество задействованных ножек микроконтроллера останется неизменным.
Рисунок 1 - Схема 74HC595
На рисунке 1 изображена схема сдвигового регистра.
  • DS - вход данных
  • Q7S - выход для каскадного подключения регистров
  • Q0-Q7 - рабочие выходы
  • SHCP - вход тактовых импульсов
  • MR - вход для сброса регистра
  • STCP - вход помещения данных в регистр хранения
  • OE - вход, переводящий рабочие выходы из высокоомного в рабочее состояние

При поступлении тактового импульса на вход SHCP со входа DS считывается первый бит и записывается в младший разряд. Со следующим тактовым импульсом бит из младшего разряда сдвигается на один разряд, а на его места записывается бит, поступивший на вход DS. Так повторяется все время, а при переполнении сдвигового регистра, ранее поступившие биты последовательно появляются на выходе Q7S. Очистка регистра производится подачей низкого уровня на вход MR

Чтобы принятые данные появились на рабочих выходах, их сначала необходимо записать в регистр хранения. Делается это подачей импульса высокого уровня на вход STCP. Данные в регистре хранения изменяются лишь при подаче следующего импульса записи. 

Для перевода рабочих выходов в высокоомное состояние, на вход OE необходимо подать высокий уровень.

Основные характеристики:

  • напряжение питания 2-6 В
  • рабочая частота 2-100 МГц (зависит от напряжения питания и от производителя)
  • максимальный выходной ток 35 мА на выход (75 мА на весь регистр)

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

avrprog.blogspot.com

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

Когда необходимо подключить к контроллеру два десятка светодиодов или еще чего на помощь приходят сдвиговые регистры. Ну не тратить же драгоценные пины микроконтроллера на это дело 🙂 Для эксперимента купил сдвиговый регистр 74HC595 и в этой небольшой статье покажу как с ним работать при помощи самого крохотного контроллера Tiny13.


Посмотрим что из себя представляет эта микруха. Распиновка на рисунке ниже:

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

  • Q0…Q7 — выходы которыми будем управлять. Могут находится в трёх состояниях: логическая единица, логический ноль и  высокоомное Hi-Z состояние
  • GND — земля
  • Q7′ — выход предназначенный для последовательного соединения регистров.
  • MR — сброс регистра.
  • SH_CP — вход для тактовых импульсов
  • ST_CP — вход «защёлкивающий» данные
  • OE — вход переводящий выходы из HI-Z в рабочее состояние
  • DS — вход данных
  • VCC — питание 5 вольт

Для управления нам вполне достаточно всего лишь трёх  выводов а именно: SH_CPST_CP, DS.

Как работает регистр
Все не так сложно, как кажется на первый взгляд.  Когда на тактовом входе SH_CP появляется логическая единица, регистр считывает бит со входа данных DS и записывает его в самый младший разряд. При поступлении на тактовый вход следующего импульса, всё повторяется, только бит записанный ранее сдвигается на один разряд, а его место занимает вновь пришедший бит. Когда все восемь бит заполнились и приходит девятый тактовый импульс то регистр снова начинает заполнятся с младшего разряда  и всё повторятся вновь. Что бы данные появились на выходах Q0…Q7 нужно их «защёлкнуть». Для этого необходимо подать логическую единицу на вход ST_CP. Что бы мы не делали с регистром, данные на выходах не изменятся пока мы вновь не «защёлкнем» их. Отсюда кстати пошло название «регистр-защёлка». Теперь пару слов о других выводах микросхемы. Когда на входе OE лог 1 то выходы находятся в высокоомном состоянии. Когда подаем на этот вход логический 0, тогда выходы работают в нормальном режиме. MR — сбрасывает регистр устанавливая все выходы Q0…Q7 в состояние логического нуля. Для осуществления сброса нужно подать логический ноль на этот вход. После этого «защёлкнуть» данные. В нормальном состоянии на этом выводе должна находится логическая единица. Q7′ предназначен для последовательного соединения сдвиговых регистров. Можно соединить хоть десяток штук!

Программное обеспечение
Для того чтоб управлять этим регистром была написана небольшая библиотека. Вы без труда сможете использовать её в любом своем проекте. Состоит она всего навсего из одной процедуры ShiftRegOut перед вызовом которой нужно загрузить в регистр temp то что должно быть записано в сдвиговый регистр. Код неплохо прокомментирован, поэтому вопросов я думаю не будет. Если будут то прошу задавать их в комментариях. Если паять совсем лениво то можно собрать тестовую схемку в симуляторе Proteus. Файл симуляции прилагается. Если же хочется попробовать в настоящем железе то вот сама схема:

Кстати существуют регистры работающие на вход с параллельной загрузкой и последовательным выводом. Если требуется чтобы в ходе работы программы  назначение пина можно было менять, (делать входом или выходом) то применяют так называемые расширители портов. Они обычно имеют интерфейс i2c но слишком дороги и малораспространенны во всяком случае у нас. Так что сдвиговые регистры наше все =)
Ну и напоследок фото того на чем это всё проверялось и отлаживалось:

Кстати очень удобно для отладки использовать мини макетки для SOIC корпусов. Рекомендую взять на заметку =). Все вопросы складываем в комментарии.

Файл симуляции + исходник
Чисто по приколу записал видео всего этого безобразия

avrdevices.ru

Сдвиговый регистр | Электроника для всех

Иногда требуется ОЧЕНЬ много выходных портов. Особенно если хотим сделать что нибудь на светодиодах. Гирлянду какую-нибудь навороченную. Что делать? Брать под это дело ATMega128 с ее полусотней выводов? Избыточно — для ламеров. Ставить i2с расширитель портов? Дорого. Для мажоров. Тут на помощь из вековых глубин выплывает старая добрая дискретная логика. На этот раз нас выручит грошовый сдвиговый регистр. Возьму, для примера, 74HC164 он же, для любителей совковых трешевых микросхем в неубиваемом каменном корпусе, наш КM555ИР8.

У него есть 8 выходов и четыре входа. R-сброс, С-тактовый, А1 и А2 вход. На самом деле, внутри они заведены через логический элемент 2И-НЕ и идут на D триггеры. D — это такой тип триггера, который по тактовому импульсу схватывает и отправляет на выход то, что у него на входе. Как видишь, тут они цепью стоят ,передавая бит от одного к другому и нет принципиальной разницы сколько их тут будет, восемь штук или восемь миллиардов. Но чем больше, тем дольше по этой эстафете гнать данные до конца. Поэтому мы смело можем эти регистры соединять последовательно.
Получается вот такая схема:

От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.

Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.

А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто 🙂

З.Ы.
Кружок на входе регистра означает, что вход инверсный. Т.е. подал ноль — сработало
Треугольник на входе показывает по какому фронту произойдет срабатывание. Запомнить просто: _/ \_ — это, типа, импульс. А треугольник, как стрелочка, указывает на нужный фронт. ->_/ \_ передний (восходящий фронт) и _/ \_<- задний (нисходящий фронт)

Ну и даташитик напоследок, а еще протеусовская модель, где можно вручную переключателем поперетыкать уровень на входе и потыкать кнопку тактового входа. Правда я там поленился на диоды питание заводить — там по квадратикам логических уровней итак все видно хорошо 🙂

easyelectronics.ru

Отправить ответ

avatar
  Подписаться  
Уведомление о