QUÉT LED 7 ĐOẠN DÙNG 74HC595

Thêm một thanh ghi dịch tuy nhiên song / nối tiếp như 74HC595 thịnh hành vào màn hình led 7 đoạn sẽ giúp đỡ giảm con số chân cần thiết để điều khiển nó (màn hình).

Bạn đang xem: Quét led 7 đoạn dùng 74hc595

Về cơ bản, màn hình hiển thị led 7 đoạn đề xuất 9 chân: 8 chân phân đoạn (A, B, C, D, E, F, G cùng DP) + chân chung. Bằng cách nối tất cả các chân phân đoạn với 1 thanh ghi thế đổi, con số chân cần thiết sẽ bớt còn 3: chân clock và chân tài liệu (đối cùng với thanh ghi dịch) + chân chung.

Vì vậy, đối với màn hình led 7 đoạn có 4 led 7 đoạn, bọn họ chỉ đề xuất 6 chân: clock, dữ liệu và 4 chân thông thường (mỗi led gồm chân thông thường riêng).

Dự án này cho biết cách xây dựng cỗ đếm digital dễ dàng bằng Arduino, hiển thị 7 đoạn anode chung với 4 led 7 đoạn và thanh ghi 74HC595.

*

Yêu mong phần cứng:

Board UNOLed 7 đoạn loại có 4 led chung74HC5954 x Transistor PNP ( 2SA1015 , 2S9015 , 2N3906 >)8 x Điện trở 100 ohm4 x Điện trở 4,7k ohmNút ấnBreadboardDây dẫn

Sơ đồ mạch của dự án:

Hình ảnh dưới đây cho biết sơ đồ mạch lấy ví dụ như của chúng tôi.

*

Như được hiển thị vào sơ thiết bị mạch ở trên, toàn bộ các chân phân đoạn được nối với các chân đầu ra output 74HC595, mỗi chân qua điện trở 100 ohm, trong đó:

Đoạn A … G được nối cùng với chân 74HC595 q.7 … quận 1 và DP phân đoạn được nối cùng với chân Q0.

Chân dữ liệu của thanh ghi 74HC595 chọn cái tên là DS (# 14) và nó được nối với chân Arduino 6.

ST_CP (hoặc RCLK) với SH_CP (hoặc SRCLK) được nối cùng với nhau, sau đó được nối cùng với chân Arduino 7. Đây là chân clock.

Vì màn hình có 4 led 7 đoạn nên có 4 chân chung: 1 (hầu hết bên trái), 2, 3 với 4. Mỗi chân tầm thường được nối với đầu rất collector của một transistor. Điểm mút rất phát của 4 transistor được nối cùng với + 5V từ board Arduino. Điểm mút đại lý của tứ transistor được nối với Arduino thông qua điện trở 4,7k.

4 transistor cùng loại (PNP).

Nút ấn được nối với chân analog Arduino 0 (A0) được áp dụng để tăng con số hiển thị.

Code dự án:

Code Arduino dưới không sử dụng bất kỳ thư viện như thế nào cho màn hình 7 đoạn.

Khai báo nút ấn được khẳng định trong code là:

// counter button definition

#define button A0

Khai báo chân clock cùng chân dữ liệu được xác định là:

// shift register chân definitions

#define clockChân 7 // chân clock

#define dataChân 6 // chân data

Màn hình cần được làm mới định kỳ, bởi vì tôi đã sử dụng mô-đun Timer1 ngắt với cấu hình sau:

// Timer1 module overflow interrupt configuration

TCCR1A = 0;

TCCR1B = 1; // enable Timer1 with prescaler = 1 ( 16 ticks each 1 µs)

TCNT1 = 0; // phối Timer1 preload value lớn 0 (reset)

TIMSK1 = 1; // enable Timer1 overflow interrupt

Với bộ đếm trước Timer1 = 1, chúng tôi sẽ ngắt mỗi 4096 micro giây. Điều đó có nghĩa là mỗi led 7 đoạn được hiển thị 4096 us. 4096 us = 65536 / (16 * prescaler)

Lưu ý rằng mô-đun Timer1 là bộ định thời 16 bit cùng tần số xung Arduino là 16 MHz.

Các hàm được áp dụng trong code:

ISR(TIMER1_OVF_vect): là tác dụng ngắt Timer1, lúc vi điều khiển và tinh chỉnh bị ngăn cách bởi Timer1, nó đã trực tiếp triển khai ‘chức năng’ này.

void disp(byte number, bool dec_point = 0): công dụng này là giành riêng cho dữ liệu hiển thị trên màn hình hiển thị 7-segment, nó in đổi mới số tất cả thể chuyển đổi giữa 0 và 9. Vươn lên là dec_point ra quyết định liệu các DP sẽ tiến hành in hay là không , cực hiếm mặc định là 0 (không in), nếu dec_point = 1, phân đoạn DP đang BẬT.

void dist_off () : chức năng này đang tắt toàn bộ màn hình.

Xem thêm: Động Cơ Bước, Điều Khiển Động Cơ Bước Arduino Uno R3, Điều Khiển Động Cơ Bước Dùng Arduino

Tôi đã sử dụng chức năng Arduino shiftOut (built-in) để gửi dữ liệu một cách an toàn đến thanh ghi biến đổi 74HC595.