74Hc595 ардуино. Подключение сдвигового регистра 74HC595 к Arduino: пошаговое руководство

Как подключить сдвиговый регистр 74HC595 к Arduino. Какие преимущества дает использование сдвигового регистра. Как управлять несколькими устройствами с помощью одного регистра. Какой код нужен для работы со сдвиговым регистром на Arduino.

Что такое сдвиговый регистр 74HC595 и зачем он нужен

Сдвиговый регистр 74HC595 — это микросхема, которая позволяет управлять 8 цифровыми выходами, используя всего 3 контакта микроконтроллера. Основные преимущества использования сдвигового регистра:

  • Экономия контактов Arduino — вместо 8 пинов используется всего 3
  • Возможность каскадного соединения нескольких регистров для управления большим количеством устройств
  • Высокая скорость работы за счет аппаратной реализации
  • Низкая стоимость и доступность микросхемы

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

Схема подключения 74HC595 к Arduino

Для подключения сдвигового регистра 74HC595 к Arduino потребуется:

  • Микросхема 74HC595
  • Arduino (любая модель)
  • Макетная плата
  • Соединительные провода
  • 8 светодиодов (для примера)
  • 8 резисторов на 220 Ом

Схема подключения:

  1. Контакт 14 (DS) 74HC595 подключите к цифровому пину 8 Arduino
  2. Контакт 11 (SH_CP) 74HC595 подключите к цифровому пину 12 Arduino
  3. Контакт 12 (ST_CP) 74HC595 подключите к цифровому пину 11 Arduino
  4. Контакт 13 (OE) 74HC595 подключите к GND Arduino
  5. Контакт 10 (MR) 74HC595 подключите к 5V Arduino
  6. Контакт 16 (VCC) 74HC595 подключите к 5V Arduino
  7. Контакт 8 (GND) 74HC595 подключите к GND Arduino
  8. Контакты Q0-Q7 74HC595 подключите к анодам светодиодов через резисторы 220 Ом
  9. Катоды светодиодов подключите к GND Arduino

Программный код для управления 74HC595 на Arduino

Базовый скетч для управления сдвиговым регистром:

«`cpp int latchPin = 11; // ST_CP int clockPin = 12; // SH_CP int dataPin = 8; // DS void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { for (int i = 0; i < 256; i++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, i); digitalWrite(latchPin, HIGH); delay(100); } } ```

Этот код последовательно включает все комбинации светодиодов от 0 до 255. Функция shiftOut() отправляет 8 бит данных в регистр.

Расширение возможностей: каскадное соединение нескольких 74HC595

Для управления большим количеством выходов можно соединить несколько сдвиговых регистров каскадно:

  1. Соедините пин Q7′ первого регистра с пином DS второго
  2. Соедините пины SH_CP обоих регистров
  3. Соедините пины ST_CP обоих регистров

Теперь можно управлять 16 выходами, используя те же 3 пина Arduino. Код нужно изменить, отправляя 16 бит данных вместо 8:

«`cpp void loop() { for (int i = 0; i < 65536; i++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, (i >
> 8)); // Старший байт shiftOut(dataPin, clockPin, MSBFIRST, i); // Младший байт digitalWrite(latchPin, HIGH); delay(100); } } «`

Оптимизация кода: использование библиотеки ShiftRegister74HC595

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

«`cpp #include ShiftRegister74HC595 sr(1, 8, 12, 11); // (кол-во регистров, dataPin, clockPin, latchPin) void setup() {} void loop() { for (int i = 0; i < 8; i++) { sr.set(i, HIGH); // Включаем i-й светодиод delay(500); sr.set(i, LOW); // Выключаем i-й светодиод } } ```

Библиотека автоматически обрабатывает отправку данных, что делает код более читаемым и легким в обслуживании.

Применение 74HC595 в реальных проектах

Сдвиговые регистры 74HC595 широко используются в различных электронных проектах:

  • Светодиодные матрицы и бегущие строки
  • Управление многоразрядными семисегментными индикаторами
  • Расширение портов ввода-вывода для Arduino и других микроконтроллеров
  • Управление множеством реле или других цифровых устройств
  • Создание простых цифровых логических схем

Пример проекта: создание 8×8 светодиодной матрицы с использованием двух 74HC595 для управления строками и столбцами.

Советы по отладке и устранению неисправностей

При работе со сдвиговыми регистрами могут возникнуть некоторые проблемы. Вот несколько советов по их устранению:

  1. Проверьте правильность подключения всех выводов, особенно питания и заземления
  2. Убедитесь, что выход OE подключен к земле для активации выходов
  3. Используйте осциллограф для проверки сигналов на входах DS, SH_CP и ST_CP
  4. При каскадном соединении проверьте правильность подключения Q7′ к DS следующего регистра
  5. Добавьте небольшие задержки между операциями для стабильной работы на высоких скоростях

Если светодиоды мигают хаотично или не загораются вовсе, проверьте порядок подключения и правильность кода.

Заключение: преимущества использования 74HC595 в проектах Arduino

Сдвиговый регистр 74HC595 — мощный инструмент для расширения возможностей Arduino и других микроконтроллеров. Его основные преимущества:

  • Существенная экономия пинов микроконтроллера
  • Возможность управления большим количеством устройств
  • Высокая скорость работы и надежность
  • Простота использования и низкая стоимость
  • Широкие возможности для создания сложных проектов

Освоив работу с 74HC595, вы сможете создавать более сложные и функциональные проекты на базе Arduino, не ограничиваясь количеством доступных пинов. Экспериментируйте и создавайте свои уникальные устройства с помощью этой универсальной микросхемы!


отзывы, фото и характеристики на Aredi.ru

На нашем сайте отображены товары, которые автоматически импортируются с сайта allegro.pl и переводятся на русский язык.

Так как мы не являемся продавцами товара, который отображен на нашем сайте, мы не можем обладать всей информацией о том или ином товаре. Дополнительную информацию о товарах можно узнать несколькими способами:

1. Подробно ознакомиться с описанием. Обычно вся необходимая информация находится в официальном описании на странице лота.

2. Если интересующей вас информации в описании не оказалось, можно задать вопрос напрямую продавцу. Он ответит вам в течение одного рабочего дня.

3. Если вы обладаете богатым опытом серфинга в интернете, возможно, вы сможете найти информацию о данном товаре на различных форумах и других интернет-ресурсах, воспользовавшись глобальными службами интернет-поиска.

4. Если вы не владеете языком или не желаете уточнить информацию по какой-либо другой причине, пожалуйста, обращайтесь к нам — мы с радостью вам поможем. Для того, чтобы мы задали вопрос продавцу, оформите заказ и в комментариях к товару пропишите интересующие вопросы. В течении дня мы сделаем запрос продавцу, комментарии появятся в личном кабинете.

Точный вес товара становится известным, только когда товар поступает на склад. Узнать примерный вес товара можно характеристиках товара, но не все продавцы его пишут.

Избежать некачественного товара можно путем тщательного отбора продавцов, т.е. старайтесь не гнаться за дешевыми товарами, которые продаются у продавцов с низким рейтингом. Доверяйте только проверенным интернет-магазинам. Если вы покупаете товар и сомневаетесь в надёжности продавца, то лучше заказать дополнительные фотографии.

1.​​Ищите по ключевым словам, уточняйте по каталогу слева

Допустим, вы хотите найти фару для AUDI, но поисковик выдает много результатов, тогда нужно будет в поисковую строку ввести точную марку автомобиля, потом в списке категорий, который находится слева, выберите новую категорию (Автозапчасти — Запчасти для легковых авто – Освещение- Фары передние фары). После, из предъявленного списка нужно выбрать нужный лот.

2. Сократите запрос

Например, вам понадобилось найти переднее правое крыло на KIA Sportage 2015 года, не пишите в поисковой строке полное наименование, а напишите крыло KIA Sportage 15 . Поисковая система скажет «спасибо» за короткий четкий вопрос, который можно редактировать с учетом выданных поисковиком результатов.

3. Используйте аналогичные сочетания слов и синонимы

Система сможет не понять какое-либо сочетание слов и перевести его неправильно. Например, у запроса «стол для компьютера» более 700 лотов, тогда как у запроса «компьютерный стол» всего 10.

4. Не допускайте ошибок в названиях, используйте​​всегда​​оригинальное наименование​​продукта

Если вы, например, ищете стекло на ваш смартфон, нужно забивать «стекло на xiaomi redmi 4 pro», а не «стекло на сяоми редми 4 про».

5. Сокращения и аббревиатуры пишите по-английски

Если приводить пример, то словосочетание «ступица бмв е65» выдаст отсутствие результатов из-за того, что в e65 буква е русская. Система этого не понимает. Чтобы автоматика распознала ваш запрос, нужно ввести то же самое, но на английском — «ступица BMW e65».

6. Мало результатов? Ищите не только в названии объявления, но и в описании!

Не все продавцы пишут в названии объявления нужные параметры для поиска, поэтому воспользуйтесь функцией поиска в описании объявления! Например, вы ищите турбину и знаете ее номер «711006-9004S», вставьте в поисковую строку номер, выберете галочкой “искать в описании” — система выдаст намного больше результатов!

7. Смело ищите на польском, если знаете название нужной вещи на этом языке

Вы также можете попробовать использовать Яндекс или Google переводчики для этих целей. Помните, что если возникли неразрешимые проблемы с поиском, вы всегда можете обратиться к нам за помощью.

Экономим выводы для Arduino. Управление сдвиговым регистром 74HC595 по одному проводу

Что не делай на микроконтроллере, все равно, в конечном итоге, получатся часы. А для проектов на Arduino апогеем бесспорно является метеостанция. И вот, обвесив плату всевозможными датчиками, достаточно часто у любителей микроконтроллеров возникает проблема с нехваткой выводов.

Обычно для расширения портов вода/вывода используют сдвиговые регистры типа 74HC595. Но для управления ими требуется целых три вывода! Невероятное расточительство, неправда ли? Ведь можно обойтись всего ОДНИМ! Всех тех, для кого два дополнительных свободных порта являются жизненно необходимыми, приглашаю под кат.


❯ Хорошая идея и плохая реализация от амперки


Совершенно случайно ко мне в руки попала вот такая игрушка — модуль с четырьмя семисегментными индикаторами от амперки. Устройство представляет собой четырех разрядный статический семисегментный дисплей, выполненный на основе сдвиговых регистров 74HC595.

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

Интересна схема коммутации входов модуля. Она выполнена с использованием двух RC цепочек на входах тактирования и управления выходной защелкой и позволяет управлять выходами сдвиговых регистров всего по одному проводу вместо трех. И тут кроется пару нюансов, которые разберем далее.

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

Сразу возникают вопросы к схеме подключения индикаторов. Токоограничивающие резисторы имеют номинал 220Ом, это создает эффект «выжги глаза» и перегружает индикаторы. Такая величина тока могла бы подойти при динамической индикации, но в статике яркость получается слишком высокая. В следующих ревизиях платы резисторы заменили на 510Ом, но для меня и этого много. Я заменил их на 620Ом, при этом ток для сегмента устанавливается примерно 5 мА.

Далее разберемся с подключением сигналов управления. Вход тактирования 11 сдвигового регистра «SHIFR» подключается к порту микроконтроллера напрямую. Вход данных 14 «DATA» подключается к той же линии через RC-цепочку R1C1, время заряда которой составляет примерно 20–25 мкС. Вход управления защелкой 12 «LATCH» подключен через RC-цепочку R2C2, которая заряжается примерно за 250 мкС.

Принцип управления достаточно прост. Если на вход дисплея подать очень короткий импульс около 1 мкС, то RC-цепочки не успевают зарядиться, а так как сдвиговый регистр имеет достаточно высокое быстродействие, то данные в регистр вдвинуться успевают. Таким образом, длительностью импульса можно управлять зарядом конденсаторов и устанавливать необходимый уровень напряжения на входе данных и защелки.

Передача логической единицы производится подачей импульса длительностью примерно 25 мкС и короткой паузы не более 1 мкС. Импульс зарядит конденсатор на входе данных до уровня логической единицы, а короткая пауза не успеет его разрядить. Фронт следующего импульса попадет на тактовый вход и запишет единицу в регистр.

Для записи в сдвиговый регистр логического нуля необходимо, наоборот, сперва подать паузу длиной примерно 30 мкС. Это разрядит конденсатор на входе данных до уровня логического нуля, если он был заряжен в предыдущем периоде. А затем подаем короткий импульс около 1 мкС, чтобы его фронт записал ноль в регистр.

В завершение передачи 24 бит данных для заполнения 4 сдвиговых регистров следует подать импульс длительностью 250 мкС для установки сигнала управления защелкой. Записанные данные поступят на выходы сдвиговых регистров и будут удерживаться там до следующего фронта сигнала «LATCH». Теперь конденсатор следует разрядить, для этого устанавливаем на входе схемы низкий уровень минимум на 250 мкС, прежде чем подавать новые данные.

На этом можно было бы и закончить, если бы не те самые нюансы в работе схемы. Меня насторожил тот факт, что RC цепочки имеют разницу по времени заряда всего на один порядок. Отсюда получается, что конденсатор на входе защелки может полностью зарядиться, если подать 10 единиц подряд. А с учетом того, что уровень логической единицы для 74НС595 начинается с напряжения 3,15В, то для полного заряда конденсатора достаточно подряд подать около 6 логических единиц.

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

Если включать на семисегментном дисплее две единицы подряд, то как раз и получим шесть импульсов подряд, передающих логические единицы. Такая комбинация успевает зарядить конденсатор на входе защелки «LATCH». В результате чего, в момент обновления дисплея наблюдается кратковременное «подмигивание».

На графиках видно, что сигнал «LATCH» на входе управления защелкой сдвигового регистра уже после передачи первого семисегментного кода единицы заряжается практически до уровня логической единицы. В итоге, после каждого такого цикла передачи кода для одного регистра, весь дисплей обновляется. Это приводит к кратковременному появлению «мусора» — семисегментный код попадает не на свои позиции.

Если подобная схема управляет индикаторами, то кратковременное «подмигивание» дисплея может быть некритичным. Но вот для управления реле или чем-то подобным это явно не годится.

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

Проблему решил заменой резистора R2 с 33КОм на 100КОм. Время заряда RC-цепочки увеличилось в несколько раз. Индикатор стал работать лучше. Но все равно разницы между временем заряда конденсаторов на входе данных и защелки было недостаточным для вывода на дисплей четырех единиц. Да и включить при такой схеме больше четырех сдвиговых регистров подряд не получится, т.к. конденсатор С2 все равно может успеть зарядиться до уровня логической единицы.

❯ Доработка схемы


Для окончательной доработки схемы нужно добавить один, а лучше два диода Шоттки. Это ускорит разряда конденсатора С2 и заряда С1. Также эта доработка сокращает общее время, необходимое для обновления дисплея. Резисторы R3R4 добавлены для ограничения разрядного тока конденсаторов.

Если сравнить результаты работы схемы с диодами (левый график) и без них (правый график), становиться видно, что фронты импульсов на входе данных «DATA» и срез импульса на входе управления защелкой «LATCH» стали намного круче. И, самое главное, что конденсатор C2 на входе управления защелкой успевает разрядиться за короткий импульс записи. Теперь можно ни в чем себе не отказывать и подключать практически любое количество сдвиговых регистров.

Текст тестовой программы писал в CodeVisionAVR. Это отличный компилятор, хорошо работает даже на очень слабых компьютерах. Умеет напрямую грузить прошивку в Arduino. Имеет удобный мастер для автоматической настройки периферии, а также большое количество готовых библиотек для разных датчиков, дисплеев и прочего. Работа с портами ввода/вывода производилась напрямую через регистры, это в последствии добавило еще немного возни. В железе просто доработал модуль, немного порезал дорожки, добавил недостающие компоненты и перемычки.

❯ Версия для Arduino


Попытка повторить тоже самое в Arduino IDE привела к краху. Функция digitalWrite работает с портами очень медленно, и добиться паузы меньше 1 мкС между импульсами, сохраняя парадигму arduino-программирования, попросту не возможно. Лучшее время составляет 4 мкС. При этом конденсатор С1 успевает разрядиться до самой границы логической единицы, и стабильность схемы все равно теряется.

Итоговую схему собрал в Proteus 8.6. Библиотеку с моделями Arduino нашел на GitHub. Не самая удобная библиотека, контакты виртуальной модели не попадают в сетку. И пришлось по новой подбирать номиналы схемы, при которых работа регистров будет стабильной.

Текст программы получился следующий. Для управления регистрами по одному проводу можно использовать функцию «shiftRegisterEntry», ее входные параметры пояснены в комментариях.

//Выход для управления индикацией
#define SERIAL_DATA_PORT 12
//Массив для хранения семисегментных кодов
#define MAX_DISPL 4
uint8_t displ[MAX_DISPL]=
  //семисегментные коды цифр 1,2,3,4
  {0b10011001, 0b00001101, 0b00100101, 0b10011111};
//Функция для управления сдвиговым регистром по одному проводу
//uint8_t *data - указатель на массив с данными, 
//                которые выводятся в регистр
//uint8_t amount - количество байт для записи в регистр
void shiftRegisterEntry(uint8_t *data, uint8_t amount){
  //перебираем байты, которые нужно записать в регистры
  for(uint8_t num = 0; num 


Заряд конденсатора С1 производится через открытый диод D1 и резистор R3. Это обеспечивает достаточное смещение между тактовым сигналом «SHIFT» и нарастанием уровня на входе «DATA», чтобы произвести запись в регистр логического нуля.

Разряд конденсатора С1 производится через резистор R1. Его сопротивление значительно выше, и конденсатор не успевает разрядиться до границы логической единицы, если импульс записи производить с помощью функции «digitalWrite». Но и время полного разряда тоже значительно возрастает.

❯ Заключение


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

Не могу сказать, что я готов применить данный способ управления в каком-то своем реальном проекте, но для разминки мозгов вполне подойдет. Хотя, если делать что-то на tiny13 или подобном микроконтроллере, писать программу на С и обращаться к регистрам портов напрямую, время записи регистров сократиться примерно в 4 раза…, но что-то сильно много «если».

© Habrahabr.ru

Отсутствует

Отсутствует

Код 404 страница не найдена. К сожалению, страница отсутствует или перемещена.

Ниже приведены основные подразделы этого сайта.


  • Главная страница General Electronics
  • Мой канал электроники на YouTube
  • Проекты микроконтроллеров Arduino
  • Raspberry Pi и Linux
  • Пересмотр регистров портов Arduino
  • Digispark ATtiny85 с MCP23016 GPIO Expander
  • Программа безопасного построения H-моста
  • Построить управление двигателем H-Bridge без фейерверков
  • MOSFET H-мост для Arduino 2
  • Гистерезис компаратора и триггеры Шмитта
  • Учебное пособие по теории компараторов
  • Фотодиодные схемы, работа и использование
  • Оптопара MOSFET Реле постоянного тока с фотогальваническими драйверами
  • Подключение твердотельных реле Crydom MOSFET
  • Схемы фотодиодных операционных усилителей.
    Учебное пособие 9.0015
  • Входные цепи оптопары для ПЛК
  • h21L1, 6N137A, FED8183, TLP2662 Оптопары с цифровым выходом
  • Цепи постоянного тока с LM334
  • LM334 Цепи CCS с термисторами, фотоэлементами
  • LM317 Цепи источника постоянного тока
  • TA8050P Блок управления двигателем H-Bridge
  • Оптическая изоляция блоков управления двигателем H-Bridge
  • Полностью NPN-транзисторный блок управления двигателем H-Bridge
  • Основные симисторы и SCR
  • Твердотельные реле переменного тока с симисторами
  • Светоактивируемый кремниевый выпрямитель (LASCR)
  • Базовые схемы управления транзисторами для микроконтроллеров
  • ULN2003A Транзисторная матрица Дарлингтона с примерами схем
  • Учебное пособие по использованию силовых транзисторов Дарлингтона TIP120 и TIP125
  • Управление силовыми транзисторами 2N3055-MJ2955 с транзисторами Дарлингтона
  • Общие сведения о биполярных транзисторных переключателях
  • Учебное пособие по переключению мощных N-канальных МОП-транзисторов
  • P-Channel Power MOSFET Switch Учебное пособие
  • Сборка транзисторного управления двигателем H-Bridge
  • H-мост управления двигателем с силовыми МОП-транзисторами
  • Дополнительные примеры схем H-моста на полевых МОП-транзисторах
  • Сборка высокомощного транзисторного управления двигателем H-Bridge
  • Теория и работа конденсаторов
  • Сборка лампового AM-радиоприемника 12AV6
  • Катушки для высокоселективного кристаллического радиоприемника
  • Добавление двухтактного выходного каскада в аудиоусилитель Lm386
  • Исправление источника питания
  • Базовые силовые трансформаторы
  • Схемы стабилизатора транзистор-стабилитрон
  • Советы и рекомендации по регуляторам напряжения серии LM78XX
  • Биполярные источники питания
  • Создайте регулируемый источник питания 0–34 В с помощью Lm317
  • Использование датчиков Холла с переменным током
  • Использование переключателей и датчиков на эффекте Холла
  • Использование ратиометрических датчиков Холла
  • Использование датчиков Холла с Arduino-ATMEGA168
  • Простой инвертор 12-14 В постоянного тока в 120 В переменного тока
  • Обзор цепей оконного компаратора
  • Автоматическое открытие и закрытие окна теплицы
  • La4224 Аудиоусилитель мощностью 1 Вт
  • H-мост управления двигателем с мощными МОП-транзисторами Обновлено
  • Обновлено в сентябре 2017 г. :
  • Веб-мастер
  • Бристоль, Юго-Западная Вирджиния
  • Наука и технологии
  • 2017 Обновления и удаления веб-сайта
  • Хобби Электроника
  • Конституция США
  • Христианство 101
  • Религиозные темы
  • Электронная почта

  » Главная » Электронная почта » Пожертвовать » Преступление » Хобби-электроника
  » Экологичность » Расизм » Религия » Бристоль VA/TN

» Архив 1 » Архив 2 » Архив 3 » Архив 4 » Архив 5
  » Архив 6 » Архив 7 » Архив 8 » Архив 9


 

Веб-сайт Copyright Lewis Loflin, Все права защищены.

Raspberry Pi 74HC595 Последовательный регистр сдвига — Robo India || Учебники || Изучите Ардуино |