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.