STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    IC 74HC595N

    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.
    02/09/2015
    09/08/2020
    4 phút đọc
    IC 74HC595N

    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
    0 Bình luận
    Điện Tử Ứng Dụng

    Điện Tử Ứng Dụng

    Kiến thức điện tử, Arduino, Raspberry Pi, giới thiệu sản phẩm.

    Đề xuất

      Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
      STDIO

      Trang chính

      Công ty TNHH STDIO

      30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn

      383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

      Đã thông báo Bộ Công Thương
      ©STDIO, 2013 - 2020