DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển 8051

Lập trình LED 7 thanh với 8051

4 Tháng Bảy, 2022
in 8051, MD Chuyển Đổi
1.5k 15

I.Nguyên lý điều khiển LED 7 thanh

 Bài trước chúng ta học lập trình giao tiếp để điều khiển Output (LED) theo Pin và theo Port. Ở bài này chúng ta sẽ áp dụng những kiến thức đó để thực hiện lập trình điều khiển hiển thị trên LED 7 thanh theo để hiển thị theo ý mình.

1.Sau đây là hình ảnh và chi tiết về 1 con LED 7 thanh.

2.Bảng dữ liệu mã hóa với các số từ 0-9 theo kiểu LED sử dụng Anot chung.

Bảng mã led 7 thanh

II.Các Bài code điều khiển LED 7 thanh

1.Điều khiển 1 LED 7 thanh.

Để thực hiện bài tập này, hãy vẽ mạch mô phỏng như hình. Linh kiện cần thêm cho bài này là Led 7 cạnh, Anode chung. Hãy search từ “7SEG-COM_ANODE”.như hình sau:

Hãy tạo 1 folder riêng  trong đó chứa file mô phỏng của Proteus, chứa file Project mới của KeilC và chứa file main.c của project mới. Sau đây là chương trình điều khiển hiển thị lần lượt các số từ 0 đến 9 trên LED 7 thanh.

Code đoạn code sau vào trong file main.c

#include <REGX52.H>
unsigned char LED7SEGCA[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void Fn_Delay (unsigned int Time){
while(Time--);
}
void tangdananot()
{         
 unsigned char i;
 for(i = 0; i <10; i++){
 P2 = LED7SEGCA[i];
 Fn_Delay(50000);
}
}
void giamdananot()
{      
 unsigned char i;
 for(i = 9; i >0; i--){
 P2 = LED7SEGCA[i];
 Fn_Delay(50000);
}
}
int main (){
while(1){
tangdananot();
giamdananot();
}
return 0;
}

Ở đây chúng ta thực hiện lưu mảng dữ liệu LED 7 thanh ở bảng trên vào một mảng. Khi đó phần tử LED7SEG[i] chứa dữ liệu hiển thị của số i trên LED thanh ở trên mạch với điều kiện i nằm từ 0-9. Ở vòng lặp for, chúng ta thực hiện đẩy dữ liệu ra chân Port P2 lần lượt theo các mã của các số từ 0 đến 9 ra. Chạy mô phỏng chúng ta sẽ thấy  các số này lần lượt hiển thị trên LED 7 thanh.

2.Điều khiển nhiều LED 7 thanh.

Ở bài toán điều khiển LED 7 thanh chúng ta có thể áp dụng theo bài toán bước 1 nối mỗi con LED 7 thanh vào 8 chân data độc lập. Tuy nhiên việc này sẽ gây lãng phí số chân điều khiển LED và limit số LED có thể điều khiển. Với số LED tăng lên đủ lớn số chân cần cũng tăng lên rất nhiều. Để giải quyết bài này có một kỹ thuật nêu ra là kỹ thuật “Quét LED”.

Kỹ thuật Quét LED thực hiện theo nguyên tắc một thời điểm chỉ bật một LED 7 thanh với dữ liệu nó cần hiển thị, các LED còn lại được tắt. Việc quét LED thực hiện luôn phiên sáng các LED với yêu cầu trên. Quá trình quét LED chuẩn được thực hiện theo các bước sau:

  • Xuất ra số muốn hiển thị.
  • Cấp nguồn cho L7S muốn hiển thị.
  • Trễ 1 khoảng thời gian ngắn để duy trì sáng
  • Cắt nguồn LED vừa hiển thị. Lặp lại quy trình 4 bước với đèn L7S tiếp theo

Sau đây là một đoạn chương trình hiển thị các số từ 00-99:

#include<REGX52.H>
sbit L7S1 = P3^0;
sbit L7S2 = P3^1;
char LED7SEG[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void Fn_Delay (unsigned int _vrui_Time){
while(_vrui_Time--);
}
void thanhtangdananot()
{
char i;
int  j;
for(i = 0; i < 100; i++){
for (j = 0; j < 30; j++) {
P2 = LED7SEG[i/10];
L7S1 = 0;
Fn_Delay(600);
L7S1 = 1;
P2 = LED7SEG[i%10];
L7S2 = 0;
Fn_Delay(600);
L7S2 = 1;
}
}
}
void thanhgiamdananot()
{
char i;
int  j;
for(i = 99; i >0; i--){
for (j = 0; j < 30; j++) {
P2 = LED7SEG[i/10];
L7S1 = 0;
Fn_Delay(600);
L7S1 = 1;
P2 = LED7SEG[i%10];
L7S2 = 0;
Fn_Delay(600);
L7S2 = 1;
}
}
}
int main () 
{
L7S1 = 0;
L7S2 = 0;
while(1){
thanhtangdananot();
thanhgiamdananot();
}
return 0;
}

Các bạn vẽ mô phỏng trong proteus như hình : chúng ta dung tranzitor npn

3.Thực hiện hiển thị 4 LED 7 thanh hiển thị lần lượt các số từ 0000-9999.

Chọn LED 7 thanh, loại 4 số. Sử dụng đoạn code sau để mô phỏng.

#include<REGX52.H>
sbit LED1 = P3^0;
sbit LED2 = P3^1;
sbit LED3 = P3^2;
sbit LED4 = P3^3;
unsigned char LED7SEG[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void Delay (unsigned int Time)
{
while(Time--);
}
void main (void)
{
unsigned int i;
unsigned int j;
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
while(1)
{
for(i = 0; i < 10000; i++)
{
for (j = 0; j < 100; j++)
{
P2 = LED7SEG[i/1000];
LED1 = 0;
Delay(100);
LED1 = 1;
P2 = LED7SEG[(i%1000)/100];
LED2 = 0;
Delay(100);
LED2 = 1;
P2 = LED7SEG[(i%100)/10];
LED3 = 0;
Delay(100);
LED3 = 1;
P2 = LED7SEG[i%10];
LED4 = 0;
Delay(100);
LED4 = 1;
}
}
}
}

Cảm ơn các bạn đã theo dõi bài viết, các bạn hãy đăng ký, like kênh youtube của mình để xem nhiều video hướng dẫn hơn nhớ.

Tags: 8051điều khiển led 7 thanhlập trinh 8051led 7 thanh
Share1094Tweet684

Related Posts

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK
Điện Tử Cơ Bản

Module nRF24L01 2.4G – Cách Thức Sử Dụng Với Tất Cả Các Dòng VĐK

19 Tháng Sáu, 2022
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

[HỌC AVR] BÀI 9: HIỂN THỊ LED 7 THANH

12 Tháng Sáu, 2022
NGUYÊN LÝ MẠCH CHUYỂN ĐỔI MÃ (Phần 2)
Các Họ IC Số

NGUYÊN LÝ MẠCH CHUYỂN ĐỔI MÃ (Phần 2)

13 Tháng Sáu, 2022
3 2 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz