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 · 最后更改: 2023/06/07 04:23 由 127.0.0.1