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

BÀI 8 : Lập trình nháy LED ĐƠN với 8051.

26 Tháng Sáu, 2022
in 8051, Vi Điều Khiển
2k 86

Ở bài này sẽ hướng dẫn các bạn lập trình điều khiển Output cơ bản thực hành với LED đơn. Các bạn thực hiện vẽ mạch sau trong Proteus.

I.Lập trình điều khiển từng Pin của vi điều khiển.

8051 cho phép chúng ta tác động tới từng chân IO của vi điều khiển. Để sử dụng tính năng này chúng ta có thể sử dụng khai báo sbit để định nghĩa tên cho chân chúng ta muốn sử dụng. Khai báo sbit được thực hiện theo mẫu sau:

sbit LED = P1^0;

Ở đây, chân P1.0 được định nghĩa có tên là LED.

Khi các bạn gán chân đó bằng giá trị 0 thì đầu ra sẽ ở mức 0V còn khi các bạn gán cho chân đó ở mức 1 thì sẽ có mức điện áp ra là 5V.

Ví dụ ở chương trình sau chúng ta sẽ sử dụng định nghĩa sbit để điều khiển chân P1.0 của 8051 thực hiện chức năng nhấp nháy một con LED. Các bạn xem code theo mẫu sau.

#include <REGX52.H>
sbit LED = P1^0; 
void Fn_Delay (unsigned int vrui_Time);
int main(){
      while(1)
      {
        LED = 0;
        Fn_Delay(50000);
        LED = 1;
        Fn_Delay(50000);
      }
      return 0;
}
void Fn_Delay (unsigned int vrui_Time){
      while(vrui_Time --);
}

II.Lập trình điều khiển theo Port của vi điều khiển.

Ngoài điều khiển theo từng chân chúng ta có thể xuất dữ liệu ouput theo cả Port trên 8051. 8051 là một vi điều khiển 8 bit và một Port với điều kiện các  Pin đó chung một Port. Để can thiệp đến một Port các bạn chỉ cần gán dữ liệu các bạn mong muốn cho tên Port đó. Ví dụ như sau:

P2 = 0x55;

Với câu lệnh trên các bạn đã xuất dữ liệu trên Port 2 như sau: 0-1-0-1-0-1-0-1 tương ứng với chiều từ P2.7 tới P2.0.

Giới thiệu về toán tử | và &:

Toán tử | là toán tử OR bit còn toán tử & là toán tử AND bit.

0 | 0 = 0
0 | 1 = 1
1 | 1 = 1
0 & 0 = 0
0 & 1 = 0
1 & 1=1

 

Đây là 2 toán tử rất hay được sử dụng trong việc khi bạn muốn tác động đến một vài bit trong một Port mà các bạn muốn xuất dữ liệu.

2 toán tử << và >>. Đây là 2 toán tử dùng để dịch bít. Các bạn quan sát các ví dụ sau để hiểu rõ về 2 toán tử này:

0x01<<1 = 0x02; //00000001 -> 00000010

0x10>>1 = 0x08; //00010000 -> 00001000

 

Sau đây là một ví dụ tạo hiệu ứng LED chạy từ trên xuống và lặp lại.

int main(){
 unsigned char i;
 while(1){
  for (i = 0; i < 8; i++){
   P1 = 0x01<<i;
   Fn_Delay(5000);
  }
 }
   return 0;
}

Sau đây là một ví dụ tạo hiệu ứng LED chạy từ dưới lên và lặp lại.

int main(){
  unsigned char i;
  while(1){
  for (i = 0; i < 8; i++){
    P1 = 0x80>>i;
    Fn_Delay(5000);
    }
  }
  return 0;
}

Sử dụng hàm con

Sau đây là 1 hàm con làm 8 led sáng dần, dùng mảng

void nhayDanPhai(){
  int i;
  char sangDan[]={0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC,0xFE, 0xFF};
  for(i = 0; i<8; i++){
   P1 = sangDan[i];
   Fn_Delay(100000);
  }
  P1 = 0x00;
}

 

Hàm con sau làm sáng dần 8 led, dùng vòng lặp:

void nhayDanTrai(){
   int i;
   P1 = 0x01;
   for(i = 0; i<8; i++){
    P1= P1|(0x01<<i);
    Fn_Delay(100000);
   }
   P1 = 0x00;
}

 

Hàm con tiếp theo làm 8 Led sáng nhỏ giọt.

void sangNhoGiot(){
  int i,j, K = 0x00;
  for(i = 7; i>=0; i--)
  {
   for(j =0; j<=i ; j++ )
   {
    P1 = (0x01 <<j)|K;
    Fn_Delay(100000);
   }
   K = P1;
  }
}

 

CẢM ƠN CÁC BẠN ĐÃ ĐỌC BÀI VIẾT CỦA MÌNH CÁC BẠN NHỚ LIKE VÀ ĐĂNG KÝ KÊNH YOUTUBE CỦA MÌNH ĐỂ XEM NHIỀU VIDEO HƯỚNG DẪN BỔ ÍCH 

Tags: 8051giao tiếp với led đơn 8051LED đơn
Share1585Tweet991

Related Posts

lập trình led 7 thanh
8051

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

4 Tháng Bảy, 2022
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
BÀI 12: Đọc bàn phím khóa số với 8051.
8051

BÀI 12: Đọc bàn phím khóa số với 8051.

26 Tháng Sáu, 2022
Next Post
Bài 3: Lập trình LED Matrix với 8051.

Bài 3: Lập trình LED Matrix với 8051.

Lập trình Truyền thông nối tiếp với 8051

Lập trình Truyền thông nối tiếp với 8051

5 1 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
1 Bình luận
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
HIẾU
HIẾU
2 năm trước

em viết thì toàn báo lỗi c202 nhấn vào thì chỉ đến dòng lệnh có P1

0
Trả lời

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