Search…

IC 74HC595N

09/08/20204 min read
Hướng dẫn sử dụng IC 74HC595N để tạo thêm nhiều chân kết nối các linh kiện.

Arduino Uno có khá ít chân do đó bị hạn chế nếu làm việc với nhiều linh kiện, ví dụ như 2 LED matrix 8x8.

Số chân cần thiết là (8 + 8) x 2 = 32 chân, vậy để điều khiển được LED cần sử dụng IC 74HC595 để "nới thêm chân".

IC này có khả năng dịch bit và lưu lại trạng thái của 8-bit, ngoài ra còn có thể đẩy các bit bị tràn ra ngoài, sử dụng các bit tràn này để truyền vào 1 IC khác tạo ra không gian rộng rãi hơn.

Giới thiệu IC 74HC595

IC-74HC595
IC 74HC595

Ý nghĩa của các chân

IC 74HC595
IC 74HC595
  • VCC: chân để dòng điện đi vào, nối với cực dương.
  • GND: chân để dòng điện đi ra, nối với cực âm.
  • DS Serial Data Input: dữ liệu sẽ được truyền vào IC thông qua cổng này.
  • OE Output Enable: chân này dùng để bật/tắt IC, IC được phép chạy khi ở trạng thái LOW.
  • ST_CP Storage register clock pin: hay còn gọi là chân LATCH, khi chân này từ trạng thái LOW chuyển sang HIGH thì data trong IC sẽ được xuất ra các chân Q1 → Q7.
  • SH_CP Shift register clock pin: còn gọi là chân CLOCK, khi từ trạng thái LOW → HIGH tức là một xung, dữ liệu sẽ được dịch vào một bit theo trạng thái hiện tại của của chân DS.
  • MR Master Reclear : khi ở trạng thái HIGH , bộ nhớ trong IC sẽ được xóa hoàn toàn.
  • Q1 → Q7 : tượng trưng cho 8 bit trong vùng nhớ IC.

Mạch điện với 1 IC 74HC595N

Chuẩn bị

  • 2 breadboard
  • 1 Arduino Uno
  • 1 IC 74HC595N
  • 8 bóng đèn tùy màu
  • 8 điện trở 560Ω
  • Wire số lượng nhiều

Sơ đồ mạch

Arduino và IC 74HC595 và 8 LED.
Sử dụng 1 IC 74HC595

Nguồn điện 5V được nối từ dây màu đỏ qua các con trở và tới cực dương của đèn LED. Các chân 8, 11, 12 lần lượt điều khiển các chân LATCH, CLOCK, INPUT.

  • OE (Enable) được nối vào chân GND vậy nó mang giá trị LOW.
  • MR nối với cực dương có hiệu điện thế 5v nên mang giá trị HIGH.
  • Các chân từ Q0 → Q7 lần lượt nối với các cực dương của bóng đèn thông qua trở.

Code

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  // đếm từ 1 -> 255
  for (int numberToDisplay = 1; numberToDisplay < 256; numberToDisplay = numberToDisplay << 1)
{ // giữ trạng thái chân LATCH LOW digitalWrite(latchPin, LOW); // dịch bit shiftOut(dataPin, clockPin, MSBFIRST, numberToDisplay); // chuyển trạng thái chân LATCH sang HIGH digitalWrite(latchPin, HIGH); // delay 0.5s cho lần chạy kế tiếp delay(500); } }

Giải thích

  • setup(): sử dụng pin 8, 11, 12 để điều khiển lần lượt 3 chân của LATCH, CLOCK, INPUT của IC 74HC595.
  • loop(): tạo vòng lặp có giá trị từ 1 → 255, bước nhảy của vòng lặp này là dịch qua một bit.
    • Mỗi một vòng lặp bắt đầu bằng việc cài đặt cho chân LATCH có trạng thái LOW.
    • Hàm shiftOut có các tham số lần lượt là:
      • Chân INPUT.
      • Chân CLOCK.
      • LSBFIRST dịch bit theo thứ tự hiện có của data trong IC.
      • MSBFIRST dịch bit theo chiểu ngược lại.

Kết quả

Kết quả sử dụng 74HC595

Mạch điện với 2 IC 74HC595

Sơ đồ mạch

so_do_mach_x2_74hc595_arduino_va_8_led
Sử dụng 2 IC 74HC595

Code

int latchPin = 8;
int clockPin = 12;
int dataPin = 11;

#define HC595_count 2
 
void setup() 
{
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}
 
void loop() 
{
  char* temp;
  unsigned short i;
  temp = (char*) &i;
  for( i = 1 ; i < 32768 ; i = i << 1)
  {
    digitalWrite(latchPin, LOW);
    for (int j = 0; j < HC595_count; j++)
    {
      shiftOut(dataPin, clockPin, LSBFIRST, temp[j]);
    }
    digitalWrite(latchPin, HIGH);
    delay(500);
  }
  digitalWrite(latchPin, LOW);
  for (int j = 0; j < HC595_count; j++)
  {
    shiftOut(dataPin, clockPin, LSBFIRST, temp[j]);
  }
  digitalWrite(latchPin, HIGH);
  delay(500);
}

Giải thích

Trong sơ đồ mạch với 2 IC, chân Q7' sẽ xuất dữ liệu sang cho chân DS (INPUT) của IC thứ 2. Vẫn phải giữ cho chân CLOCK và chân LATCH của IC 2 có giá trị tương đương với IC 1.

Ở mạch 1 IC một lần dịch bit dịch tối đa 8 bit và hàm shiftOut cũng vậy, nên trong trường hợp này dịch bit theo số lượng IC tức là với 2 IC, một lần dịch sẽ là 8 x 2= 16 bit.

Khi biến i đạt đến giá trị 16 384 tương đương 0100 0000 0000 0000 thì vòng lặp sẽ thoát, nên phía dưới tôi tiếp tục dịch thêm một lần nữa để làm sáng đèn cuối cùng và giá trị đó là 32768 - 1000 0000 0000 0000.

Kết quả

Kết quả sử dụng 2 IC 74HC595
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024