Функція shiftOut()

Документація

shiftOut()


Зсуває байт даних по одному біту за раз. Починає з найправішого чи найлівішого значущого біта. Кожен біт по черзі відправляється на вивід даних, після чого тактовий пін пульсує (сигнал стає то високим, то низьким), щоб визначити, чи біт доступний.

Зверніть увагу, для взаємодії з пристроями, тактованими наростаючим фронтом, Вам слід переконатися, що тактовий пін нижчий перед викликом shiftOut(), наприклад, при виклику digitalWrite(clockPin, LOW).

Це програмна реалізація; дивіться також бібліотеку SPI, що забезпечує апаратну реалізацію, яка швидша, але працює лише на певних пінах.

Синтаксис

shiftOut(dataPin, clockPin, bitOrder, значення)

Параметри

dataPin: пін, на який виводиться кожен біт (int)

clockPin: пін, який буде перемикатися щоразу, як на dataPin встановлюватиметься правильне значення (int)

bitOrder: в якому порядку зсуватимуться біти (MSBFIRST чи LSBFIRST — найбільш значущий біт спочатку чи найменш значущий біт спочатку)

значення: дані для зсування (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));

Приклад

Для супровідної схеми подивіться туторіал.

//**************************************************************//
//  Ім’я    : shiftOutCode, Hello World                         //
//  Автор  : Carlyn Maw,Tom Igoe                               //
//  Дата    : 25 Oct, 2006                                      //
//  Версія : 1.0                                               //
//  Нотатки   : Код для використання зсувного регістру 74HC595        //
//          : щоб рахувати від 0 до 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 та утримувати LOW впродовж передавання
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j);   
    //повернути засувний пін до стану HIGH, щоб повідомити чіпу, що йому більше не   
    //потрібно прислухатися до інформації
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}


Повернутись до головної

Коментарі 0

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.