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

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

a.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 những bạn gán chân đó bằng giá trị 0 thì đầu ra sẽ ở mức 0V còn khi những 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 tất cả chúng ta sẽ sử dụng định nghĩa sbit để điều khiển chân P1. 0 của 8051 thực thi tính năng nhấp nháy một con LED. Các bạn xem code theo mẫu sau .

#include

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 – ) ;
}

b.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 tất cả chúng ta hoàn toàn 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 kèm theo những Pin đó chung một Port. Để can thiệp đến một Port những bạn chỉ cần gán tài liệu những bạn mong ước cho tên Port đó. Ví dụ như sau :

1
P2 = 0x55;

Với câu lệnh trên những 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à và :
Toán tử | là toán tử OR bit còn toán tử và 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 ảnh hưởng đến một vài bit trong một Port mà những bạn muốn xuất tài 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 những 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<
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, 0 xC0, 0 xE0, 0 xF0, 0 xF8, 0 xFC, 0 xFE, 0 xFF } ;
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<
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 <
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 NHỚ :

https://www.youtube.com/channel/UCDSaa9h_t4VAlbALX0aofAg

5/5 - (1 vote)

Bài viết liên quan

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments