51单片机-流水灯

一.目标

1.实现八个LED灯的点亮、闪烁
2.实现八个LED灯的依次点亮、熄灭、

二.仿真图在这里插入图片描述

三.代码

1.点亮、闪烁
void Delay(unsigned int t) 		//延时函数。通过延时来实现LED灯的同时点亮和熄灭(即实现闪烁目的)
{
	while(t--);
}

void LED_shan()
{
	char i;						//定义一个参数i	
	for(i=0;i<3;i++)			//使用for循环来控制闪烁时间,这里设定为3秒。
	{P1=0x00;					//16进制=2进制 0000 0000
	 Delay(50000);				//延时时间设定为50000毫秒
	 P1=0xff;					//16进制=2进制 1111 1111
	 Delay(50000);
	}
}
2.依次点亮熄灭,逆序熄灭
sbit D1=P1^0;				//定义P1口的8个接口
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit D7=P1^6;
sbit D8=P1^7;

void LED_liu()
{
	D1=0;					//由于图中LED灯是负极连接芯片,所以需要输出一个低电平来实现LED灯的点亮
	Delay(50000);			//由于是依次点亮、熄灭,所以使用延时函数来控制LED灯的亮灭
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D1=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D7=1;
	Delay(50000);
	D8=1;
	Delay(50000);
	
	D1=0;
	Delay(50000);
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D8=1;					//逆序熄灭,所以要改变顺序从12345678变为87654321
	Delay(50000);
	D7=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D1=1;
	Delay(50000);
}
3.完整代码
#include<reg51.h>				//头文件,单片机编程基于C语言,所以也有头文件
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit D7=P1^6;
sbit D8=P1^7;

void Delay(unsigned int t) 	
{
	while(t--);
}

void LED_shan()
{
	char i;								
	for(i=0;i<3;i++)			
	{P1=0x00;
	 Delay(50000);
	 P1=0xff;
	 Delay(50000);
	}
}

void LED_liu()
{
	D1=0;
	Delay(50000);
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D1=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D7=1;
	Delay(50000);
	D8=1;
	Delay(50000);
	
	D1=0;
	Delay(50000);
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D8=1;
	Delay(50000);
	D7=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D1=1;
	Delay(50000);
}

void main() 					
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit D7=P1^6;
sbit D8=P1^7;

void Delay(unsigned int t) 	
{
	while(t--);
}

void LED_shan()
{
	char i;								
	for(i=0;i<3;i++)			
	{P1=0x00;
	 Delay(50000);
	 P1=0xff;
	 Delay(50000);
	}
}

void LED_liu()
{
	D1=0;
	Delay(50000);
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D1=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D7=1;
	Delay(50000);
	D8=1;
	Delay(50000);
	
	D1=0;
	Delay(50000);
	D2=0;
	Delay(50000);
	D3=0;
	Delay(50000);
	D4=0;
	Delay(50000);
	D5=0;
	Delay(50000);
	D6=0;
	Delay(50000);
	D7=0;
	Delay(50000);
	D8=0;
	Delay(50000);
	
	D8=1;
	Delay(50000);
	D7=1;
	Delay(50000);
	D6=1;
	Delay(50000);
	D5=1;
	Delay(50000);
	D4=1;
	Delay(50000);
	D3=1;
	Delay(50000);
	D2=1;
	Delay(50000);
	D1=1;
	Delay(50000);
}

void main() 						
{
	while(1)
	{
		LED_shan();
		LED_liu();
	}
}
void main()    					//主函数,和C语言一样
{
	while(1)
	{
		LED_shan();
		LED_liu();
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值