ShiftOut()
Описание:
Побитово выводит байт данных. Начинает со старшего и заканчивает младшим битом. Каждый бит передается на вывод данных по тактирующему импульсу, показывающему, что бит доступен для чтения.
Данный метод известен как синхронный последовательный протокол и это отличный способ свзять микроконтроллер с датчиками и другими микроконтроллерами. Два устройста остаются синхронизованными и могут общаться на максимальных скоростях, зависящих от тактовой частоты.
Синтаксис:
shiftOut(dataPin, clockPin, bitOrder, value)
Параметры:
dataPin: вывод, по которому будем слать данные (int)
clockPin: тактирующий вход, состояние его будет изменяться как только следующий бит будет готов к отправке(int)
bitOrder: в каком порядке перебираем биты; MSBFIRST или LSBFIRST.
(первый старший, или, первый младший)
value: данные для передачи (byte)
dataPin и clockPin должны быть сконфигурированы как выходные при помощи pinMode().
shiftOut может передать 1 байт (8 бит) поэтому требуется два шага для передачи значений, больших 255.
int data = 500;
// передаем старшие 8 бит
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));
// и младшие 8 бит
shiftOut(data, clock, MSBFIRST, data);
Пример:
Смотрите схему подключения микросхемы сдвигового регистра 74HC595.
//**************************************************************//
// Name : shiftOutCode, Hello World //
// Author : Carlyn Maw,Tom Igoe //
// Date : 25 Oct, 2006 //
// Version : 1.0 //
// Notes : Code for using a 74HC595 Shift Register //
// : to count from 0 to 255 //
//****************************************************************
//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//count up routine
for (int j = 0; j < 256; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
Дата добавления: 2015-03-23; просмотров: 901;