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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux内核编程指南_linux内核源码详解

    linux内核编程指南_linux内核源码详解本章主要是as86与gas两种汇编语言的简要介绍,C语言与汇编语言的相互嵌套,目标文件的结构与及makefile文件的简要语法。  1,as86汇编的简要语法及命令可以参考http://blog.csdn.net/astraylinux/article/details/7301596  2,gas汇编与intel汇编的主要区别:(具体语法参考:http://blog.csdn.net/as

    2022年10月8日
    4
  • h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]

    h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。业务场景我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端…

    2022年6月7日
    32
  • 性能优化之YUICompressor压缩JS、CSS

    性能优化之YUICompressor压缩JS、CSS性能一直是项目中比较重要的一点,尤其门户网站,对页面的响应要求是很高的,从性能角度上来讲,对于Web端的优化其中重要的一点无疑是JS、CSS文件压缩,图片的融合,尽量减小文件的大小,必免占加载时占用过多的带宽。yuicompressor无疑是一个比较好的压缩工具,是yahoo的一个开源组件,下面介绍yuicompressor压缩JS、CSS文件,及在项目中的使用yuicmpressor的使用1、首先

    2022年7月18日
    21
  • java环境配置——cmd命令行输入java正常显示而javac则显示不是内部或者外部命令[通俗易懂]

    java环境配置——cmd命令行输入java正常显示而javac则显示不是内部或者外部命令[通俗易懂]重装系统之后第二发,配置pycharm,意料之外的错误,启动的时候竟然要求配置jdk,瞬时蒙蔽,不记得之前有这么一出啊,上图:于是乎就去官网下载了jdk:找到适合自己的版本,我选的最后一个windows64位的,下载好之后直接安装就行,貌似这里不会有啥问题:安装完成需要在配置环境变量,这样系统才能找到我们的java命令,具体的原理大家可以搜一下,网上讲的很清楚~~环境变…

    2022年5月28日
    49
  • Java环境及Eclipse(MyEclipse)安装[通俗易懂]

    本文旨在教会新手安装和配置jdk和java开发环境,其中编程软件用的是MyEclipse,非Eclipse,简单说一下这两个区别,一般教学用的是eclipse,MyEclispe有Eclipse的所有功能,使用方法和界面基本一致,而且之后学jsp的时候,便需要开始使用MyEclipse,所以建议大家直接使用MyEclipse即可,无需安装Eclipse。本文安装的jdk和eclipse均为64位…

    2022年4月15日
    79
  • 软件测试面试问题及答案_中软国际测试面试笔试题

    软件测试面试问题及答案_中软国际测试面试笔试题文章目录软测面试题附答案<二>二、接口面试题1、你们公司的接口测试流程是怎样的?2、接口测试里面如何分析一个bug是前端还是后端的?3、Jmeter参数化的方式有哪几种可以实现4、在接口测试中关联是什么含义?一般什么场景需要用到,postman中是怎样用的?5、常用的性能指标名称与具体含义?6、没有接口和文档怎么进行工作?三、自动化面试题1、Selenium中有哪几种元素定位方式?2、隐式等待与显式等待有什么不同?3、自动化测试里面遇到验证码,一般怎么处理比较好?四、安全1、什么是SQL注入攻击

    2022年9月29日
    3

发表回复

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

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