Viet Anh LE gửi vào
- 25316 lượt xem
Giới thiệu
Tiếp tục tìm hiểu về IC MAX7219, hôm nay mình sẽ đề cập đến việc hiển thị LED 7 thanh. Chỉ với một con chip MAX7219, chúng ta có thể hiển thi một lúc tới 8 chữ số và chỉ cần 3 chân Digital từ Arduino. Việc điều khiển LED 7 thanh trở nên thực sự hiệu quả và đơn giản.
Nếu các bạn chưa biết về MAX7219, có thể tìm hiểu lại tại đây
Phần cứng
- Arduino UNO R3
- IC MAX7219
- Điện trở 1k Ohm
- LED 7 thanh 4 chữ số Cathode chung
Nối mạch
- Chân 1 (DIN), chân 12 (LOAD) và 13 (CLK) của MAX7219 lần lượt nối với chân 2,3,4 của Arduino (Các bạn có thể dùng các chân Digital khác).
- Chân 4 và chân 9 nối xuống GND, chân 19 nối nguồn 5V, chân 18 nối nguồn 5V thông qua điện trở 1k.
- Các chân của LED 7 thanh được nối với các chân của MAX7219 như sau:
| LED 7 thanh | MAX7219 |
| Digit 1 | 2 |
| Digit 2 | 11 |
| Digit 3 | 6 |
| Digit 4 | 7 |
| Digit 5 | 3 |
| Digit 6 | 10 |
| Digit 7 | 5 |
| Digit 8 | 8 |
| A | 22 |
| B | 14 |
| C | 16 |
| D | 20 |
| E | 23 |
| F | 21 |
| G | 15 |
| DP | 17 |
Trong bài viết này, mình chỉ thực hiện hiển thị 4 chữ số với Arduino nên chỉ kết nối các chân 2, 11, 6, 7 với LED 7 thanh.
Để đơn giản việc kết nối dây, các bạn có thể sử dụng module MAX7219 + LED 7 thanh đã có bán trên thị trường.
Lập trình
MAX7219 rất thuận tiện cho việc hiển thị LED ma trận và LED 7 thanh nên người ta đã tạo sẵn thư viện. Các bạn có thể download tại đây.
Với hàm setDigit() trong thư viện, chúng ta dễ dàng hiển thị LED 7 thanh theo ý mình. Cú pháp của hàm setDigit() như sau:
setDigit(int addr, int digit, byte value, boolean dp)
- addr là địa chỉ của chip MAX7219. Nếu bạn chỉ sử dụng 1 chip MAX thì mặc định là 0. Nếu có nhiều chip MAX7219 thì chip thứ nhất địa chỉ là 0, chip thứ hai là 1, ...
- digit là vị trí của chữ số cần hiển thị (bắt đầu từ 0)
- value là chữ số cần hiển thị.
- dp để hiển thị dấu chấm, bằng 1 nếu hiển thị và bằng 0 nếu không hiển thị.
Trong bài viết này, mình sẽ lập trình tạo một đồng hồ bấm giờ để các bạn tham khảo .
#include "LedControl.h"
// thêm thư viện
LedControl segment = LedControl(2, 4, 3, 1);
// Chân 2 nối với chân DataIn
// Chân 4 nối với chân CLK
// Chân 3 nối với chân LOAD
// Sử dụng 1 IC MAX7219
int s=0;
void setup() {
segment.shutdown(0, false); // Bật hiển thị
segment.setIntensity(0, 15); // Đặt độ sáng lớn nhất
segment.clearDisplay(0); // Tắt tất cả led
}
void loop() {
int phut, giay;
giay=s%60;phut=s/60
segment.setDigit(0,0,phut/10,0); //Chữ số hàng chục của phút
segment.setDigit(0,1,phut%10,1); //Chữ số hàng đơn vị của phút, có dấu chấm ngăn cách
segment.setDigit(0,2,giay/10,0); //Chữ số hàng chục của giây
segment.setDigit(0,3,giay%10,0); //Chữ số hàng đơn vị của giây
delay(1000);s+=1;
}
Lời kết
Như vậy, với việc sử dụng MAX7219 và thư viện LedControl, việc điều khiển LED 7 thanh và LED ma trận đã trở nên thực sự dễ dàng.
Chúc các bạn thành công !



