LED流水灯各种函数总结(定义位、端口;移位操作、循环移位)

主要内容

在这里插入图片描述

延时函数

在这里插入图片描述

定时器/计数器延时

软件延时

for循环

while循环

其他语句实现延时

在这里插入图片描述

函数的引入与调用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

利用位输出操作,实现LED灯闪烁

端口操作实现LED单灯点亮和熄灭
LED灯闪烁逻辑

延时函数
亮 延时、灭 延时;

1、利用位输出操作,实现LED流水灯

在这里插入图片描述

LED流水灯设计逻辑
各个小灯初始化;
第一个灯亮 ,延时,灭,;
第二个灯亮 ,延时,灭;…第n个灯亮 ,灭

#include<regx.h>
#include"Delay.h"  //延时函数头文件

//定义各个管脚
sbit LED0=P2^0;
sbit LED1=P2^1;
sbit LED2=P2^2;
sbit LED3=P2^3;
sbit LED4=P2^4;
sbit LED5=P2^5;
sbit LED6=P2^6;
sbit LED7=P2^7;

void main()
{
//各个管脚初始化
	LED0=1;
	LED1=1;
	LED2=1;
	LED3=1;
	LED4=1;
	LED5=1;
	LED6=1;
	LED7=1while(1)
	{
		LED0=0Delay(500);
		LED0=1;
		LED1=0Delay(500);
		LED1=1;
		LED2=0Delay(500);
		LED2=1;
		LED3=0Delay(500);
		LED3=1;
		LED4=0Delay(500);
		LED4=1;
		LED5=0Delay(500);
		LED5=1;
		LED6=0Delay(500);
		LED6=1;
		LED7=0Delay(500);
		LED7=1Delay(500);
		
	}
}

2、利用端口操作,实现LED流水灯

在这里插入图片描述

#include<regx.h>
#include"Delay.h"
void main()
{
	P2=0xff;//端口初始化
	while(1)
	{
		P2=0xfe;
			Delay(1000);
		P2=0xfd;
			Delay(1000);
		P2=0xfb;
			Delay(1000);
		P2=0xf7;
			Delay(1000);
		P2=0xef;
			Delay(1000);
		P2=0xdf;
			Delay(1000);
		P2=0xbf;
			Delay(1000);
		
	}
}

3、利用移位操作,实现流水灯

在这里插入图片描述

#include<regx.h>
#include"Delay.h"
//移位+取反
void main()
{
	unsigned char w,i;
	P2=0xff;  //初始化
	//w=0x01;  该语句应放在while循环内,否则LED流水灯无法循环
	while(1)
	{
		w=0x01;
 		for(i=0;i<8;i++)
		{
			P2=~w;
			Delay(1000);
			w<<=1;
		}
	}
}

//单纯移位
void main()
{
	unsigned char i;
	P2=0xff;
	while(1)
	{
		P2=0xfe;
		Delay();
		for(i=0;i<8;i++)
		{
			P2<<=1;
			Delay();
		}
	}
}

4、利用循环移位,实现流水灯

在这里插入图片描述

#include<intrins.h>
#include"Delay.h"
void main()
{
	unsigned char i;
	P2=0xff;		//初始化
	i=0xfe;			//i=0x01
	P2=i;
	while(1)
	{
		Delay();
		i=_corl_(i,1);
		P2=i;
		Delay();
	}
}

5、利用数组,实现流水灯

逻辑

#include<regx.h>
//创建数组
unsigned char code arr[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};	//定义数组(6)
	
unsigned char i;		//定义变量(5)
void main()
{
	P2=0xff;  //初始化  (1)
	while(1)
	{
		for(i=0;i<8;i++)	//for循环实现遍历(4)
		{
			P2=arr[i];		//让数组遍历每一个P2端口(2)
			Delay();		//延时(3)
		}	
	}
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值