0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Lập Trình Điều Khiển LED 7 Thanh Trên STM32F103C8T6

Đăng vào 3 tuần trước

• 3 phút đọc

Lập Trình Điều Khiển Hiển Thị LED 7 Thanh Trên STM32F103C8T6

Chào các bạn! Hôm nay, chúng ta sẽ cùng nhau tìm hiểu cách lập trình để hiển thị các số từ 1 đến 10 trên LED 7 thanh bằng vi điều khiển STM32F103C8T6. Bài viết này sẽ giúp bạn có thêm kiến thức về lập trình vi điều khiển cũng như cách kết nối mạch điện đơn giản với LED 7 thanh.

Linh Kiện Sử Dụng

  • Vi điều khiển STM32F103C8T6
  • ST-Link V2
  • LED 7 thanh anode chung
  • Breadboard
  • 7 điện trở 220 ohm
  • Dây nối

I. Giới Thiệu Về LED 7 Thanh

LED 7 thanh là thiết bị hiển thị thông dụng, được sử dụng rộng rãi trong các ứng dụng điện tử. Có nhiều kích thước khác nhau, trong bài viết này, mình sẽ sử dụng loại LED 0.36 inch với mã 3611BS (anode chung). Đối với loại cathode chung thì có mã AS.

Cách Nối Mạch

Để kết nối mạch, bạn thực hiện như sau: Nối các chân từ A1 đến A7 của vi điều khiển qua điện trở 220 ohm đến các chân a đến g của LED 7 thanh. Điều này giúp bảo vệ LED và đảm bảo hoạt động ổn định.

II. Cấu Hình Mạch Trên CubeMX

Trước khi viết chương trình, bạn cần cấu hình các chân trên phần mềm CubeMX:

  • Thiết lập đầu ra cho các chân A1 - A7.
  • Đặt tên (user label) cho từng chân để dễ dàng sử dụng trong mã nguồn.

Xem video hướng dẫn trực quan để có cách nhìn sống động hơn về quá trình cấu hình.

III. Viết Code Trên CubeIDE

Trước tiên, bạn cần khai báo mảng chứa mã hex của các số cần hiển thị:

c Copy
char numbers[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

Sau đó, hãy viết hàm để điều khiển LED 7 thanh:

c Copy
void SevSeg(char num) {
    HAL_GPIO_WritePin(a_GPIO_Port, a_Pin, num & 1);
    HAL_GPIO_WritePin(b_GPIO_Port, b_Pin, (num >> 1) & 1);
    HAL_GPIO_WritePin(c_GPIO_Port, c_Pin, (num >> 2) & 1);
    HAL_GPIO_WritePin(d_GPIO_Port, d_Pin, (num >> 3) & 1);
    HAL_GPIO_WritePin(e_GPIO_Port, e_Pin, (num >> 4) & 1);
    HAL_GPIO_WritePin(f_GPIO_Port, f_Pin, (num >> 5) & 1);
    HAL_GPIO_WritePin(g_GPIO_Port, g_Pin, (num >> 6) & 1);
}

Cuối cùng, trong vòng lặp while(1), thêm đoạn code để hiển thị các số từ 1 đến 10:

c Copy
for(uint8_t i = 0; i < 10; i++) {
    SevSeg(numbers[i]);
    HAL_Delay(1000);
}

IV. Một Số Thắc Mắc

1. Tại Sao Cần Sử Dụng Điện Trở Hạn Dòng Cho LED 7 Thanh?

Theo datasheet, dòng tối đa đi qua một thanh LED thường là 30mA. Để duy trì độ bền cho LED, thông thường, nên giảm dòng xuống dưới 20mA. Dựa vào tính toán, mình chọn giá trị điện trở 220 ohm cho dòng 15mA, thích hợp với nguồn 3.3V.

2. Tại Sao Không Sử Dụng Một Điện Trở Chung?

Việc sử dụng một điện trở chung sẽ dẫn đến tình trạng khi một vài LED tắt, dòng điện sẽ chạy dồn về các LED còn sáng, điều này có thể gây hỏng LED. Do đó, mỗi chân LED cần một điện trở riêng để giữ dòng điện ổn định.

Mình đã từng gặp khó khăn trong quá trình lập trình, nhưng sau khi mô phỏng trên phần mềm Proteus, mọi thứ trở nên dễ dàng hơn!

V. Tài Liệu Tham Khảo

  • Datasheet của LED 7 thanh để tìm hiểu thêm về thông số kỹ thuật và cách hoạt động của sản phẩm.

Chúc các bạn thành công và có nhiều trải nghiệm thú vị trong việc lập trình với STM32F103C8T6!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào