Pages - Menu

2013年2月6日 星期三

74HC595 重點提醒

2的0次方是最右邊的最低位數字(LSBFIRST),
2的7次方則是左邊的高位第八位數字(MSBFIRST)

MSBFIRST 表示 595 從左向右讀取二進制數;
LSBFIRST 則表示從右向左讀取。



shiftout(a,b,c,d);


a = 連接到595的數據輸入引腳(14號引腳)的數字輸出端口號。

b = 連接到595的時鐘端口引腳(11號引腳)的數字輸出端口號。

c 可以是 LSBFIRST 或者 MSBFIRST。MSBFIRST 表示 595 從左向右讀取二進制數;LSBFIRST 則表示從右向左讀取。

d = 實際要傳送給595用來表示二進制輸出端口狀態的數值 (0~255)。


綜合以上,個人得出的結論是,MSBFIRST及LSBFIRST只代表要從左邊開始讀二進位數值
或是從右邊開始讀二進位數值。
例如 85(十進位)換算成二進位為10101010
如果設定為MSBFIRST  則亮燈的順序 從左邊開始(10101010)
,因MSBFIRST是從左邊開始讀取二進位數,所以會先取1
如果設定為LSBFIRST   則亮燈的順序 從右邊開始(01010101)
,因LSBFIRST是從右邊開始讀取二進位數,所以會先取0
(1為亮燈0為暗)

如果串連兩顆74HC595移位暫存器,
同時下指令

    shiftOut(DataPin, ClockPin, MSBFIRST, 5);
    shiftOut(DataPin,ClockPin, MSBFIRST, 85);

則會發現 第一個亮的晶片是最遠的暫存器,
因此推斷當arduino丟一個8bit的資料給暫存器時,會先經由PIN 9輸出給較遠的暫存器,
當暫存器的資料滿時,再傳到原先的暫存器。
以上假設為將LatchPin拉回高電位

推斷是否正確,等明天再買一顆回來試試看。