51单片机4种流水灯

51单片机4种流水灯4种流水灯:1、先从右到左逐个亮灭;再从左到右逐个亮灭;2、由两侧向中间,再中间向两侧亮灭;3、先右再左逐个亮起,不熄灭;再从左到右逐个熄灭;4、先左再右逐个亮起,不熄灭;再从右到左逐个熄灭;

大家好,又见面了,我是你们的朋友全栈君。

  • 程序说明: LED连接在P2引脚上。
  • 程序现象:
    1、先从右到左逐个亮灭;再从左到右逐个亮灭;
    2、由两侧向中间,再中间向两侧亮灭;
    3、先右再左逐个亮起,不熄灭;再从左到右逐个熄灭;
    4、先左再右逐个亮起,不熄灭;再从右到左逐个熄灭;
#include "reg52.h" 

#define led P2	//对整个P2端口进行操作

/*	延时函数		*/
void delay(unsigned int del) 	//10ms * del
{
	unsigned int i,j;
	for(i=0; i<del; i++)
	for(j=0; j<1827; j++)      
	    ;
}

void  Led_Pipeline_1() //先从右到左逐个亮灭;再从左到右逐个亮灭;
{
	unsigned  char i;	
	delay(10); 
	led=0xfe;	//初始状态将LED0点亮

	for(i=0;i<8;i++)//	1111 1110
	{
		P2=~(0x01<<i);	 //将0000 0001左移i位,然后将结果取反赋值到P2口
		delay(20); 	//大约延时200ms
	}
//	led=0xFF; //熄灭所有LED
//	delay(20); 
	for(i=1;i<8;i++)
	{
		P2=~(0x80>>i);	 //将1右移i位,然后将结果取反赋值到P2口
		delay(20); 
	}	
//	led=0xFF; //熄灭所有LED
}
void Led_Pipeline_2() //两侧向中间,再中间向两侧亮灭
{
	unsigned  char i,High,Low;
	delay(20);
	led=0x7E;	//初始状态将两侧点亮
	High=led&0xF0;	//高四位 0111 0000
	Low=led&0x0F;	//低四位 0000 1110 
	delay(30);
	for(i=0;i<3;i++)
	{
		High=~(~High>>1);	 //将0x8F右移1位 0100 0111, 1011 1000
		Low=~(~Low<<1);	     //将0xFE左移1位
		
		led=(High&0xF0)|(Low&0x0F);//保证高位、低位不受到移位影响
		delay(30);
	}	
//	led=0xFF; //熄灭所有LED
//	delay(20);
//	led=0xE7;//初始状态将中间两颗LED点亮
//	delay(30);
	for(i=0;i<3;i++)
	{						 //1110 0111
		High=~(~High<<1);	 //将0x1*左移i位
		Low=~(~Low>>1);	 	 //将0x*8右移i位  
		
		led=(High&0xF0)|(Low&0x0F);//保证高位、低位不受到移位影响
		delay(30);
	}	
	led=0xFF; //熄灭所有LED
}

void Led_Pipeline_3() //先右再左逐个亮起,不熄灭;再从左到右逐个熄灭;
{
	unsigned  char i;	
	delay(20);
	led=0xfe;	//初始状态将LED0点亮
	delay(10);
	for(i=0;i<8;i++)
	{
		P2=0xFE<<i;	 //将1111 1110左移i位,然后将结果赋值到P2口
		delay(10); 	//大约延时100ms
	}
	led=0xFF; //熄灭所有LED
	for(i=0;i<8;i++)
	{
		P2=~(0xFF>>i);	 //将1111 1111右移i位,然后将结果取反赋值到P2口
		delay(10); 
	}	
	led=0xFF; //熄灭所有LED
}

void Led_Pipeline_4() //先左再右逐个亮起,不熄灭;再从右到左逐个熄灭;
{
	unsigned  char i;	
	delay(20);
	led=0x7F;	
	delay(10);
	for(i=0;i<8;i++)
	{
		P2=0x7F>>i;	 
		delay(10); 
	}
	led=0xFF; 
	for(i=0;i<8;i++)
	{
		P2=~(0xFF<<i);
		delay(10); 
	}	
	led=0xFF; //熄灭所有LED
}
void main()
{
	while(1)
	{
		Led_Pipeline_1();
		Led_Pipeline_2();
		Led_Pipeline_3();
		Led_Pipeline_4();
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132933.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • InitializingBean afterPropertiesSet方法

    afterPropertiesSet方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。afterPropertiesSet必须实现InitializingBean接口。实现InitializingBean接口必须实现afterPropertiesSet方法。

    2022年4月11日
    173
  • JAVA:基于ARCGIS二次开发可视化开发环境搭建

    JAVA:基于ARCGIS二次开发可视化开发环境搭建这两天为了搭建这么一个基于java的ArcGIS二次开发环境可着实花了一番心血。在网上搜索各种资料,大部分都是基于C#的,关于JAVA的很少,而且很杂乱,没有一个完整的、详细的、适合新手的这么一个教程。所以,当我在奋斗两天且重装一次系统,终于安装成功之后,写下这篇文章,让用java进行基于ArcEngine二次开发的人可以少走弯路。因为ArcEngine只能在32位系统上面运行,所以当前系统为64

    2022年7月23日
    15
  • php中的header函数_contenttype是什么意思

    php中的header函数_contenttype是什么意思这篇文章介绍的内容是关于PHP中php设置header函数之content-type,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下//定义编码header(‘Content-Type:text/html;charset=utf-8’);//Atomheader(‘Content-type:application/atom+xml’);//CSSheader(‘Content…

    2022年8月24日
    8
  • 2022年面试必问的Python面试题&答案

    2022年面试必问的Python面试题&答案Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识。这里我为大家准备了一份2022年最常见Python面试题合集,既有基本的Python面试题,也有高阶版试题来指导你准备面试,试题均附有答案。面试题内容包括编码、数据结构、脚本撰写等话题。

    2025年5月28日
    2
  • Telerik字符压缩算法

    Telerik字符压缩算法

    2021年8月20日
    54
  • 异或和左移的优先级_异或链表

    异或和左移的优先级_异或链表给定一个非负整数序列 a,初始长度为 N。有 M 个操作,有以下两种操作类型:A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N 增大 1。Q l r x:询问操作,你需要找到一个位置 p,满足 l≤p≤r,使得:a[p] xor a[p+1] xor … xor a[N] xor x 最大,输出这个最大值。输入格式第一行包含两个整数 N,M,含义如问题描述所示。第二行包含 N 个非负整数,表示初始的序列 A。接下来 M 行,每行描述一个操作,格式如题面所述。输出格式每个询问操

    2022年8月10日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号