Инфоурок Информатика Рабочие программыМножим выходы с помощью сдвигового регистра 74HC595

Множим выходы с помощью сдвигового регистра 74HC595

Скачать материал

«Робототехника». Уровень 5. Занятие 4.

Тема занятия: Сдвиг регистра.

Продолжительность занятия: 2 часа.

 

Множим выходы с помощью сдвигового регистра 74HC595

Рассмотрим типичную ситуацию, когда вам нужно больше выходов (пинов), чем может предложить контроллер Arduino. В этом случае самый простой выход — использовать сдвиговый регистр. В данном примере используется 74HC595.

74HC595 — восьмиразрядный сдвиговый регистр с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой и тремя состояниями на выходе.

Другими словами этот регистр позволяет контролировать 8 выходов, используя всего несколько выходов на самом контроллере. При этом несколько таких регистров можно объединять последовательно для каскадирования. Другие подходящие регистры можно поискать по комбинации "595" и "596" в серийном номере. Так, например, STP16C596 может управлять 16 светодиодами одновременно без использования дополнительных резисторов.

В данной схеме используется принцип синхронизированной последовательной передачи сигналов. Необходимые значения сигнала (биты HIGH или LOW)  передаются в регистр один за другим, при этом регистр получает синхронизирующий сигнал, который заставляет его считать сигнал с входа. Когда байт (1 байт = 8 бит) считан, значения всех 8 бит распределены по выходам. То есть передаем в регистр сигналы последовательно, на выходах регистра имеем параллельно 8 сигналов.

74HC595 может отдавать сигналы не только параллельно, но и последовательно. Это необходимо при объединении нескольких регистров, для получения 16 и более выходов. В этом случае первые 8 бит сигнала передаются на следующий регистр для параллельного вывода на нем, об этом будет рассказано более подробно во втором примере.

Три возможных состояния на выходе, упомянутые выше, означают, что выход регистра может иметь не только логический ноль или единицу (HIGH или LOW), но и быть в высокоомном (высокоимпедансном) состоянии — когда выход отключен от схемы. В высокоомное состояние не может быть переведен отдельный выход, а только все выходы регистра разом. Если мы говорим об управлении светодиодами, это может быть полезно в случае, когда мы хотим переключить управление ими на другой контроллер. В примере ниже это состояние никак не используется и довольно редко может быть полезно.

Распиновка входов/выходов регистра

http://arduino.ru/sites/default/files/projects/74HC595/74HC595_pin_diagram.png

Пины 1-7, 15

Q0 " Q7

Параллельные выходы

Пин 8

GND

Земля

Пин 9

Q7"

Выход для последовательного соединения регистров

Пин 10

MR

Сброс значений регистра. Сброс происходит при получение LOW

Пин 11

SH_CP

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

Пин 12

ST_CP

Синронизация ("защелкивание") выходов

Пин 13

OE

Вход для переключения состояния выходов из высокоомного в рабочее

Пин 14

DS

Вход для последовательных данных

Пин 16

Vcc

Питание

Пример с одним регистром

Подключим:

·         GND (пин 8) на землю

·         Vcc (пин 16) к питанию 5В

·         OE (пин 13) на землю

·         MR (пин 10) к питанию 5В

Итак, мы запитали регистр и сделали все выходы активными. Это несколько упрощенный способ подключения, так как в момент подачи питания на схему на выходах будут случайные значения. Можно контролировать пин MR и OE непосредственно с Arduino, чтобы обнулить входы и/или подключить выходы в нужный момент. Для упрощения схемы и минимизации количества задействованных выходов Arduino мы будем использовать более простую схему, так как значения регистров и выводов будут перезаписаны, как только программы начнет работать. 

Запитка сдвигового регистра 74HC595

Соединяем с Arduino:

·         DS (пин 14) с 11-ым цифровой выход Arduino (на схеме синий провод)

·         SH_CP (пин 11) с 12-ым цифровым выходом (желтый провод)

·         ST_CP (пин 12) c 8-ым (зеленый провод)

Далее эти выходы в тексте и коде именуются dataPin, clockPin и latchPin соответственно. Обратите внимание на конденсатор 0.1 микрофарада на latchPin, он минимизирует шум в схеме при подаче "защелкивающего" импульса.

подключения сдвигового регистра к Arduino

Подключаем светодиоды к выходам регистра 74HC595, катод (короткая ножка) светодиода подключается к общей земле, а анод (длинная ножка) через ограничительный 220-ОМ резистор к выходам регистра. При использовании регистров отличных от  74HC595 следует свериться с документацией и проверить схему подключения. К некоторым регистрам светодиоды подключаются наоборот — катод к выходам.

Подключение светодиодов к 74HC595

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

Схема подключения светодиодов к Arduino через регистр 74HC595

Ниже приведен код трех программ. Первая, "Hello world", выводит значения байта от 0 до 255. Вторая  по одному включает светодиоды. Третья циклически проходит по массиву.

временная диаграма сигналов регистратаблица логики сдвигового регистраПониманию кода могут помочь "временная диаграмма сигналов" регистра и "таблица логики". Когда clockPin переглючается с LOW на HIGH, регистр считывает значения с DS пина. По мере считывания данные записываются во внутреннюю память. Когда latchPin  переключается с LOW на HIGH, данные "защелкиваются", то есть передаются на выходы регистра, включая светодиоды.

 Код примера 1.1

показать код

Код примера 1.2

показать код

Пример использования каскада сдвиговых регистров

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

Подключаем второй регистр к питанию и общей земле точно так же, как и первый.

подключаем второй сдвиговый регистр 74HC595

Далее DS вход (пин 14) подключается к Q7' выходу (пин 9) первого регистра (синий провод). А SH_CP (пин 11) и ST_CP (pin 12) подключаются параллельно регистру к соответствующим входам первого регистра. Желтый и зеленый провод соответственно.

каскадируем вторым регистром 74HC595

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

подключение светодиодов к второму регистру

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

схема подключения каскада из двух сдвиговых регистров к Arduino

 

Код примера 2.1

//**************************************************************//

//  Name    : shiftOutCode, Hello World                               

 

//  Author  : Carlyn Maw,Tom Igoe, David A. Mellis

//  Date    : 25 Oct, 2006   

 

//  Modified: 21 Mar 2010 

//  Modified: 19 Feb 2011                              

 

//  Version : 2.0                                            

//  Notes   : Программа использует два сдвиговых регистра 74HC595

 

//          : для вывода значений от 0 до 255                         

//****************************************************************

 

 

//Пин подключен к ST_CP входу 74HC595

 

int latchPin = 8;

//Пин подключен к SH_CP входу 74HC595

 

int clockPin = 12;

//Пин подключен к DS входу 74HC595

 

int dataPin = 11;

 

 

 

 

 

void setup() {

  //устанавливаем режим OUTPUT

 

  pinMode(latchPin, OUTPUT);

  pinMode(clockPin, OUTPUT);

 

  pinMode(dataPin, OUTPUT);

}

 

 

void loop() {

 

  // отсчитываем от 0 до 255  и отображаем значение на светодиоде

  for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {

 

    // устанавливаем синхронизацию "защелки" на LOW

    digitalWrite(latchPin, LOW);

 

    // передаем отсчет для вывода на зеленые светодиоды

    shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); 

 

    // передаем обратный отсчет  для вывода на красные светодиоды

    shiftOut(dataPin, clockPin, MSBFIRST, 255-numberToDisplay);

 

    //"защелкиваем" регистр, тем самым устанавливая значения на выходах

    digitalWrite(latchPin, HIGH);

 

    // пауза перед следующей итерацией

    delay(500);

 

  }

}

Код примера 2.2:

/*

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

 

сдвиговым регистрам 74HC595 .Created 22 May 2009

 Modified 23 Mar 2010

 

 by Tom Igoe

 */

 

 

//Пин подключен к ST_CP входу 74HC595

 

const int latchPin = 8;

//Пин подключен к SH_CP входу 74HC595

 

const int clockPin = 12;

//Пин подключен к DS входу 74HC595

 

const int dataPin = 11;

 

 

char inputString[2];

 

 

void setup() {

   //устанавливаем режим OUTPUT

 

  pinMode(latchPin, OUTPUT);

  pinMode(dataPin, OUTPUT); 

 

  pinMode(clockPin, OUTPUT);

  Serial.begin(9600);

 

  Serial.println("reset");

}

 

 

void loop() {

 

  // проходим циклом по всем 16 выходам двух регистров

  for (int thisLed = 0; thisLed < 16; thisLed++) {

 

    // записываем сигнал в регистр для очередного светодиода

    registerWrite(thisLed, HIGH);

 

    // если это не первый светодиод, то отключаем предыдущий

    if (thisLed > 0) {

 

      registerWrite(thisLed - 1, LOW);

    }

 

    // если это первый светодиод, то отключаем последний

    else {

 

      registerWrite(15, LOW);

    }

 

    // делаем паузу перед следующией итерацией

    delay(250);

 

  }

 

 

}

 

 

// этот метод отсылает бит на сдвиговый регистр

 

 

void registerWrite(int whichPin, int whichState) {

  // для хранения 16 битов используем unsigned int

 

  unsigned int bitsToSend = 0;   

 

 

  // выключаем светодиоды на время передачи битов

  digitalWrite(latchPin, LOW);

 

 

  // устанавливаем HIGH в соответствующий бит

 

  bitWrite(bitsToSend, whichPin, whichState);

 

 

  // разбиваем наши 16 бит на два байта

  // для записи в первый и второй регистр

 

  byte registerOne = highByte(bitsToSend);

  byte registerTwo = lowByte(bitsToSend);

 

 

  // "проталкиваем" байты в регистры

 

  shiftOut(dataPin, clockPin, MSBFIRST, registerTwo);

  shiftOut(dataPin, clockPin, MSBFIRST, registerOne);

 

 

  // "защелкиваем" регистр, чтобы биты появились на выходах регистра

 

  digitalWrite(latchPin, HIGH);

}

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Множим выходы с помощью сдвигового регистра 74HC595"

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Нутрициолог

Получите профессию

Интернет-маркетолог

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

Рассмотрим типичную ситуацию, когда вам нужно больше выходов (пинов), чем может предложить контроллер Arduino. В этом случае самый простой выход — использовать сдвиговый регистр. В данном примере используется 74HC595.

74HC595 — восьмиразрядный сдвиговый регистр с последовательным вводом, последовательным или параллельным выводом информации, с триггером-защелкой и тремя состояниями на выходе.

Другими словами этот регистр позволяет контролировать 8 выходов, используя всего несколько выходов на самом контроллере. При этом несколько таких регистров можно объединять последовательно для каскадирования. Другие подходящие регистры можно поискать по комбинации "595" и "596" в серийном номере. Так, например, STP16C596 может управлять 16 светодиодами одновременно без использования дополнительных резисторов.

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 662 852 материала в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 20.10.2018 432
    • DOCX 370.3 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Жакипова Молдир Асылбеккызы. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Жакипова Молдир Асылбеккызы
    Жакипова Молдир Асылбеккызы
    • На сайте: 5 лет и 7 месяцев
    • Подписчики: 1
    • Всего просмотров: 59057
    • Всего материалов: 18

Ваша скидка на курсы

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

Курс профессиональной переподготовки

Секретарь-администратор

Секретарь-администратор (делопроизводитель)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Создание и обеспечение электронного архива с использованием информационно-коммуникационных технологий

Специалист по формированию электронного архива

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 22 регионов
  • Этот курс уже прошли 36 человек

Курс профессиональной переподготовки

Разработка и сопровождение требований и технических заданий на разработку и модернизацию систем и подсистем малого и среднего масштаба и сложности

Системный аналитик

600 ч.

9840 руб. 5600 руб.
Подать заявку О курсе
  • Сейчас обучается 64 человека из 34 регионов
  • Этот курс уже прошли 83 человека

Курс профессиональной переподготовки

Информационные технологии в профессиональной деятельности: теория и методика преподавания в образовательной организации

Преподаватель информационных технологий

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 191 человек из 54 регионов
  • Этот курс уже прошли 971 человек

Мини-курс

Налог на прибыль и учет доходов/расходов

2 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Основы русского языка: морфология, синтаксис, лексика

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 23 человека из 13 регионов
  • Этот курс уже прошли 13 человек

Мини-курс

Планирование проектов

4 ч.

780 руб. 390 руб.
Подать заявку О курсе