51单片机 #
流水灯原理:
- 通过PCB原理图可以知道控制LED灯亮灭的是P2口的,并且接入+VCC5V即高电平1,LED灯要那个亮的话那个线,P2端要设置为0,不亮就设置为1,有电势差,即有电流流过灯亮;

#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)
{
P2 = 0xFE; // 1111 1110
Delay500ms();
P2 = 0xFD; // 1111 1101
Delay500ms();
P2 = 0xFB; // 1111 1011
Delay500ms();
P2 = 0xF7; // 1111 0111
Delay500ms();
P2 = 0xEF; // 1110 1111
Delay500ms();
P2 = 0xDF; // 1101 1111
Delay500ms();
P2 = 0xBF; // 1011 1111
Delay500ms();
P2 = 0x7F; // 0111 1111
Delay500ms();
}
}void main()
{
int i;
while(1)
{
for(i = 0; i < 8; i++)
{
P2 = ~(1 << i);
Delay500ms();
}
}
}| 端口 | 特点 | 能不能直接点LED |
|---|---|---|
| P0 | 无上拉(最特殊) | ❌(要加电阻) |
| P1 | 普通IO | ✔ |
| P2 | 普通 + 地址 | ✔ |
| P3 | 多功能口 | ✔(但要小心占用功能) |

