Simulacrum, từ simulacrum Latin, là một sự bắt chước, giả mạo hoặc hư cấu. Khái niệm này được liên kết với mô phỏng, đó là hành động mô phỏng .Một...
Lập trình LED 7 thanh với 8051
I.Nguyên lý tinh chỉnh và điều khiển LED 7 thanh
Bài trước tất cả chúng ta học lập trình tiếp xúc để điều khiển và tinh chỉnh Output ( LED ) theo Pin và theo Port. Ở bài này tất cả chúng ta sẽ vận dụng những kiến thức và kỹ năng đó để thực thi lập trình tinh chỉnh và đ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à cụ thể về 1 con LED 7 thanh .
2. Bảng dữ liệu mã hóa với những số từ 0-9 theo kiểu LED sử dụng Anot chung .
II.Các Bài code điều khiển LED 7 thanh
1.Điều khiển 1 LED 7 thanh.
Để triển khai 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 :
Bạn đang đọc: Lập trình LED 7 thanh với 8051
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
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 tất cả chúng ta triển khai lưu mảng tài liệu LED 7 thanh ở bảng trên vào một mảng. Khi đó thành phần LED7SEG [ i ] chứa tài liệu hiển thị của số i trên LED thanh ở trên mạch với điều kiện kèm theo i nằm từ 0-9. Ở vòng lặp for, tất cả chúng ta thực thi đẩy tài liệu ra chân Port P2 lần lượt theo những mã của những số từ 0 đến 9 ra. Chạy mô phỏng tất cả chúng ta sẽ thấy những 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 tinh chỉnh và điều khiển LED 7 thanh tất cả chúng ta hoàn toàn có thể vận 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 tiêu tốn lãng phí số chân điều khiển và tinh chỉnh LED và limit số LED hoàn toàn có thể tinh chỉnh và đ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. Để xử lý 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 thi theo nguyên tắc một thời gian chỉ bật một LED 7 thanh với tài liệu nó cần hiển thị, những LED còn lại được tắt. Việc quét LED triển khai luôn phiên sáng những LED với nhu yếu trên. Quá trình quét LED chuẩn được triển khai theo những 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 chừng thời hạn ngắn để duy trì sáng
- Cắt nguồn LED vừa hiển thị. Lặp lại tiến 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ị những số từ 00-99 :
#include
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 : tất cả 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
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 những bạn đã theo dõi bài viết, những bạn hãy ĐK, like kênh youtube của mình để xem nhiều video hướng dẫn hơn nhớ .
Source: https://vh2.com.vn
Category : Tin Học