YÊU CẦU BÀI TOÁN :
- Em Hãy Viết Chương trình 8 led Sáng chạy qua chạy lại ( Led 1- Led 8 rồi từ Led 8->Led 1 ). với Chu kì 1 giây.
HƯỚNG DẪN GIẢI QUYẾT VẤN ĐỀ :
PHẦN I : PHẦN CỨNG
BƯỚC 1 : Vẽ Mạch Protues.
BƯỚC 2 : Chuẩn bị phần cứng như sau.
Các bạn Làm y chan như 3.2 Điều khiển 8 led Chớp tắt
Các bạn nhớ dùng P2 nhé !
DOWNLOAD PROTUES Tại Đây:
PHẦN II : PHẦN MỀN.
BƯỚC 1: CÁC BẠN TẠO PROJECT KEIL C V.4 TƯƠNG TỰ.
BƯỚC 2: CODE NHƯ SAU.
Code chương trình | |
#include<reg51.h> unsigned char x,y; int i; void delay_ms(unsigned int t) // khi ban su dung thach anh 12 mhz { unsigned int x,y; for(x=0;x<t;x++) { for(y=0;y<=120;y++); } } // chuong trinh chính void main() { while(1) //never ending loop { x=00000001; for(i=0;i<8;i++) { P0=x; delay_ms(200); x=x<<1; } P0=0x00; y=10000000; // ví dụ bạn muốn sáng kiểu 01000000 thì y=01000000; nó không hiểu nha vì số 0 dđứng đầu nên nó hiểu là y=1000 000 chỉ có 7 số là sai, bạn chỉnh lại là y=0x80 ( 0b0100 000 ) for(i=0;i<8;i++) { P0=y; delay_ms(200); y=y>>1; } P0=0x00; } } |
GIẢI THÍCH CHƯƠNG TRÌNH:
Hàm delay_ms();
void delay_ms(unsigned int t) // khi ban su dung thach anh 12 mhz
{
unsigned int x,y;
for(x=0;x<t;x++)
{
for(y=0;y<=120;y++);
}
}
Đây là 1 chương trình con. Cách sử dụng ta chỉ cần gọi delay_ms(1000); có nghĩa là delay 1 s.
delay_ms(200); có nghĩa là delay 0.2 s.
delay_ms(3000); có nghĩa là delay 0.3 s.
PHẦN III : VIẾT CHƯƠNG TRÌNH KEILC V.4 và Biên dịch.
Kết quả mô phỏng Protues :
Kết quả mô phỏng Thực tế :