LED介绍![](https://img-blog.csdnimg.cn/direct/041f8b7763634665804154d39c2cc5bd.png)
中文名:发光二极管
外文名:Light Emitting Diode
简称:LED
用途:照明、广告灯、指引灯、屏幕
创建project
点亮一个LED灯
#include <REGX52.H>
void main()
{
P2=0xFE;//二进制 1111 1110
while(1)//兜圈子
{
}
}
CPU通过控制寄存器来控制硬件电路,当左边为0而右边因为接VCC使LED灯亮(阳极接正阴极接负)
LED灯闪烁
#include <REGX52.H>
#include <INTRINS.H>
void Delay()//延迟函数(可通过STC-LSP软件延时计算器生成)
{
unsigned char i, j, k;
_nop_();//添加头文件 <INTRINS.H>
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xfe;
Delay();//单片机的频率为MHZ 通过延迟便于观察
P2=0xff;
Delay();
}
}
LED流水灯
#include <REGX52.H>
#include <INTRINS.H>
\
void Delay()
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xfe;//1111 1110
Delay();
P2=0xfd;//1111 1101
Delay();
P2=0xfb;//1111 1011
Delay();
P2=0xf7;//1111 0111
Delay();
P2=0xef;//1110 1111
Delay();
P2=0xdf;//1101 1111
Delay();
P2=0xbf;//1011 1111
Delay();
P2=0x7f;//0111 1111
Delay(); //依次从左往有闪烁
}
}
延时函数的优化
#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(unsigned int ms) //通过STC-LSP生成1ms的延时函数
{
unsigned char i, j;
while(ms) //通过while循环进行ms次1ms ->ms ms
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
ms--;
}
}
void main()
{
while(1)
{
P2=0xfe;//1111 1110
Delay1ms(500); //延时500ms
P2=0xfd;//1111 1101
Delay1ms(500);
P2=0xfb;//1111 1011
Delay1ms(500);
P2=0xf7;//1111 0111
Delay1ms(500);
P2=0xef;//1110 1111
Delay1ms(500);
P2=0xdf;//1101 1111
Delay1ms(500);
P2=0xbf;//1011 1111
Delay1ms(500);
P2=0x7f;//0111 1111
Delay1ms(500);
}
}