单片机LED流水灯(通过keil 5 和 STC-ISP软件实现)

基本思路:在点亮第一个LED灯的基础上,在代码上通过循环while和延迟Delay来令其不断闪烁,进而要想实现流水灯,只需要在循环当中重复添加其他LED灯即可。
 

1、点亮原理图:

92bd5621cc8d4bd7a15dbd14416103f0.jpeg

VCC:正极   绿色三角:LED灯  黄色块编号:引脚   471:电阻值为470欧

简单来说就是通过代码控制输出电平的高低进而决定是否能够使电路连接

 

2、点亮LED代码:

#include <REGX52.H>

void main()
{
	P0_0 = 0; //通过给P0_0一个低电位使其电路完整(相当于电源负极)若赋值1则为高电位 电路不通
}

 

3、实现LED灯闪烁:

#include <REGX52.H>
#include <INTRINS.H>  //为了使下面的nop能够被定义

void Delay500ms()		//@12.000MHz //以下这一段结束均为STC-ISP提供的延时代码 复制粘贴即可
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{

	while(1){
		P0_0 = 0;       //先给予低电平,充当负极,使LED灯亮
		Delay500ms();   //使其亮的时间为500ms
		P0_0 = 1;       //再给予它高电位(两端都是高电位 电路不通 LED灯灭)
		Delay500ms();   //使灭的时间也为500ms(如果不规定否则灭的时间过短,人的肉眼无法察觉)
		
	}
}

 

 

4、在以上基础上要想实现流水灯,只需要在循环可当中再次按顺序依次添加其他LED灯代码即可

#include <REGX52.H>
#include <INTRINS.H>

void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{

	while(1){
		P0_0 = 0;
		Delay500ms();
		P0_0 = 1;
		P0_1 = 0;
		Delay500ms();
		P0_1 = 1;
		P0_2 = 0;
		Delay500ms();
		P0_2 = 1;
		P0_3 = 0;
		Delay500ms();
		P0_3 = 1;
		P0_4 = 0;
		Delay500ms();
		P0_4 = 1;
		P0_5 = 0;
		Delay500ms();
		P0_5 = 1;
		P0_6 = 0;
		Delay500ms();
		P0_6 = 1;
		P0_7 = 0;
		Delay500ms();
		P0_7 = 1;
		
	}
}

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值