基于51单片机的流水灯

基于51单片机的流水灯

流水灯亮法:
1.从左到右依次亮起一个灯
2.从右到左依次亮起一个灯
3.从左到右依次点亮LED灯(前面不熄灭)
4.从右到左依次熄灭LED灯
5.全亮全灭4次循环
6.4个LED闪烁
7.从左到右隔一个灯依次亮起

代码有些繁琐,希望有大佬帮忙简化简化

#include "reg52.h"
#include<intrins.h>
 typedef unsigned char u8;
 typedef unsigned int u16;
#define led P2 //定义LED灯所在的位置

 void delay(u16 i)   //延时函数
 {
   while(i--);
 }

void main()
{
  u8 i=0;
  while(1)
  {
     led=0xfe;
     delay(20000);
     for(i=0;i<7;i++)   //从左到右依次亮起一个灯
	 {
	   led=_crol_(led,1); 
	   delay(20000);
	 }
     for(i=0;i<7;i++)   //从右到左依次亮起一个灯
	 {
	   led=_cror_(led,1);
	   delay(20000);
	 }

//从左到右依次点亮LED灯  从右到左依次熄灭LED灯
	 led=0xff;
	 delay(20000);
	 led=0xfe;
	 delay(20000);
	 led=0xfc;
	 delay(20000);
	 led=0xf8;
	 delay(20000);
	 led=0xf0;
	 delay(20000);
	 led=0xe0;
	 delay(20000);
	 led=0xc0;
	 delay(20000);
	 led=0x80;
	 delay(20000);
	 led=0x00;
	 delay(20000);
	 led=0x80;
	 delay(20000);
	 led=0xc0;
	 delay(20000);
	 led=0xe0;
	 delay(20000);
	 led=0xf0;
	 delay(20000);
	 led=0xf8;
	 delay(20000);
	 led=0xfc;
	 delay(20000);
	 led=0xfe;
	 delay(20000);
	 led=0xff;
	 delay(20000);
	 
//全亮全灭4次循环
	 led=0x00;
	 delay(20000);
	 led=0xff;
	 delay(20000);  
	 led=0x00;
	 delay(20000);
	 led=0xff;
	 delay(20000);
	 led=0x00;
	 delay(20000);
	 led=0xff;
	 delay(20000);
	 led=0x00;
	 delay(20000);
	 led=0xff;
	 delay(20000);

//4个LED闪烁
	 led=0xf0;
	 delay(20000);
	 led=0x0f;
	 delay(20000); 
	 led=0xf0;
	 delay(20000);
	 led=0x0f;
	 delay(20000); 
	 led=0xf0;
	 delay(20000);
	 led=0x0f;
	 delay(20000); 
	 led=0xf0;
	 delay(20000);
	 led=0x0f;
	 delay(20000); 

//从左到右隔一个灯依次亮起
	 led=0xfe;
	 for(i=0;i<7;i++)
	 {
	   led=_crol_(led,2); 
	   delay(20000);
	 }
	 	 


  }
}

本人萌新一枚,刚接触单片机不久,写这篇文章是希望给和我一样正在学习单片机的同学一点点参考和启发,也希望有大佬来指点指点,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值