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.
