ESP32 74HC595 4-Digit 7-Segment Display

Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 để điều khiển module màn hình 7 đoạn 4 chữ số 74HC595. Hướng dẫn bao gồm các chủ đề sau:

ESP32 74hc595 4-digit 7-segment màn hình

Hướng dẫn này sẽ sử dụng module màn hình 7 đoạn 4 chữ số có 4 dấu chấm, có khả năng hiển thị giá trị thập phân. Nếu bạn cần hiển thị dấu phân cách hai chấm, vui lòng tham khảo ESP32 - Màn Hình LED 7 Đoạn 4 Chữ Số TM1637

Phần cứng cần chuẩn bị

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×74HC595 4-digit 7-segment Display
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới Thiệu Về Màn Hình 7 Đoạn 4 Chữ Số 74HC595

Module màn hình 7 đoạn 4 chữ số 74HC595 là một module lý tưởng để hiển thị nhiệt độ hoặc bất kỳ giá trị thập phân nào. Module này thường bao gồm bốn LED 7 đoạn, bốn LED hình chấm, và hai driver 74HC595 cho mỗi chữ số.

Sơ Đồ Chân

Module màn hình 7 đoạn 4 chữ số 74HC595 có 5 chân:

  • Chân SCLK: là chân đầu vào xung clock. Kết nối với bất kỳ chân digital nào trên ESP32.
  • Chân RCLK: là chân đầu vào xung clock. Kết nối với bất kỳ chân digital nào trên ESP32.
  • Chân DIO: là chân Data I/O. Kết nối với bất kỳ chân digital nào trên ESP32.
  • Chân VCC: cấp nguồn cho module. Kết nối với nguồn 3.3V đến 5V.
  • Chân GND: là chân mass.
74hc595 module sơ đồ chân

Sơ Đồ Kết Nối

Bảng dưới đây cho thấy cách kết nối giữa các chân ESP32 và các chân màn hình 7 đoạn 4 chữ số 74HC595:

ESP32 74HC595 7-segment display
Vin5V
27SCLK
26RCLK
25DIO

Nếu bạn sử dụng các chân khác, hãy đảm bảo sửa đổi số chân trong code cho phù hợp.

ESP32 74hc595 module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

Cài Đặt Thư Viện

Để lập trình dễ dàng cho màn hình 7 đoạn 4 chữ số 74HC595, chúng ta cần cài đặt thư viện DIYables_4Digit7Segment_74HC595 của DIYables.io. Thực hiện theo các bước sau để cài đặt thư viện:

  • Click vào biểu tượng Libraries trên thanh bên trái của Arduino IDE.
  • Tìm kiếm "DIYables_4Digit7Segment_74HC595", sau đó tìm thư viện DIYables_4Digit7Segment_74HC595 của DIYables.io
  • Click nút Install.
ESP32 74hc595 4-digit 7-segment màn hình thư viện

Bạn cũng có thể xem thư viện này trên Github

Cách Lập Trình ESP32 Cho Màn Hình 7 Đoạn 4 Chữ Số 74HC595

  • Include thư viện
#include <DIYables_4Digit7Segment_74HC595.h>
  • Định nghĩa các chân của ESP32 kết nối với SCLK, RCLK và DIO của module màn hình. Ví dụ, chân D7, D6 và D5
#define SCLK 27 // The ESP32 pin GPIO27 connected to SCLK #define RCLK 26 // The ESP32 pin GPIO26 connected to RCLK #define DIO 25 // The ESP32 pin GPIO25 connected to DIO
  • Tạo một đối tượng display kiểu DIYables_4Digit7Segment_74HC595
DIYables_4Digit7Segment_74HC595 display = DIYables_4Digit7Segment_74HC595(CLK, DIO);
  • Sau đó bạn có thể hiển thị số nguyên với tùy chọn zero-padding, hỗ trợ số âm:
display.printInt(-13, false); // you can display a value from -999 to 9999
  • Bạn có thể hiển thị số thập phân với tùy chọn số chữ số thập phân và zero-padding, hỗ trợ số âm:
display.printFloat(-9.2, 1, false);
  • Bạn cũng có thể hiển thị số, dấu chấm thập phân, ký tự từng chữ số bằng cách sử dụng các hàm ở mức thấp hơn:
// display 9.3°C display.clear(); display.setNumber(1, 9); // set 9 at the 1st digit display.setDot(1); // set . at the 1st digit display.setNumber(2, 3); // set 3 at the 2nd digit display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit display.setChar(4, SegChars::C); // set C at the 3rd digit display.show(); // show on the display
  • Vì module màn hình 7 đoạn 4 chữ số 74HC595 sử dụng kỹ thuật ghép kênh để điều khiển từng đoạn và LED riêng lẻ, code ESP32 PHẢI:
    • Gọi hàm display.show() trong vòng lặp main
    • Không sử dụng hàm delay() trong vòng lặp main

    Bạn có thể xem chi tiết hơn trong tài liệu tham khảo thư viện

Code ESP32 - Hiển Thị Số Nguyên

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK 27 // The ESP32 pin GPIO27 connected to SCLK #define RCLK 26 // The ESP32 pin GPIO26 connected to RCLK #define DIO 25 // The ESP32 pin GPIO25 connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); display.printInt(-13, false); // you can display a value from -999 to 9999 //display.printInt(-132, false); //display.printInt(9132, false); //display.printInt(132, false); //display.printInt(32, false); //display.printInt(2, false); //display.printInt(2, true); } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Các Bước Thực Hiện

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
  • Thực hiện kết nối theo hình trên.
  • Kết nối board ESP32 với PC qua cáp micro USB
  • Mở Arduino IDE trên PC.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Sao chép code trên và mở bằng Arduino IDE
  • Click nút Upload trên Arduino IDE để upload code lên ESP32
  • Quan sát trạng thái của màn hình 7 đoạn

Code ESP32 - Hiển Thị Số Thập Phân

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK 27 // The ESP32 pin GPIO27 connected to SCLK #define RCLK 26 // The ESP32 pin GPIO26 connected to RCLK #define DIO 25 // The ESP32 pin GPIO25 connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); display.printFloat(-9.2, 1, false); //display.printFloat(-92.4, 1, false); //display.printFloat(-9.24, 2, false); //display.printFloat(192.4, 1, false); //display.printFloat(19.24, 2, false); //display.printFloat(1.924, 3, false); } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Code ESP32 - Hiển Thị Nhiệt Độ

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // DIYables_4Digit7Segment_74HC595 library #define SCLK 27 // The ESP32 pin GPIO27 connected to SCLK #define RCLK 26 // The ESP32 pin GPIO26 connected to RCLK #define DIO 25 // The ESP32 pin GPIO25 connected to DIO DIYables_4Digit7Segment_74HC595 display(SCLK, RCLK, DIO); void setup() { Serial.begin(9600); // display 9.3°C by controlling digit by digit display.clear(); display.setNumber(1, 9); // set 9 at the 1st digit display.setDot(1); // set . at the 1st digit display.setNumber(2, 3); // set 3 at the 2nd digit display.setChar(3, SegChars::DEGREE); // set ° at the 3rd digit display.setChar(4, SegChars::C); // set C at the 3rd digit display.show(); // show on the display } void loop() { display.loop(); // MUST call the display.loop() function in loop() // DO SOMETHING HERE // NOTE: do NOT use the delay() function in loop because it affects to the multiplexing }

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.