74hc595 là gì ?
IC 74HC595 là một IC thanh ghi dịch 16 chân bao gồm một chốt kiểu D cùng với một thanh ghi dịch bên trong IC. Nó nhận dữ liệu đầu vào nối tiếp và sau đó gửi dữ liệu này ra ngoài thông qua các chân song song. Ngoài các đầu ra song song, nó cũng cung cấp một đầu ra nối tiếp. Nó có các đầu vào xung clock độc lập cho thanh ghi dịch và chốt D. IC này thuộc họ logic HC được thiết kế để sử dụng trong các ứng dụng CMOS. Hãy tham khảo với Hocwiki nhé !
74HC595 có hai thanh ghi tích hợp. Cái đầu tiên là một thanh ghi dịch và cái thứ hai là một thanh ghi lưu trữ. Dữ liệu được truyền nối tiếp để thay đổi thanh ghi từng bit. Nhưng nó chỉ chuyển vào thanh ghi lưu trữ khi chân chốt dữ liệu hoạt động ở mức cao.
- 74hc595 là gì ? hướng dẫn sử dụng IC 74hc595
- LM2576 ADJ là gì ? Nguyên Lý LM2576
- Thông số transistor D718 lưng đồng tháo máy và Nguyên lý làm việc của D718
- TL431 là gì ? Nguyên Lý IC TL431
- IRF3205 lưng đồng tháo máy lấy ở đâu
Sơ đồ chân 74hc595
Hãy nhìn vào sơ đồ sơ đồ chân. Dấu nghiêng gạch ngang trên đầu cho thấy rằng các chân này hoạt động ở tín hiệu thấp đang hoạt động hoặc ở tín hiệu logic âm. mình sẽ xem xét chi tiết về logic phủ định ở phần sau trong hướng dẫn này.
Liên quan đến các chân đầu ra, vì nó là một thanh ghi dịch 8-bit. SN74HC595N có tám chân đầu ra từ Q0-Q7.
Trong phần này, mình thấy Mô tả chân của tất cả các chân cùng với hoạt động và chức năng của chúng.
Pin # 01, 02, 03, 04, 05, 06, 07, 15: Chân đầu ra
Tám chân này là chân đầu ra của thanh ghi dịch. mình nên kết nối các chân này với các thiết bị ngoại vi nào mà mình muốn hiển thị dữ liệu thanh ghi lưu trữ. Các linh kiện thường được sử dụng như LED, Led 7 đoạn , v.v.
Pin # 08: GND
Đây là chân nối đất và được nối với đất của mạch.
Pin # 09: Q7 ‘
Đây là đầu ra dữ liệu nối tiếp không đảo ra khỏi quãng thứ tám của thanh ghi dịch. Nó cũng được sử dụng cho mục đích xếp tầng. Ví dụ, nếu mình cần thanh ghi dịch 16 bit. mình có thể nối chuỗi hai IC 74HC595. Để thực hiện việc này, chỉ cần kết nối chân ~ Q7 với chân DS đầu vào nối tiếp của IC 595 thứ 2. Hơn nữa, cung cấp cùng một tín hiệu xung nhịp cho cả hai mạch tích hợp. Bằng cách này, hai 74HC595 sẽ hoạt động như một thanh ghi dịch 16 bit. Hơn nữa, bạn có thể tiếp tục quá trình này để kết nối bao nhiêu IC tùy thích để có thêm độ rộng dữ liệu.
Pin # 10: ~ MR
Đây là một Đầu vào thiết lập lại tổng mức thấp không đồng bộ, đang hoạt động, được sử dụng để thiết lập lại thanh ghi dịch. Chốt 8 bit không bị ảnh hưởng bởi đầu vào này. Việc áp dụng tín hiệu thấp ở chân 10 sẽ chỉ đặt lại phần thanh ghi dịch.
Pin # 11: SH_CP
Đây là chân đầu vào xung nhịp của thanh ghi dịch 74hc595. Dữ liệu được chuyển từ chân đầu vào nối tiếp sang thanh ghi dịch 8 bit trên mọi chuyển đổi dương của tín hiệu clock được áp dụng tại chân này.
Pin # 12: ST_CP
Đây là chân đầu vào xung nhịp cao đang hoạt động của một thanh ghi lưu trữ. Sự chuyển đổi tích cực của tín hiệu tại chân này được sử dụng để cập nhật dữ liệu vào các chân đầu ra.
Pin # 13: ~ OE
Chân kích hoạt đầu ra đang hoạt động ở mức thấp. Khi chân này ở mức thấp, dữ liệu trong thanh ghi lưu trữ sẽ xuất hiện ở đầu ra. Khi áp dụng tín hiệu cao, đầu ra bị tắt bằng cách buộc chúng ở trạng thái trở kháng cao. Tuy nhiên, đầu ra nối tiếp không bị ảnh hưởng gì cả. Đối với các hoạt động bình thường, nó được giữ ở mức thấp.
Pin # 14: DS
Đây là chân đầu vào dữ liệu nối tiếp, nơi cung cấp dữ liệu đầu vào.
Pin # 16: Vcc
Nguồn điện dương được cung cấp tại chân này.
74hc595 để làm gì
- Nó là một thanh ghi dịch với đầu vào nối tiếp 8 bit và đầu ra nối tiếp 8 bit hoặc song song 3 trạng thái.
- Điện áp hoạt động của IC này là từ 2V đến 6V.
- Điện áp đầu ra bằng điện áp hoạt động của IC này.
- Nó dựa trên logic CMOS và do đó tiêu thụ điện năng rất thấp là 80uA.
- Nguồn đầu ra / dòng chìm là 35mA.
- Nó có một đặc điểm là khả năng chống nhiễu cao.
- Nó có thể dễ dàng xếp tầng qua chân 9 với nhiều IC hơn để có nhiều đầu ra hơn.
- Tần số xung nhịp tối đa là 25Mhz @ 4,5V.
- Hành động kích hoạt Schmitt được cung cấp trên tất cả các đầu vào.
Cách sử dụng 74hc595
Bạn có bao giờ tự hỏi, làm thế nào một kỹ sư nhúng điều khiển hàng trăm điốt phát sáng nối tiếp hoặc song song với sự trợ giúp của một bộ vi điều khiển có rất ít chân I / O đa năng? Ngoài ra, Bạn muốn điều khiển nhiều hơn 8 động cơ servo và bạn chỉ có 2-3 chân GPIO của một bộ vi điều khiển. Bạn sẽ giải quyết vấn đề này như thế nào? Bạn sẽ điều khiển Ma trận LED có các kích thước khác nhau như 8 × 8, 16 × 16, 32 × 32 như thế nào với các chân GPIO tối thiểu của vi điều khiển? Câu trả lời đơn giản là một thanh ghi dịch 74HC595.
Trong hầu hết các ứng dụng, bạn cần nhiều đầu ra hơn cho các đèn LED giao tiếp hoặc các thiết bị nào khác như Led 7 đoạn, 16 đoạn, đèn chớp LED, v.v. IC này rất tiện dụng để sử dụng. Để tăng các chân đầu ra, bạn có thể giao tiếp IC này với các vi điều khiển khác nhau như Arduino Uno , PIC Microcontroller, Atmel, v.v. Bạn có thể sử dụng IC này trong việc thiết kế các Project yêu cầu điều khiển nhiều đầu ra.
Nguyên lý 74hc595
Như đã đề cập trước đó, thanh ghi dịch 74HC595 bên trong bao gồm hai thanh ghi như thanh ghi dịch và thanh ghi lưu trữ. Cả hai đều rộng 8-bit. Cái đầu tiên chịu trách nhiệm chấp nhận đầu vào dữ liệu trên mọi cạnh dương của xung clock và nó tiếp tục nhận dữ liệu. Nhưng dữ liệu từ thanh ghi dịch chỉ chuyển sang thanh ghi lưu trữ khi mình áp dụng tín hiệu cao hoạt động để chốt chân đầu vào.
- Nó có tám đầu ra và 3 chân đầu vào bao gồm chân dữ liệu, chân lưu trữ và chân clock thanh ghi dịch. Kết nối chân 8 với đất và chân 16 với nguồn điện áp + 5V.
- Chân cho phép đầu ra (~ OE) phải được nối đất để kích hoạt các chân đầu ra của thanh ghi dịch. Chân thiết lập lại chính sẽ xóa bộ nhớ của thanh ghi dịch nếu nó được áp dụng với tín hiệu thấp. Đó là lý do tại sao nó nên được giữ ở mức cao.
- Khi quá trình chuyển đổi cạnh dương xảy ra trên chân 11, thanh ghi dịch sẽ chấp nhận các đầu vào được áp dụng trên đường dữ liệu.
- Các đầu ra của thanh ghi lưu trữ được kết nối với các chân đầu vào của chốt D / thanh ghi lưu trữ.
- Các đầu vào này được cập nhật trên đầu ra chốt khi xảy ra quá trình chuyển đổi cạnh dương tại chân 12.
Quan trọng nhất, Nếu bạn cần ghép nhiều IC với nhau thì chân 9 được kết nối với chân dữ liệu của một IC thanh ghi dịch khác.
Quét LED 7 đoạn dụng 74HC595 Arduino
Trong phần này, mình sẽ tìm hiểu Quét LED 7 đoạn dụng 74HC595 Arduino. Bằng cách sử dụng thanh ghi dịch 74HC595 để điều khiển Led 7 đoạn với Arduino, mình có thể lưu các chân GPIO của Arduino.
Tại sao sử dụng 74HC595 để điều khiển Màn hình 7 đoạn?
Trong hướng dẫn cuối cùng về giao tiếp 7 đoạn với Arduino , mình đã thấy rằng nếu mình giao tiếp trực tiếp một led 7 đoạn với Arduino, mình sẽ cần 8 chân kỹ thuật số của Arduino. Tương tự, nếu mình sử dụng Led 7 đoạn hai chữ số, ba chữ số, bốn chữ số, mình sẽ cần nhiều chân GPIO hơn, ngay cả khi mình sử dụng kỹ thuật ghép kênh để tiết kiệm chân vi điều khiển.
Do đó, bằng cách sử dụng thanh ghi dịch nối tiếp 74HC595, mình có thể lưu các chân kỹ thuật số Arduino và có thể sử dụng chúng cho các mục đích khác. Ví dụ, nếu mình sử dụng IC thanh ghi dịch nối tiếp này, mình có thể giao tiếp 7 đoạn với Arduino bằng cách chỉ sử dụng ba chân, thay vì sử dụng 8 chân kỹ thuật số.
Sơ đồ Quét LED 7 đoạn dụng 74HC595 Arduino
Sơ đồ này cho thấy kết nối giữa IC dịch, Arduino và cathode chung của 7 đoạn.
Như bạn có thể thấy từ sơ đồ, mình kết nối 74HC595 với LED theo trình tự các chân đầu ra (Q0-Q7) theo bảng này.
74HC595 | Chân led 7 đoạn |
Q0 | A |
Q1 | B |
Q2 | C |
Q3 | D |
Q4 | E |
Q5 | F |
Q6 | G |
Q7 | DP |
Code Arduino
Code Arduino này hiển thị các số từ 0 đến 9 trên Led 7 đoạn một chữ số với độ trễ là một giây.
#define LATCH_pin 8 // (8) ST_CP [RCK] on 74HC595
#define CLCOK_pin 12 // (12) SH_CP [SCK] on 74HC595
#define DATA_pin 11 // (11) DS [S1] on 74HC595
unsigned char binary_pattern[] = {
0b11111010,
0b01100000,
0b11011100,
0b11110100,
0b01100110,
0b10110110,
0b10111110,
0b11100000,
0b11111110,
0b11100110,
};
unsigned int counter=0;
void clock_signal(void){
digitalWrite(CLCOK_pin, HIGH);
delayMicroseconds(500);
digitalWrite(CLCOK_pin, LOW);
delayMicroseconds(500);
}
void latch_enable(void)
{
digitalWrite(LATCH_pin, HIGH);
delayMicroseconds(500);
digitalWrite(LATCH_pin, LOW);
}
void send_data(unsigned int data_out)
{
int i;
unsigned hold;
for (i=0 ; i<8 ; i++)
{
if ((data_out >> i) & (0x01))
digitalWrite(DATA_pin,HIGH);
else
digitalWrite(DATA_pin,LOW);
clock_signal();
}
latch_enable(); // Data finally submitted
}
void setup()
{
pinMode(LATCH_pin , OUTPUT);
pinMode(DATA_pin , OUTPUT);
pinMode(CLCOK_pin , OUTPUT);
digitalWrite(LATCH_pin, LOW); // (11) ST_CP [RCK] on 74HC595
digitalWrite(CLCOK_pin, LOW); // (9) SH_CP [SCK] on 74HC595
digitalWrite(DATA_pin, LOW); // (12) DS [S1] on 74HC595
Serial.begin(9600);
}
void loop()
{
send_data(binary_pattern[counter]);
counter++;
if(counter>9)
counter =0;
delay(1000);
}
Code hoạt động như thế nào?
Code này hoạt động tương tự như Code mà mình đã thảo luận trong phần trước ngoại trừ phần vòng lặp “while”. Đầu tiên, mình khởi tạo code hiển thị cho Led 7 đoạn loại cathode phổ biến bằng cách sử dụng một mảng.
unsigned char binary_pattern[] = {
0b11111010,
0b01100000,
0b11011100,
0b11110100,
0b01100110,
0b10110110,
0b10111110,
0b11100000,
0b11111110,
0b11100110,
};
Bên trong vòng lặp while, mình chuyển các giá trị mã hiển thị vào hàm send_data () với sự trợ giúp của một biến bộ đếm. Biến bộ đếm tăng lên sau mỗi giây và được sử dụng để hiển thị các giá trị được cập nhật. Khi giá trị bộ đếm bằng 9, mình đặt lại giá trị bộ đếm về không.
send_data(binary_pattern[counter]);
counter++;
if(counter>9)
counter =0;
delay_ms(1000);
Kết quả mô phư:
Ứng dụng SN74HC595
IC này có vô số ứng dụng và được sử dụng trong nhiều mảng sản phẩm như thiết bị ngoại vi máy tính, Thiết bị, v.v. Rất ít ứng dụng được sử dụng dưới đây:
- Giữ dữ liệu trong một khoảng thời gian dài
- Chuyển đổi dữ liệu nối tiếp sang song song
- Logic mục đích chung
- Điều khiển đèn LED