Arduino:Примеры/Управление светодиодами с помощью сдвигового регистра 74HC595: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
 
(не показаны 2 промежуточные версии 2 участников)
Строка 2: Строка 2:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Управление светодиодами с помощью сдвигового регистра 74HC595=
=Управление светодиодами с помощью сдвигового регистра 74HC595=
Строка 78: Строка 78:
==Код==
==Код==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
#define SER  8                            // Контакт для ввода последовательных данных в сдвиговый регистр
#define SER  8                            // Контакт для ввода последовательных данных в сдвиговый регистр
#define LATCH 9                            // Тактовый контакт для регистра данных (контакт-защелка)  
#define LATCH 9                            // Тактовый контакт для регистра данных (контакт-защелка)  
Строка 112: Строка 112:


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}
[[Категория:Пример]]
[[Категория:Пример]]
[[Категория:Примеры]]
[[Категория:Примеры]]
[[Категория:Пример программирования Arduino]]
[[Категория:Пример программирования Arduino]]
[[Категория:Примеры программирования Arduino]]
[[Категория:Примеры программирования Arduino]]

Текущая версия от 12:36, 20 мая 2023

Проверка/Оформление/Редактирование: Мякишев Е.А.



Управление светодиодами с помощью сдвигового регистра 74HC595

Данный пример демонстрирует как управлять 8-ю светодиодами задействуя только 3 цифровых контакта Arduino. В этом нам поможет сдвиговый регистр 74HC595.

Сдвиговый регистр это синхронное устройство, он принимает данные по нарастающему фронту сигнала. В данном случае, когда мы подаем на вход SH_CP сдвигового регистра 74HC595 высокий уровень сигнала, все значения, хранящиеся в нем сдвигаются на одну позицию и происходит запись в первую ячейку значения которое установлено на входе DS сдвигового регистра 74HC595. Данные из последней ячейки или отбрасываются или передаются на выход Q7"(при каскадном подключении). За восемь тактов мы можем загрузить в регистр сдвига новые значения. При подаче на вход ST_CP сдвигового регистра 74HC595 высокого уровня напряжения, происходит вывод значений, хранящихся в ячейках, на выходы регистра.

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

Она принимает в качестве аргументов:

  • номер контакта Arduino, подключенный к контакту DS ввода последовательных данных сдвигового регистра;
  • номер контакта Arduino, подключенный к тактовому контакту SH_CP сдвигового регистра;
  • порядок выдачи битов;
    • MSBFIRST - старший бит будет отправлен первым;
    • LSBFIRST - младший бит будет отправлен первым;
  • значение для вывода на выводы сдвигового регистра;

Необходимые компоненты

Схема


Распиновка сдвигового регистра 74HC595
Контакты 1-7, 15 Q0-Q7 Выходные контакты
Контакт 8 GND «Земля», Vss
Контакт 9 Q7’’ Контакт для вывода последовательных данных
Контакт 10 MR Контакт, позволяющий «очистить» значения на всех выходных контактах и выставить их на LOW (если подать на него LOW)
Контакт 11 SH_CP Тактовый контакт для сдвигового регистра
Контакт 12 ST_CP Тактовый контакт для регистра данных (контакт-защелка)
Контакт 13 OE Контакт, разрешающий вывод данных (если подать на него LOW)
Контакт 14 DS Контакт для ввода последовательных данных
Контакт 16 Vcc Контакт для питания напряжением с положительным зарядом

Код

#define SER   8                            // Контакт для ввода последовательных данных в сдвиговый регистр
#define LATCH 9                            // Тактовый контакт для регистра данных (контакт-защелка) 
                                           // служит для одновременного вывода полученных последовательных данных  
                                           // на параллельные выходы сдвигового регистра
#define CLK   10                           // Тактовый контакт для сдвигового регистра
                                           // При подаче HIGH происходит запись одного бита в сдвиговый регистр

void setup()
{
  //Установка выводов как выходов
  pinMode(SER, OUTPUT);
  pinMode(LATCH, OUTPUT);
  pinMode(CLK, OUTPUT);
  
  digitalWrite(LATCH, LOW);                // устанавливаем LATCH в LOW, чтобы значения на параллельных выходах
                                           // сдвигового регистра не изменялись во время ввода последовательных 
                                           // данных
  shiftOut(SER, CLK, MSBFIRST, B11101010); // ввод последовательных данных в сдвиговый регистр
  digitalWrite(LATCH, HIGH);               // устанавливаем LATCH в HIGH для вывода значений
                                           // на параллельные выводы сдвигового регистра
}

void loop()
{
  // В этой секции мы ничего не делаем
}

См.также

Внешние ссылки