2012年1月1日 星期日

Netduino--串列週邊介面(SPI)控制 LED

Netduino提供串列週邊介面功能(SPI),可原先並列資料傳輸,轉換成用串列資料傳輸方式,這可以節省 Netduino 使用的接腳數,

當控制器的接腳不夠用時,就可以使用SPI功能,將資料傳輸到移位暫存器(例如74HC595),達到擴充腳位的效果

下圖是移位暫存器 74HC595 的工作範例圖,

clip_image002

由圖可看出來自於微控器的序並資料(10010111)由SER接腳進入74HC595,資料會拆散依序放在QA~QH,變成並列資料輸出,

以下是實驗電路圖,

clip_image002

 

程式如下,可以控制LED產生霹靂燈的效果

namespace T74HC595_TEST02
{
    public class Program
    {
        public static void Main()
        {
            SPI.Configuration config =
                new SPI.Configuration(ChipSelect_Port: Pins.GPIO_PIN_D9,  
                                      ChipSelect_ActiveState: false,
                                      ChipSelect_SetupTime: 0,
                                      ChipSelect_HoldTime: 0,
                                      Clock_IdleState: true,
                                      Clock_Edge: false,
                                      Clock_RateKHz: 10000,
                                      SPI_mod: SPI.SPI_module.SPI1);

            SPI _spi = new SPI(config);
            byte[] data = new byte[1];

            // 產生霹靂燈效果
            while (true)
            {
                data[0] = 1;
                for (int i=0; i<7; i++)  //燈向左移動
                {
                    _spi.Write(data);
                    data[0] <<= 1;
                    Thread.Sleep(100);
                }
                for (int i = 0; i < 8; i++) //燈向右移動
                {
                    _spi.Write(data);
                    data[0] >>= 1;
                    Thread.Sleep(100);
                }
            }
        }
    }
}

沒有留言:

張貼留言