- Thành phần bắt buộc
- Hiển thị phân đoạn 4 chữ số 7
- IC thanh ghi dịch chuyển 74HC595
- Mô-đun RTC DS3231
- Sơ đồ mạch
- Lập trình Arduino UNO để ghép kênh hiển thị bảy đoạn
Đồng hồ treo tường kỹ thuật số ngày nay đang trở nên phổ biến hơn và chúng tốt hơn đồng hồ kim vì nó cung cấp thời gian chính xác theo giờ, phút và giây và dễ đọc các giá trị. Một số đồng hồ kỹ thuật số cũng có nhiều tiện ích như hiển thị nhiệt độ, độ ẩm, cài đặt nhiều báo thức, vv. Hầu hết các đồng hồ kỹ thuật số sử dụng hiển thị bảy đoạn.
Trước đây chúng tôi đã chế tạo nhiều mạch đồng hồ kỹ thuật số sử dụng màn hình 7 đoạn hoặc sử dụng màn hình LCD 16x2. Tại đây bạn có thể thiết kế PCB hoàn chỉnh của đồng hồ kỹ thuật số dựa trên AVR. Hướng dẫn này là về cách tạo đồng hồ Kỹ thuật số bằng cách ghép các màn hình 4-7 phân đoạn bằng Arduino UNO và hiển thị thời gian ở định dạng HH: MM.
Thành phần bắt buộc
- Hiển thị phân đoạn 4 chữ số 7
- Vi mạch 74HC595
- Mô-đun RTC DS3231
- Arduino UNO
- Breadboard
- Kết nối dây
Hiển thị phân đoạn 4 chữ số 7
Hiển thị phân đoạn 4 chữ số 7 có bốn hiển thị bảy phân đoạn được ghép lại với nhau hoặc chúng ta có thể nói là ghép lại với nhau. Chúng được sử dụng để hiển thị các giá trị số và một số bảng chữ cái với số thập phân và dấu hai chấm. Màn hình có thể được sử dụng theo cả hai hướng. Bốn chữ số rất hữu ích để tạo đồng hồ kỹ thuật số hoặc như đếm các số từ 0 đến 9999. Dưới đây là sơ đồ bên trong để hiển thị Phân đoạn 4 chữ số 7.
Mỗi đoạn có một đèn LED với điều khiển đèn LED riêng. Có hai loại hiển thị bảy đoạn như Cực dương chung và Cực âm chung. Hình trên cho thấy màn hình hiển thị 7 đoạn loại anode chung.
Cực dương chung
Trong Cực dương chung, tất cả các cực dương (Cực dương) của tất cả 8 đèn LED được kết nối với nhau, được đặt tên là COM. Và tất cả các cực âm được để riêng hoặc kết nối với các chân của vi điều khiển. Bằng cách sử dụng vi điều khiển, nếu đặt logic LOW để chiếu sáng đoạn LED cụ thể và đặt logic Cao để TẮT LED.
Cathode chung
Trong Cathode chung, tất cả các cực âm (cực âm) của tất cả 8 đèn LED được kết nối với nhau, được đặt tên là COM. Và tất cả các cực dương được để riêng hoặc kết nối với các chân của vi điều khiển. Bằng cách sử dụng bộ vi điều khiển, nếu đặt logic CAO để chiếu sáng đèn LED và đặt THẤP để TẮT LED.
Tìm hiểu thêm về màn hình 7 đoạn tại đây và kiểm tra cách nó có thể được giao tiếp với các bộ vi điều khiển khác:
- Giao diện hiển thị 7 phân đoạn với Arduino
- Giao diện hiển thị 7 phân đoạn với Raspberry Pi
- Giao diện hiển thị bảy phân đoạn với ARM7-LPC2148
- Giao diện hiển thị 7 phân đoạn với Vi điều khiển PIC
- Giao diện hiển thị 7 đoạn với Vi điều khiển 8051
IC thanh ghi dịch chuyển 74HC595
Các IC 74HC595 còn được gọi là 8-Bit nối tiếp IN - OUT Parallel phím Shift Register. IC này có thể nhận dữ liệu đầu vào nối tiếp và có thể điều khiển song song 8 chân đầu ra. Điều này rất hữu ích trong việc giảm các chân được sử dụng từ vi điều khiển. Bạn có thể tìm thấy tất cả các dự án liên quan đến sổ đăng ký ca 74HC595 tại đây.
Hoạt động của vi mạch 74HC595:
IC này sử dụng ba chân như Clock, Data & Latch cùng với vi điều khiển để điều khiển 8 chân ra của IC. Đồng hồ được sử dụng để cung cấp xung liên tục từ bộ vi điều khiển và chân dữ liệu được sử dụng để gửi dữ liệu như đầu ra cần được BẬT hoặc TẮT tại thời điểm đồng hồ tương ứng.
Sơ đồ chân:
Số PIN |
Tên ghim |
Sự miêu tả |
1,2,3,4,5,6,7 |
Chân đầu ra (Q1 đến Q7) |
74HC595 có 8 chân đầu ra trong đó có 7 chân này. Chúng có thể được kiểm soát nối tiếp |
số 8 |
Đất |
Kết nối với mặt đất của vi điều khiển |
9 |
(Q7) Đầu ra nối tiếp |
Chân này được sử dụng để kết nối nhiều hơn một 74HC595 dưới dạng xếp tầng |
10 |
(MR) Thiết lập lại chính |
Đặt lại tất cả các đầu ra ở mức thấp. Phải giữ ở mức cao để hoạt động bình thường |
11 |
(SH_CP) Đồng hồ |
Đây là chân đồng hồ mà tín hiệu đồng hồ phải được cung cấp từ MCU / MPU |
12 |
(ST_CP) Chốt |
Chân Latch dùng để cập nhật dữ liệu vào các chân đầu ra. Nó đang hoạt động cao |
13 |
(OE) Kích hoạt đầu ra |
Kích hoạt đầu ra được sử dụng để tắt đầu ra. Phải giữ ở mức thấp để hoạt động bình thường |
14 |
(DS) Dữ liệu nối tiếp |
Đây là chân mà dữ liệu được gửi đến, dựa trên đó 8 đầu ra được điều khiển |
15 |
(Q0) Đầu ra |
Chân đầu ra đầu tiên. |
16 |
Vcc |
Chân này cấp nguồn cho IC, thường là + 5V được sử dụng. |
Mô-đun RTC DS3231
DS3231 là một mô-đun RTC. RTC là viết tắt của Real Time Clock. Mô-đun này được sử dụng để ghi nhớ ngày giờ ngay cả khi mạch không được cấp điện. Nó có pin dự phòng CR2032 để chạy mô-đun khi không có nguồn bên ngoài. Mô-đun này cũng bao gồm một cảm biến nhiệt độ. Mô-đun có thể được sử dụng trong các dự án nhúng như tạo đồng hồ kỹ thuật số với chỉ báo nhiệt độ, v.v. Dưới đây là một số dự án hữu ích sử dụng nó:
- Bộ nạp vật nuôi tự động sử dụng Arduino
- Mô-đun RTC giao diện (DS3231) với Vi điều khiển PIC: Đồng hồ kỹ thuật số
- Mô-đun RTC giao diện (DS3231) với MSP430: Đồng hồ kỹ thuật số
- Đồng hồ thời gian thực ESP32 sử dụng Mô-đun DS3231
- Đồng hồ treo tường kỹ thuật số trên PCB sử dụng Vi điều khiển AVR Atmega16 và DS3231 RTC
Sơ đồ chân của DS3231:
Tên ghim |
Sử dụng |
VCC |
Kết nối với dương của nguồn điện |
GND |
Kết nối với mặt đất |
SDA |
Chân dữ liệu nối tiếp (I2C) |
SCL |
Chân đồng hồ nối tiếp (I2C) |
SQW |
Chân đầu ra sóng vuông |
32 nghìn |
Đầu ra dao động 32K |
Tính năng & Thông số kỹ thuật:
- RTC đếm giây, phút, giờ và năm
- Cảm biến nhiệt độ kỹ thuật số với độ chính xác ± 3ºC
- Đăng ký trang trí Lão hóa
- Giao diện 400Khz I2C
- Sự tiêu thụ ít điện năng
- Pin dự phòng CR2032 với tuổi thọ từ hai đến ba năm
- Điện áp hoạt động: 2.3 đến 5.5V
Sơ đồ mạch
Kết nối mạch giữa DS3231 RTC & Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
Kết nối mạch giữa IC 74HC595 và Arduino Uno:
Vi mạch 74HC595 |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (Dữ liệu) |
4 |
13-OE (Chốt) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Kết nối mạch giữa IC 74HC595 & 4-Digit Seven Segment & Arduino UNO:
4-DigitSevenSegment |
IC 74HC595 |
Arduino UNO |
A |
Q0 |
- |
B |
Q1 |
- |
C |
Quý 2 |
- |
D |
Q3 |
- |
E |
Q4 |
- |
F |
Q5 |
- |
G |
Q6 |
- |
D1 |
- |
10 |
D2 |
- |
11 |
D3 |
- |
12 |
D4 |
- |
9 |
Lập trình Arduino UNO để ghép kênh hiển thị bảy đoạn
Mã hoàn chỉnh và video làm việc được đính kèm ở cuối hướng dẫn này. Trong phần lập trình, cách lấy thời gian (giờ và phút) từ mô-đun RTC ở định dạng 24hr và sau đó nó được chuyển đổi thành định dạng tương ứng để hiển thị chúng trong màn hình 4 chữ số 7 Segment sẽ được giải thích.
Để giao tiếp mô-đun DS3231 RTC với Arduino UNO, bus I2C của Arduino UNO được sử dụng. Một thư viện được gọi là
Trong khái niệm này, giờ và phút được lấy đầu tiên từ RTC và chúng được kết hợp với nhau như 0930 (09:30 chiều) và sau đó các chữ số riêng lẻ được tách ra như nghìn, trăm, chục, đơn vị và các chữ số riêng lẻ được chuyển thành định dạng nhị phân như 0 thành 63 (0111111). Mã nhị phân này được gửi đến thanh ghi dịch chuyển và sau đó từ thanh ghi dịch chuyển sang thanh ghi bảy đoạn, hiển thị thành công Chữ số 0 trong hiển thị bảy đoạn. Bằng cách này, bốn chữ số được ghép lại và giờ và phút được hiển thị.
Ban đầu, thư viện cần thiết được bao gồm như thư viện DS3231 và thư viện Wire (thư viện I2C).
#include
Các chân được xác định cho điều khiển bảy phân đoạn. Các điều khiển này sẽ đóng vai trò quan trọng trong việc ghép kênh màn hình.
#define latchPin 5 #define clockPin 6 #define dataPin 4 #define dot 2
Các biến được khai báo để lưu trữ kết quả đã chuyển đổi hoặc kết quả thô lấy từ RTC.
int h; // Biến được khai báo cho giờ int m; // Biến được khai báo cho phút int nghìn; int hàng trăm; int hàng chục; đơn vị int; bool h24; bool PM;
Tiếp theo, đối tượng cho lớp DS3231 được khai báo là RTC để đơn giản hóa việc sử dụng trong các dòng tiếp theo.
DS3231 RTC;
Vì mô-đun RTC được giao tiếp với Arduino bằng cách sử dụng giao tiếp I2C. Vì vậy, wire.begin () được sử dụng để bắt đầu giao tiếp I2C trong địa chỉ mặc định của RTC vì không có mô-đun I2C nào khác.
Wire.begin ();
Các chế độ pin được định nghĩa, cho dù GPIO sẽ cư xử như đầu ra hoặc đầu vào.
pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (dấu chấm, OUTPUT);
Vòng lặp chạy vô hạn và tính theo giờ và phút từ mô-đun RTC DS3231. 'h24' chỉ ra biến định dạng 24hr.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Sau đó, giờ và phút được kết hợp thành một số (ví dụ nếu giờ là 10 và phút là 60 thì số là 10 * 100 = 1000 + 60 = 1060).
int number = h * 100 + m;
Các chữ số riêng lẻ từ số được lấy (ví dụ 1060-1 là nghìn, 0 là khối, 1 là phần mười và 0 là chữ số cuối cùng). Để phân tách các chữ số, toán tử mô-đun được sử dụng. Ví dụ, trong 1060 để có được 1 thì 1060/1000 = 1,06% 10 = 1). Vì vậy các chữ số riêng biệt được lưu trữ trong các biến riêng biệt.
int nghìn = số / 1000% 10; int trăm = số / 100% 10; int tens = number / 10% 10; int unit = number% 10;
Sau đó, một câu lệnh trường hợp chuyển đổi cho từng chữ số riêng lẻ được xác định để chuyển đổi chúng thành định dạng tương ứng (định dạng nhị phân) và gửi đi qua thanh ghi shift để hiển thị trong 7 đoạn. Ví dụ (Đối với 1 chữ số, nó được đổi thành 06 (0000 0110)). Vì vậy, nó được gửi đi qua shift và 1 chữ số được hiển thị trong 7 phân đoạn (0 cho THẤP, 1 cho CAO).
switch (t) { case 0: unit = 63; phá vỡ; trường hợp 1: đơn vị = 06; phá vỡ; trường hợp 2: đơn vị = 91; phá vỡ; trường hợp 3: đơn vị = 79; phá vỡ; trường hợp 4: đơn vị = 102; phá vỡ; trường hợp 5: đơn vị = 109; phá vỡ; trường hợp 6: đơn vị = 125; trường hợp 7: đơn vị = 07; phá vỡ; trường hợp 8: đơn vị = 127; phá vỡ; trường hợp 9: đơn vị = 103; phá vỡ; }
Sau đó, chữ số riêng lẻ ở định dạng nhị phân được gửi đi thông qua chức năng 'shiftout' với MSB trước tiên và chân chữ số tương ứng được đặt CAO và chân chốt được đặt CAO.
digitalWrite (9, THẤP); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, hàng nghìn); digitalWrite (latchPin, HIGH); digitalWrite (9, CAO); chậm trễ (5);
Điều này hoàn thành mã hoàn chỉnh. Hầu hết giải thích chức năng được đưa ra trong phần bình luận mã ngay bên cạnh dòng mã. Tần số của đồng hồ sẽ quyết định chế độ xem Thời gian và chất lượng ghép kênh Tức là nếu sử dụng đồng hồ thấp thì hiện tượng nhấp nháy có thể được nhìn thấy nếu tốc độ đồng hồ cao thì sẽ không có nhấp nháy như vậy và có thể thấy thời gian ổn định.
Lưu ý rằng để truy cập mô-đun RTC, điện áp bus I2C phải được duy trì. Để đưa ra bất kỳ gợi ý hoặc nếu bạn có bất kỳ nghi ngờ nào thì hãy bình luận bên dưới.