Hướng dẫn ESP32 10/55 - Bộ đếm số sử dụng Màn hình 7 đoạn 74HC595 - Bộ học IoT ESP32
Trong hướng dẫn này, chúng ta sẽ tạo một bộ đếm kỹ thuật số sử dụng màn hình bảy đoạn được điều khiển bởi vi điều khiển ESP32. Bộ đếm sẽ tăng từ 0 đến 9 rồi giảm trở lại 0, cung cấp hình ảnh trực quan rõ ràng về quá trình đếm. Chúng ta cũng sẽ khám phá cách bật từng đoạn riêng lẻ và hiển thị chữ cái trên màn hình bảy đoạn.

Dự án này sử dụng thanh ghi dịch 74HC595 để điều khiển màn hình, cho phép chúng ta quản lý các đoạn một cách hiệu quả mà không cần sử dụng quá nhiều chân GPIO trên ESP32. Bằng cách gửi các giá trị nhị phân đến thanh ghi dịch, chúng ta có thể làm sáng các đoạn tương ứng để biểu diễn số và chữ cái. Để hiểu sâu hơn về quy trình, bạn có thể tham khảo video (trong video tại 03:15).
Phần cứng được giải thích
Các thành phần chính của dự án này bao gồm vi điều khiển ESP32, thanh ghi dịch 74HC595 và màn hình bảy đoạn. ESP32 là một vi điều khiển mạnh mẽ với khả năng Wi-Fi và Bluetooth tích hợp, phù hợp cho các dự án IoT. 74HC595 là một thanh ghi dịch cho phép chúng ta điều khiển nhiều đầu ra chỉ bằng một vài chân đầu vào. Nó hoạt động bằng cách nhận dữ liệu nối tiếp và chuyển đổi thành đầu ra song song, hoàn hảo để điều khiển màn hình bảy đoạn.
Màn hình bảy đoạn bao gồm bảy đèn LED riêng lẻ được sắp xếp theo hình số tám. Mỗi đoạn có thể được bật hoặc tắt bằng cách gửi giá trị nhị phân thích hợp đến thanh ghi dịch. Ví dụ, để hiển thị số 0, tất cả các đoạn ngoại trừ đoạn giữa (G) cần được sáng.
Chi tiết bảng dữ liệu
| Nhà sản xuất | Texas Instruments |
|---|---|
| Số bộ phận | 74HC595 |
| Điện áp Logic/IO | 2 V đến 6 V |
| Điện áp cung cấp | 2 V đến 6 V |
| Dòng điện đầu ra (mỗi kênh) | 6 mA |
| Dòng điện đỉnh (mỗi kênh) | 35 mA |
| Hướng dẫn tần số PWM | Lên đến 1 kHz |
| Ngưỡng logic đầu vào | 0,3 VCC đến 0,7 VCC |
| Sụt áp / RDS(on) / bão hòa | 0,2 V tối đa |
| Giới hạn nhiệt | 125 °C |
| Đóng gói | DIP-16 |
| Ghi chú / biến thể | Có sẵn trong nhiều loại đóng gói |
- Đảm bảo nguồn điện áp phù hợp (2 V đến 6 V).
- Giới hạn dòng điện đầu ra để tránh quá nhiệt.
- Sử dụng điện trở riêng cho mỗi đoạn để có độ sáng tối ưu.
- Cẩn thận với việc nối dây để tránh đoản mạch và kết nối sai.
- Tuân thủ cẩn thận sơ đồ chân để tránh cấu hình sai.
Hướng dẫn nối dây

Bắt đầu bằng cách thiết lập bảng mạch của bạn. Kết nối thanh nối đất (đường màu xanh) và thanh nguồn (đường màu đỏ). Đất nên kết nối với đường màu xanh ở một bên của bảng mạch, trong khi nguồn nên kết nối với đường màu đỏ ở phía đối diện. Sử dụng dây màu đen để kết nối đất của ESP32 với thanh nối đất và dây màu đỏ để kết nối chân 3.3V của ESP32 với thanh nguồn.
Tiếp theo, cắm thanh ghi dịch 74HC595 vào bảng mạch, đảm bảo rãnh được định hướng chính xác. Kết nối chân 11 (DS) với chân 25 trên ESP32, chân 12 (SH_CP) với chân 26 và chân 14 (ST_CP) với chân 27. Kết nối đất (chân 8) của thanh ghi dịch với thanh nối đất và chân 10 (MR) với thanh nguồn để kích hoạt.
Đối với màn hình bảy đoạn, kết nối các chân tương ứng với các đoạn (a-g) với các chân đầu ra của thanh ghi dịch. Sử dụng điện trở (220 ohm) nối tiếp cho mỗi đoạn để giới hạn dòng điện. Đảm bảo bạn có kết nối đúng cho chân chung, có thể là cực dương chung hoặc cực âm chung tùy thuộc vào loại màn hình của bạn.
Ví dụ mã & hướng dẫn chi tiết
Trong hàm setup, chúng ta bắt đầu bằng cách định nghĩa các chân kết nối với thanh ghi dịch là đầu ra. Điều này đảm bảo rằng ESP32 của chúng ta có thể điều khiển dữ liệu được gửi đến màn hình.
void setup ()
{
//đặt các chân là đầu ra
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
Ở đây, chúng ta định nghĩa STcp, SHcp và DS là các chân kết nối với ST_CP, SH_CP và DS của thanh ghi dịch. Việc đặt các chân này là đầu ra cho phép chúng ta điều khiển thanh ghi dịch.
Vòng lặp chính của chương trình đếm từ 0 đến 9, gửi các giá trị tương ứng đến màn hình bằng hàm shiftOut.
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); // kéo ST_CP xuống mức thấp và giữ thấp trong suốt thời gian truyền
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); // kéo ST_CP lên mức cao để lưu dữ liệu
delay(1000);
}
Vòng lặp này tăng biến num, gửi giá trị tương ứng từ datArray đến màn hình mỗi giây. Hàm shiftOut truyền dữ liệu đến thanh ghi dịch, sau đó thanh ghi này sẽ làm sáng các đoạn tương ứng.
Trình diễn / Điều mong đợi
Sau khi hoàn tất việc nối dây và nạp mã, bạn sẽ thấy màn hình bảy đoạn đếm từ 0 đến 9, tạm dừng một lát trước khi đếm ngược về 0. Mỗi số sẽ được hiển thị trong một giây. Nếu muốn tăng tốc độ đếm, bạn có thể điều chỉnh độ trễ trong vòng lặp (trong video tại 15:30).
Khi điều khiển từng đoạn riêng lẻ, hãy nhớ gửi các giá trị nhị phân chính xác để hiển thị chữ cái hoặc các đoạn cụ thể. Nếu màn hình hiển thị mờ, hãy cân nhắc thêm điện trở riêng cho từng đoạn để đảm bảo độ sáng đồng đều trên toàn màn hình.
Mốc thời gian trong video
- 00:00 Bắt đầu
- 1:53 Giới thiệu về màn hình bảy đoạn
- 4:38 Giải thích cách nối dây
- 13:15 Mã Arduino-1
- 17:01 Chọn cổng COM và bo mạch ESP32
- 18:43 Trình diễn-1
- 20:13 Hiển thị chỉ một chữ số
- 21:38 Bộ đếm lên và xuống
- 23:07 Bật/tắt từng đoạn
- 24:53 Hiển thị A, B, C, D, E và F
const int STcp = 27;//ST_CP
const int SHcp = 26;//SH_CP
const int DS = 25; //DS
int datArray[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void setup ()
{
//set pins to output
pinMode(STcp,OUTPUT);
pinMode(SHcp,OUTPUT);
pinMode(DS,OUTPUT);
}
void loop()
{
for(int num = 0; num <10; num++)
{
digitalWrite(STcp,LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
delay(1000);
}
}
Common Course Links
Common Course Files
Tài nguyên & tài liệu tham khảo
-
Tài liệuESP32 Tutorial 10/55 - SunFounder page for Seven Segmentdocs.sunfounder.com
Tập tin📁
Không có tệp nào khả dụng.