单片机的P1口可以接8个LED灯。为了实现8个流水灯的流亮烦效果,我们需要使用通用输入输出口控制LED灯的亮灭状态,同时使用计时器和中断来控制LED灯的流动速度和方向。我们可以通过编写相应的程序代码来实现这个效果。
(资料图)
要实现8个流水灯的流亮烦效果,我们可以按照以下步骤进行编程:
1、定义8个LED灯的引脚,将它们分别连接到P1口的8个端口P1.0~P1.7上。
2、编写程序,使8盏灯逐个点亮并循环,即L1亮,其余灯灭;然后L2亮,其余灯灭;然后L3亮,其余灯灭;-----L8亮,其余灯灭;然后再L1亮,其余灯灭;依次循环。
我们可以通过中断来控制LED灯的流动速度和方向。我们可以使用定时器T0的中断来实现流水灯的效果。我们可以使用以下代码实现中断服务函数:
//
//
/
声明函数为中断服务函数其后的
1
为定时器T0的中断编号;
表示使用第
组工作寄存器
//
//
/
void Time0
;">)
interrupt
1
using
{
n
+
+
;
//
用于主循环中读取
}
在单片机P1口上接有8只LED,在P3.2端口接有一只开关K1。要求K1未按下时,P1口的8只LED全亮,K1按下时,使引脚接地,产生一个跳沿触发的外中断请求,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8个LED再次全亮。
我们可以使用以下代码来实现这个效果:
#include
void delay
;">int
i
)
{
while
;">-
-
)
;
}
void main
;">)
{
while
;">1
)
{
P1
=
0xFF
;
if
;">&
0x04
)
{
int
i
;
for
;">=
;
i
<
5
;
i
+
+
)
{
P1
=
0x0F
;
delay
;">50000
)
;
P1
=
0xF0
;
delay
;">50000
)
;
}
P1
=
0xFF
;
}
}
}
流水灯控制系统的源程序如下:程序通过向P1口写入一个8位二进制数来改变每个引脚的输出状态,从而控制8个发光二极管的亮灭。其中,P1=0x7F,将P1口的8位设置为01111111输出,点亮P1.7引脚连接的发光二极管。我们可以通过内部函数_cror_ 实现循环右移。