用户工具

站点工具


reference:language:shiftout

shiftOut()

描述

将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。

注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。

注意:这是一个软件实现;ocrobot提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。

语法

shiftOut(dataPin, clockPin, bitOrder, value)

参数

dataPin:输出每一位数据的引脚(int)
clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
bitOrder:输出位的顺序,最高位优先或最低位优先
value: 要移位输出的数据(byte)

返回

注意

dataPin和clockPin要用pinMode()配置为输出。 shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。

//最高有效位优先串行输出
int 数据= 500;
//移位输出高字节
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));  
//移位输出低字节
shiftOut(data, clock, MSBFIRST, data);
 
//最低有效位优先串行输出
data = 500;
//移位输出低字节
shiftOut(dataPin, clock, LSBFIRST, data);  
//移位输出高字节
shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); 

例子

相应电路,查看tutorial on controlling a 74HC595 shift register

// ************************************************ ************** //
//  Name    : shiftOut代码, Hello World                         //
//  Author  : Carlyn Maw,Tom Igoe                               //
//  Date    : 25 Oct, 2006                                      //
//  版本 : 1.0                                               //
//  注释:使用74HC595移位寄存器从0到255计数         //
//
// ************************************************ ****************
 
//引脚连接到74HC595的ST_CP
int latchPin = 8;
//引脚连接到74HC595的SH_CP
int clockPin = 12;
//引脚连接到74HC595的DS
int dataPin = 11;
 
void setup() {
//设置引脚为输出
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}
 
void loop() {
  //向上计数程序
   (J = 0; J <256; J + +{
     //传输数据的时候将latchPin拉低
digitalWrite(latchpin, LOW);
     shiftOut的 (dataPin,clockPin,LSBFIRST,J);
    //之后将latchPin拉高以告诉芯片
     //它不需要再接受信息了
digitalWrite(latchpin, HIGH);
     delay(1000);
 
}
}
reference/language/shiftout.txt · 最后更改: 2017/04/07 10:03 (外部编辑)