shiftOut()
描述
以 byte 为单位将资料送出,一次一个 bit。可以从最高或者最低有效位元开始送出资料;每一个 bit 会被输出到一个资料 pin 脚上,再经过时脉 pin 脚上的高 / 低电位变化边缘让接收端判读该 bit 是否有效。
注意:如果你使用的装置是属于正缘触发的类型,你需要确定时脉 pin 脚在呼叫 shiftOut() 之前是处于低电位的状态,例:可以呼叫 digitalWrite(clockPin, LOW) 将 pin 脚设定为低电位。
这个函式是以软体模拟方式实作的,可以参考 SPI 函式库,它提供了一个高效的硬体实作方式,但只能作用在某些固定的 pin 脚上。
语法
shiftOut(dataPin, clockPin, bitOrder, value)
参数
dataPin: 要输出 bit 的 pin 脚 (int)
clockPin: 要输出时脉的 pin 脚 (int)
bitOrder: 送出 bit 的顺序,不是 MSBFIRST 就是 LSBFIRST (从最高或最低有效位元开始送出)
value: 要送出的资料 (byte)
回传
无回传值
注意
一定要先以 pinMode() 去设定 dataPin 以及 clockPin 这两个脚位。
shiftOut 一次只能输出一个 byte,所以要输出数值大于 255 的资料时必须要分作两次进行。
// 把资料从最高有效位元开始送出 int data = 500; // 先送出资料的高位 byte (bit 8 ~ 15) shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // 再送出资料的低位 byte (bit 0 ~ 7) shiftOut(dataPin, clock, MSBFIRST, data); // 把资料换成从最低有效位元开始送出 data = 500; // 先送出资料的低位 byte (bit 0 ~ 7) shiftOut(dataPin, clock, LSBFIRST, data); // 再送出资料的高位 byte (bit 8 ~ 15) shiftOut(dataPin, clock, LSBFIRST, (data >> 8));
范例
有关 74HC595 位移暂存器的资料可以参考 Arduino 教学手册。
//**************************************************************//
// Name : shiftOut 程式码, Hello World //
// Author : Carlyn Maw,Tom Igoe //
// Date : 25 Oct, 2006 //
// Version : 1.0 //
// Notes : 使用 74HC595 来计数 0 到 255 //
//****************************************************************
// pin 脚接到 74HC595 上的 ST_CP
int latchPin = 8;
// pin 脚接到 74HC595 上的 SH_CP
int clockPin = 12;
//// pin 脚接到 74HC595 上的 DS
int dataPin = 11;
void setup() {
// 将 latchPin,clockPin,dataPin 设定为输出
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// 从 0 计数到 255
for (int j = 0; j < 256; j++) {
// 送资料前要先把 latchPin 设定成低电位
digitalWrite(latchPin, LOW);
// 使用 shiftOut() 送出资料
shiftOut(dataPin, clockPin, LSBFIRST, j);
// 送完资料后要把 latchPin 设定回成高电位
digitalWrite(latchPin, HIGH);
// 隔 1 秒后换下一个数字
delay(1000);
}
}
See also
本页由热血青年 LBU 译自英文版。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
