Mã HEX hiển thị số từ 0–9 trên LED 7 thanh (7-segment)

Hiển thị số trên LED 7 thanh (7-segment display) là một trong những kỹ năng căn bản và quan trọng khi lập trình vi điều khiển như 8051, STM32, Arduino, v.v. Bài viết này sẽ hướng dẫn cách mã hóa các số từ 0 → 9 dưới dạng mã HEX, dùng cho cả hai loại LED anode chungcathode chung.


✅ 1. Cấu trúc chân của LED 7 thanh

LED 7 thanh bao gồm 7 đoạn có ký hiệu từ a → g cùng với chấm dp (decimal point). Mỗi đoạn điều khiển bằng một bit trong byte.

Ký hiệu      Bit tương ứng
a      Bit 0
b      Bit 1
c      Bit 2
d      Bit 3
e      Bit 4
f      Bit 5
g      Bit 6
dp      Bit 7
🔸 Với LED cathode chung: Bit = 1 là sáng, Bit = 0 là tắt
🔸 Với LED anode chung: Bit = 0 là sáng, Bit = 1 là tắt

✅ 2. Mảng mã HEX hiển thị số từ 0 → 9

📌 A. Đối với Cathode chung:

// Cathode chung: Bit = 1 là sáng
unsigned char led_cathode[10] = {
    0x3F,  // 0: 0011 1111
    0x06,  // 1: 0000 0110
    0x5B,  // 2: 0101 1011
    0x4F,  // 3: 0100 1111
    0x66,  // 4: 0110 0110
    0x6D,  // 5: 0110 1101
    0x7D,  // 6: 0111 1101
    0x07,  // 7: 0000 0111
    0x7F,  // 8: 0111 1111
    0x6F   // 9: 0110 1111
};

📌 B. Đối với Anode chung

// Anode chung: Bit = 0 là sáng
unsigned char led_anode[10] = {
    0xC0,  // 0: 1100 0000
    0xF9,  // 1: 1111 1001
    0xA4,  // 2: 1010 0100
    0xB0,  // 3: 1011 0000
    0x99,  // 4: 1001 1001
    0x92,  // 5: 1001 0010
    0x82,  // 6: 1000 0010
    0xF8,  // 7: 1111 1000
    0x80,  // 8: 1000 0000
    0x90   // 9: 1001 0000
};

✅ 3. Cách sử dụng mã HEX với vi điều khiển

P2 = led_cathode[5];  // Hiển thị số 5 cho LED cathode chung
// hoặc
P2 = led_anode[5];    // Hiển thị số 5 cho LED anode chung

💡 Mẹo: Chuyển đổi giữa cathode và anode
Nếu bạn chỉ có một mảng mã cathode và muốn dùng cho LED anode, bạn có thể đảo bit bằng cách dùng toán tử ~ (NOT):

unsigned char invert_bits(unsigned char x) {
    return ~x;
}
// Ví dụ:
P2 = invert_bits(led_cathode[3]);  // Chuyển sang mã anode chung cho số 3

📌 Lưu ý khi sử dụng

Nếu không dùng đoạn chấm dp (bit 7): bạn nên mask bit 7 để tránh điều khiển nhầm.

P2 = (P2 & 0x80) | (led_cathode[n] & 0x7F);  // giữ nguyên P2.7

Đảm bảo đấu đúng chân theo thứ tự các đoạn a → g theo phần cứng bạn đang sử dụng.

Đừng quên điện trở giới hạn dòng (~220Ω đến 1kΩ) giữa vi điều khiển và LED.

✍️ Tổng kết


Sử dụng đúng mã HEX sẽ giúp bạn hiển thị chính xác và rõ ràng trên LED 7 thanh, mở đường cho việc thực hiện các project như: đồng hồ số, hiển thị nhiệt độ, bộ đếm, v.v.

Nhận xét

Bài đăng phổ biến từ blog này

Hướng Dẫn Cài Đặt Trọn Bộ Keil uVision5 Cho C51 & ARM – Full Tính Năng

Hướng Dẫn Cài Đặt Proteus Professional v8.16 Full Tính Năng – Chi Tiết Từng Bước