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-х индикаторов будет работать и какую кнопку будем опрашивать. А второй, какие из сегментов загорятся.

МИКРОСХЕМА 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


Динамический ввод и вывод на 74HC595 / Блог им. CyberCat / Сообщество EasyElectronics.ru Сей опус я решил посвятить динамическому вводу/выводу, но не программной его составляющей, здесь этого навалом, а железу. Скучных примеров исходников выкладывать не буду. Так вот, собственно, не нарадуюсь на элементарный и всем известный регистр 74HC595. Уже давно в моих конструкциях – он единственный из присутствующей логики, помимо самого контроллера. Вдохновившись некоторыми постами типа 3D Globe V2.0, и вспомнив, что у меня завалялись светодиодные матрицы 5х7 и решил из них сделать некое табло или часы какие-нить (ну не вставляют меня уже обычные 7-ми сегментники, прошлый век! 🙂 ). Подумал, как же связать обработку вывода и микроконтроллер, используя минимум портов? Ответ нашел – использовать линейку из 595-ых, всего 3 управляющих провода +2 питание, итого 5! Вся прелесть в том, что у регистра есть фиксация параллельного вывода, а значит не нужно печалиться о строгом времени вывода и прочих дрожаний и смазываний изображения! Получилось вот что:

Кстати, на прыгающие шарики меня вдохновил Oss 🙂

Что касается вывода – все просто и понятно, но мне нужно было посадить еще 10 кнопок и, естественно, на минимум портов. Использовать аноды индикации не покатит, это уже не укладывается в 3 провода к блоку индикации. А все технические приёмы, описанные на этом сайте, какие-то уж чересчур мудрёные и неудобоваримые (использовать К155ИР13 это, простите, какой-то муветон), легче уж и вправду использовать еще один контроллер. Но мы не ищем лёгких путей! На выручку опять пришел 595! И опять 3 порта! Но на эти 3 порта можно посадить хоть 1000 кнопок! Тока наращивай регистры!


Суть в том, что пока не прошел положительный перепад на PCL(12) регистра, данные на нем будут отображаться, в независимости от того что творится на выводах SI(14) и SCL(11), а значит, что порты, управляющие этими выводами можно перевести на ввод и считывать с них состояние кнопок! Главное, перед считыванием, быстро подготовить нужную группу этик кнопок. А чтобы выходные данные регистра не мешали его программированию их нужно перевести в Z-состояние. А управлять Z-состоянием можно тем же выводом PCL, ведь он не нужен пока мы работаем с последовательным вводом данных.
Если в последовательности действий, то так:
1) Подаем низкий уровень на PCL/Z (Выводы регистра переходят в Z)
2) Переводим SI и SCL на вывод, и передаем выборку группы (лог. ноль на нужную группу)
3) Переводим SI и SCL на ввод.
4) Поднимаем PCL/Z.
5) Считываем данные с SI и SCL
6) Повторяем цикл…
Небольшое замечание – из-за того что при переводе на ввод произойдет переход с 0 на 1 (подтягивающий резистор) вывода SCL, использовать Q0 регистра нельзя, потому как произойдет сдвиг и Q0 загрузится неопределенным значением от SI (как показал опыт – всегда по разному.) Но это касается только первого регистра, в следующей секции регистров его смело можно использовать.
Вобщем, посадить на эти 3 порта можно целую клавиатуру :)

Продолжим тему дачной автоматики, сдвиговый регистр 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 корпус.
Обозначения выводов:

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

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

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


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

74HC595 распиновка

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

  • 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. Файл симуляции прилагается. Если же хочется попробовать в настоящем железе то вот сама схема:

74HC595 схема

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

74HC595 отладка

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

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

90000 90001 74HC595 SPI 90002 90003 90004 90005 90006 90007 90008 90009 90005 90008 90012 90005 90014 90015 90005 90017 90018 90005 90020 90021 90007 90023 90008 90007 90005 90017 90028 90029 90028 90031: 90032 90029 90028 90031: 90032 90029 90007 90023 90040 90007 90023 90040 90007 90023 90040 90007 90023 90040 90007 90023 90040 90053 90028 90029 90028 90029 90028 90029 90028 FUNCTION TABLE 90029 90062 90005 90064 INPUTS 90007 90066 FUNCTION 90007 90023 90069 90008 SER 90007 90008 SRCLK 90007 90008 SRCLR 90007 90008 RCLK 90007 90008 OE 90007 90023 90069 90008 X 90007 90008 X 90007 90008 X 90007 90008 X 90007 90008 H 90007 90092 Outputs QA-QH are disabled 90007 90023 90069 90008 X 90007 90008 X 90007 90008 X 90007 90008 X 90007 90008 L 90007 90092 Outputs QA-QH are enabled 90007 90023 90069 90008 X 90007 90008 X 90007 90008 L 90007 90008 X 90007 90008 X 90007 90092 Shift register is cleared 90007 90023 90069 90008 L 90007 90008? 90007 90008 H 90007 90008 X 90007 90008 X 90007 90092 First stage of the shift register goes low 90053 Other stages store the data of previous stage, respectively 90007 90023 90069 90008 H 90007 90008? 90007 90008 H 90007 90008 X 90007 90008 X 90007 90092 First stage of the shift register goes high 90053 Other stages store the data of previous stage, respectively 90007 90023 90069 90008 X 90007 90008 X 90007 90008 X 90007 90008? 90007 90008 X 90007 90092 Shift-register data is stored in the storage register 90007 90023 90040 90168 74HC595 90169 90028 OE 90029 90028.74HC595. . 90029 90028. . 90029 90028 MR 90029 90028. STCP. 90029 90028. 90029 90028 DS 90029 90028 8-. 90029 90028 SHCP 90029 90028 SHCP, DS. ,. (Q0 Q1),. . 90029 90028 STCP 90029 90028 Q0Q7 STCP. STCP. 90029 90168 74HC595 90169 90028 90031 Q0Q7 (QA-QH) 90032.:, 90029 90028 90031 Q7 ‘(QH’) 90032. 90029 90028 90029 90206 90005 90008 90209: 90210, — 25,. Vcc GND. , 70-150. 90007 90023 90040 90028: 90029 90216 90005 90008 90007 90008 90007 90008 488 Kb Engl 74HC595 TI 90007 90023 90005 90008 90007 90008 90007 90008 290 Kb Engl 74HC595 ST 90007 90023 90005 90008 90007 90008 90007 90008 120 Kb Engl 74HC595 ON 90007 90023 90040 90242 90242 90053 — — DOC — — — — — — — 90053 90007 90040.90000 Basics of 74HC595 90001 90002 Hello friends, I hope you all are having fun in your lives. In today’s tutorial, I am going to give you a detailed overview of this amazing shift register 74HC595. It must have happened to you that you are working on some project and you have to interface many LEDs etc with your microcontroller and at some point, you have no pin left for more LEDs. At that point, this shift register 74HC595 comes handy. 74HC595 is used to increase the output pins of your Microcontroller.90003 90002 If you are new to this shift register then I would suggest you to have a look at 74HC595 Pinout and download its Proteus Simulation.So, let’s have a look at its basic details: 90003 90002 90003 90008 Basics of 74HC595 90009 90010 90011 74HC595 is a shift register which works on Serial IN Parallel OUT protocol. 90012 90011 It receives data serially from the microcontroller and then sends out this data through parallel pins. 90012 90011 We can increase our output pins by 8 using the single chip.90012 90011 We can also connect more than 1 shift register in parallel. 90012 90011 So, let’s say I have connected three shift registers with our microcontroller then our output pins are increased by 8 x 3 = 24. 90012 90011 I hope I have cleared the idea, so now let’s have a look at its pinout. 90012 90023 90008 74HC595 Pinout 90009 90010 90011 As you can see from the figure it has below pinouts: 90010 90011 Pin # 1 to Pin # 7 are Output Pins Q1 — Q7.90012 90011 Pin # 15 is also Output Pin Q0. 90012 90011 Pin # 8 is Ground. 90012 90011 Pin # 9 is Q7 ‘(OutPut Serial Data). 90012 90011 Pin # 10 is Master Reset. 90012 90011 Pin # 11 is SHCP which is short for Shift Register Clock Input. 90012 90011 Pin # 12 is STCP which is short for Storage Register Clock Input. 90012 90011 Pin # 13 is OE which is Output Enable. 90012 90011 Pin # 14 is DS which is Serial Data input. 90012 90011 Pin # 16 is Vcc where we have to supply the power + 5V.90012 90023 90012 90011 You can quite easily interface this shift register with different microcontrollers such as Arduino, PIC Microcontroller, Atmel etc. 90012 90023 90008 Applications of 74HC595 90009 90002 It has a wide range of applications, especially in LED Boards. You must have seen the large LED boards where we have to control a lot of LEDs with a single microcontroller, 74HC595 is used in such projects a lot. 90003 90002 I hope you will like this article, let me know if you have any questions about this shift register and I will surely help you out.Thanks for reading, take care, bye bye !!! 🙂 90003 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *