Sử dụng IC MAX7219 để điều khiển LED 7 thanh

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

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 !

lên
19 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Sử dụng IC MAX7219 để điều khiển LED Ma trận 8x8 - Shiftout 16 bit

Hiển thị LED 7 thanh và LED ma trận là những bài học rất cơ bản cho những người tìm hiểu về Arduino. Trên công đồng arduino.vn cũng đã có những bài viết về vấn đề này. Trong quá trình tìm hiểu các tài liệu nước ngoài, mình thấy người ta thường sử dụng IC MAX7219 để điều khiển cho cả LED ma trận và LED 7 thanh. Thấy trên cộng đồng chưa có bài viết nào về MAX7219 nên mình thực hiện bài viết này, với hy vọng có thể đơn giản hơn việc lập trình hiển thị LED ma trận. Việc hiển thị LED 7 thanh sẽ được trình bày trong các bài viết sau.

Các bạn có thể tìm hiểu trước về bài viết cùng chủ đề sau: Hiển thị hình ảnh với LED MATRIX 8x8

lên
17 thành viên đã đánh giá bài viết này hữu ích.