shiftOut()

说明

将一个字节的数据通过移位输出的方式逐位输出。数据可以从最高位(最左位)或从最低位(最右位)输出。在输出数据时,当一位数据写入数据输出引脚时,时钟引脚将输出脉冲信号,指示该位数据已被写入数据输出引脚等待读取。

如果读取数据的设备是在Arduino的时钟引脚脉冲信号上升沿读取Arduino的输出数据,请确保在调用shiftOut()输出数据前,应先通过digitalWrite(clockPin, LOW)语句,将时钟引脚设置为LOW。这样做是为了确保数据读取准确无误。

以上介绍的方法使用软件实现数据输出操作。如果想要通过硬件方法输出数据,请参阅Arduino的SPI库函数。通过硬件方法输出数据更加快捷,但Arduino只有几个特定引脚可用于使用硬件方法输出数据。

语法

shiftOut(dataPin, clockPin, bitOrder, value)

参数

dataPin – 数据引脚
clockPin – 时钟引脚
bitOrder – 移位顺序 ( 高位先出 或 低位先出)
val – 数据

返回值

注意

使用shiftOut()函数前,数据引脚(dataPin)和时钟引脚(clockPin)必须先通过pinMode()指令设置为输出(OUTPUT)模式。

shiftOut一次只能输出1字节(8位)数据。如果需要输出大于255的数值,需要通过多次使用shiftOut()输出数据。如以下程序所示:

[c gutter=”0″]

// 高字节先出模式
int data = 500; //待输出数据
shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // 输出高位字节
shiftOut(dataPin, clock, MSBFIRST, data); // 输出低位字节

// 低字节先出模式
data = 500; //待输出数据
shiftOut(dataPin, clock, LSBFIRST, data); // 输出低位字节
shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); // 输出高位字节

[/c]