Cổng Kết Nối - Glong Electronic

Xin Chào!

Đây là trang đang thử nghiệm và hoàn thiện nội dung, mong các bạn thông cảm

Mọi thắc mắc và góp ý xin gửi về mail: Nglongbs@gmail.com

Xin chân thành cảm ơn!


 
CLB ĐIỆN TỬ
Công khai group · 94 thành viên
Tham gia nhóm
 

Các bài tập về hiển thị led đơn

BT2: Tạo hiệu ứng led sáng đuổi nhau

Sơ đồ mạch điện:

Cinque Terre

Yêu cầu:

- Các led sáng lần lượt từ P0_0 đến P0_7.

- Mỗi led sáng trong 1s.

Mô phỏng hoạt động của yêu cầu:

Cinque Terre

Chương trình lập trình:


#include <REGX52.H>	//khai báo thư viện cho IC89S52
void delay_ms(unsigned int t)
{
	unsigned int i,j;
	for(i=0;i<t;i++)
	for(j=0;j<125;j++);
}
void main()
{
while(1)
	{
	P0=0xfe;	// Bật led 1, tắt các led khác
	delay_ms(1000);
	P0=0xfd;	// Bật led 2, tắt các led khác
	delay_ms(1000);
	P0=0xfb;	// Bật led 3, tắt các led khác
	delay_ms(1000);
	P0=0xf7;	// Bật led 4, tắt các led khác
	delay_ms(1000);
	P0=0xef;	// Bật led 5, tắt các led khác
	delay_ms(1000);
	P0=0xdf;	// Bật led 6, tắt các led khác
	delay_ms(1000);
	P0=0xbf;	// Bật led 7, tắt các led khác
	delay_ms(1000);
	P0=0x7f;	// Bật led 8, tắt các led khác
	delay_ms(1000);
	P0=0xff;	// tắt tất cả các led
	delay_ms(1000);
	}
}
	

- Chương trình có thể viết gọn lại với thuật toán dịch bít


#include <REGX52.H>	//khai báo thư viện cho IC89S52
void delay_ms(unsigned int t)
{
	unsigned int i,j;
	for(i=0;i<t;i++)
	for(j=0;j<125;j++);
}
void main()
{
	unsigned int x;	//khai báo một biến số nguyên không dấu để phục vụ tính toán phép dịch bit
	P0=0xfe;	//khởi tạo giá trị ban đầu cho thanh ghi P0, với trạng thái led 1 sáng các led khác tắt
while(1)
	{
	delay_ms(1000);
	x=P0<<1;	// dịch thanh ghi P0 một bit và nạp giá trị thu được vào biến x
	x=x|0x01;	// Or biến x với giá trị 00000001 để nạp bit 1 vào LSB của biến x. Vì khi dịch bit P0, giá trị 0 được nạp vào LSB.
	P0=x;	// gán P0 bằng giá trị của x
	if(x==0xff){P0=0xfe;}	// Nếu hết một vòng hiển thị, x sẽ đạt giá trị 0xff. lúc này ta phải nạp lại giá trị khởi tạo ban đầu 
				//cho P0 để quá trình được lặp lại như lúc ban đầu
	}		   
}
	

Bài tập làm thêm;

BT1: Tạo hiệu ứng 2 led sáng cùng lúc và đuổi nhau như mô phỏng dưới đây.

Cinque Terre


Hi vọng sau bài học này các bạn có được chút thu hoạch cho mình.

Cám ơn và hẹn gặp lại!