74Hc595 описание на русском – Подключение семисегментных индикаторов с помощью сдвигового регистра 74HC595. Делаем простой термометр на Attiny13 и LM35

Сдвиговый регистр 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 / Блог им. 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 порта можно целую клавиатуру :)

we.easyelectronics.ru

Микроконтроллеры 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

  • Автор
    Medved
  • Дата 14 июля 2010 17:02

Когда необходимо подключить к контроллеру два десятка светодиодов или еще чего на помощь приходят сдвиговые регистры. Ну не тратить же драгоценные пины микроконтроллера на это дело 🙂 Для эксперимента купил сдвиговый регистр 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

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

Не большой экскурс в мир Интегральных Схем. Интегральная Схема (ИС или «ICs — integrated circuit standard», сейчас можно услышать что микросхемы стали называть «чипами»), так вот «чип» или микросхема, это электронное устройство встроенное в небольшой, как правило, пластиковый корпус. Есть тысячи различных видов ИС, доступных для использования, из которых можно собрать наиполезнейшие вещи, для любых сфер деятельности.

Сдвиговый Регистр 74HC595 — Интегральная Схема состоящая (вообще-то она состоит из трех компонентов: 8-битный сдвиговый регистр, 8-битный регистр хранения, выходной буфер с тремя состояниями), но для первого знакомства, достаточно знать про первые два, — регистр сдвига и регистр хранения.

 

Внутренняя структура Регистра Сдвига 74HC595

Чтобы регистр сдвига начал принимать данные на своем 14-ом входе (DS) ему нужен специальный синхронизирующий сигнал ((он поступает на 11 вход (SH CP)), после того как сигнал получен, данные в виде нулей и единичек, последовательно, т.е. один за другим начинают его заполнять. Как только байт будет «считан» и все 8 бит распределены по своим местам, их можно передать в регистр хранения ((для того чтобы они потом появились на выходах (в выходном буфере)). Для этого есть еще один специальный вход 12 (ST CP), как только на этом входе появляется сигнал логический «0» (LOW), поступившие данные «защелкиваются» и если на 13 (OE) входе тоже присутствует единица (HIGH), появляются на выходах Q0 — Q7.
Чтобы очистить регистр от данных, нужно подать сигнал логического нуля на его 10 вход (MR), это осуществит сброс регистра, установив выходы в состояние логического нуля. Да и еще! Хорошим решением будет подать логическую единицу на 12 (ST CP) вход, т.к. после подачи питания на выходах может присутствовать не определенное значение и лучше его за ранее «определить».

Конечно это всё очень упрощенно, но по моему этого достаточно, для того чтобы начать эксперименты с этой Интегральной Схемой «Сдвиговый Регистр» 74HC595 и Arduino, в частности с Arduino и Shift Registr опыт №14 — СКОРО!

arduinokit.ru

74hc595 и борьба с помехами

Теперь про различные сбои в связи с наводками и особенности выноса 74HC595 за пределы платы управляющего контроллера. (первая часть)

Делал я девайс с множеством управляющих коммутаторов (до 16-ти) на 220v (использовал опто-симисторы с контролем нуля). У девайса имеелся LCD-экранчик, клавиатурка, всякие симпатичные лампочки и все это добро нужно было засунуть в ящик.

Контроллер логично расположил на дверке ящика (т.к. там экран и клава), а силовую часть на задней стенке (преобразователь 220в->5в там же). Соотв. что бы не тянуть кучу проводов между дверкой и внутренностями, решил на силовую часть сигнал передавать по последовательной шине (т.е. задача под 595-регистр). Получилось между дверкой и задней стенкой 5 соединительных линий  (3 – для регистра и 2 – для питания), т.е. аккуратный такой шлейфик.

Когда дело дошло до тестирования с нагрузками, начались редкие самопроизвольные включения портов. Что совсем недопустимо, особенно для управления ядреным реактором.

Причина обнаружилась в ловле импульсных наводок на соединительный шлейф (который 20см длинной). Соотв. в регистр писалась всякая дрянь и он радостно включал симмисторы (запускал ракеты и включал самоуничтожение).

Происходило это не смотря на наличие подтягивающих к питанию резисторов (2.2кОм) на входах регистра. Пришлось ставить в параллель еще и конденсаторы (220пФ). Напаял прямо поверх резисторов, благо и те и другие в SMD-корпусе (0805).

Собственно никакого изобретения в этом нет – у CMOS компонент очень высокое входное сопротивление и в общем-то  все логично. Но все равно неожиданно.

Теперь про обрыв шлейфа.

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

И тут нам пригодится вход регистра OE (который на типовых схемах просто сидит на земле). Пока на входе OE высокий уровень, все выходы в отключенном (высокоимпендансном) состоянии, т.е. на них ни ноль, ни единица – про

vms11.wordpress.com