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.