2015年5月25日 星期一

課程22-74HC595 介紹

目的:

使用Arduino實作用74HC595IC控制更多的LED。

電子元件:
麵包板 x 1
Arduino 主板 x 1
74HC5945 x1

電路圖:




程式碼:

  1. int latchPin = 5;
  2. int clockPin = 4;
  3. int dataPin = 2;
  4. void setup() {
  5.  pinMode(latchPin, OUTPUT);
  6.  pinMode(clockPin, OUTPUT);
  7.  pinMode(dataPin, OUTPUT);
  8. }
  9. void loop() {
  10.  for (int numb = 0; numb < 256; numb++) {
  11.    digitalWrite(latchPin, LOW);
  12.    shiftOut(dataPin, clockPin, MSBFIRST, numb);  
  13.    digitalWrite(latchPin, HIGH);
  14.    delay(100);
  15.  }
  16. }

程式說明:

第一行~第三行 宣告整數變數latchPin、clockPin、dataPin 分別為Pin5、Pin4、Pin2。
第四行~第八行 宣告latchPin、clockPin、dataPin為輸出腳位。
第九行~第十六行 為主程式
第十行~第十五行 使用For迴圈讓數值numb從0~255。
第十一行 把latchPin腳位輸出低電壓,代表要開始輸入資料到IC。
第十二行 使用shiftOut指令發送給IC。
第十三行 把latchPin腳位輸出高電壓,代表要結束輸入資料到IC。
第十四行 延遲0.1秒。

圖表:

image

腳位編號
名稱
說明
1-7, 15
Q0 ~ Q7
輸出腳位
8
GND
接地
9
Q7’
序列輸出 (Serial Out)
10
MR
Master Reset, 清除所有資料, 低電位有效 (Active low)
11
SH_CP
SHift register clock pin (Clock Pin)
12
ST_CP
STorage register clock pin (Latch Pin)
13
OE
Output Enable, 允許輸出,低電位有效 (Active low)
14
DS
序列資料輸入 (Serial data input)
16
Vcc
供應電壓

接上 8 顆 LED,將每顆 LED 短腳 (陰極) 直接接到 GND,然後將每顆 LED 的長腳 (陽極) 個別接至 74HC595 的輸出腳位 D0 ~ D7 並串接一顆 220 ohm 電阻
74HC595 接線其一:
  • Vcc (pin 16) 與 MR (pin 10) 接 5V
  • GND (pin 8) 與 OE (pin 13) 接地
74HC595 接線其二:
  • DS (pin 14) 接 Arduino pin 2
  • ST_CP (pin 12, latch pin) 接 Arduino pin 5
  • SH_CP (pin 11, clock pin) 接 Arduino pin 4
假如發現 LED 有震動閃爍的現象,可以在 ST_CP (pin 12, latch pin) 上接一顆 0.1uF 電容以去除閃爍現象

實驗影片:





參考資料:
Arduino 筆記 – Lab12 使用兩顆 74HC595 和三支腳位控制 16 顆 LED

沒有留言:

張貼留言

Arduino、Raspberry Pi、System Integration,如有問題或建議,可以互相討論喔~