Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 215
Из них просматривают:
Аналоги: 106. Даташиты: 60. Инструкции: 16. Новости: 9. Остальное: 5. Программы: 2. Форум: 17.
Участников: 2
Гостей: 213

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Функция shiftOut()

Описание
Осуществляет побитовый сдвиг и вывод байта данных, начиная с самого старшего (левого) или младшего (правого) значащего бита. Функция поочередно отправляет каждый бит на указанный вывод данных, после чего формирует импульс (высокий уровень, затем низкий) на тактовом выводе, сообщая внешнему устройству о поступлении нового бита.
Примечание: Для взаимодействия с устройствами, тактируемыми по фронту импульсов, перед вызовом shiftOut() необходимо убедиться, что тактовый вывод переключен в низкий уровень, например с помощью функции digitalWrite(clockPin, LOW).
Функция является программной реализацией SPI; аппаратная версия реализована в библиотеке SPI, поэтому она является быстрее, но работает только со специальными выводами.
 
Синтаксис
shiftOut(dataPin, bitOrder, value)
 
Параметры
dataPin: вывод, которому будет отправляться каждый бит из сдвигаемого байта данных (int)
clockPin: тактовый вывод, который будет переключаться каждый раз, когда на выводе dataPin устанавливается корректное значение (int)
bitOrder: характеризует порядок, в котором будут сдвигаться и выводиться биты; может принимать значения MSBFIRST или LSBFIRST. (Most Significant Bit First - старший значащий бит первым, или Least Significant Bit - младший значащий бит первым)
value: сдвигаемый байт данных (byte)
 
Возвращаемые значения
нет

 

Примечание
Выводы dataPin и clockPin должны быть уже сконфигурированы как выходы с помощью функции pinMode().
На данный момент функция shiftOut позволяет выводить только 1 байт (8 бит), поэтому для вывода значений, больших 255, требуется два этапа:
 
// Последовательная передача в режиме MSBFIRST
int data = 500;
// сдвигаем и выводим старший байт
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));  
// сдвигаем и выводим младший байт
shiftOut(dataPin, clock, MSBFIRST, data);
 
// Последовательная передача в режиме LSBFIRST
data = 500;
// сдвигаем и выводим младший байт
shiftOut(dataPin, clock, LSBFIRST, data);  
// сдвигаем и выводим старший байт
shiftOut(dataPin, clock, LSBFIRST, (data >> 8));

 

Примеры

// Заметки : Программа использования сдвигового регистра 74HC595 для счета от 0 to 255

//Вывод соединен с выводом ST_CP микросхемы 74HC595
int latchPin = 8;
//Вывод соединен с выводом SH_CP микросхемы 74HC595
int clockPin = 12;
//Вывод соединен с DS микросхемы 74HC595
int dataPin = 11;

void setup() {
  //переключение выводов в режим работы "вывод", т.к. к ним идет обращение в главном цикле
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //процедура последовательного счета
  for (int j = 0; j < 256; j++) {
   //формируем ноль на latchPin и удерживаем его до конца передачи
   digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, j);
   //возвращаем высокий уровень на latchin, тем самым сообщая микросхеме о том, что
   //больше не требуется воспринимать информацию
   digitalWrite(latchPin, HIGH);
   delay(1000);
  }
}

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

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

Похожие инструкции