基本思路:在点亮第一个LED灯的基础上,在代码上通过循环while和延迟Delay来令其不断闪烁,进而要想实现流水灯,只需要在循环当中重复添加其他LED灯即可。
1、点亮原理图:
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;
}
}