刚开始接触51单片机学习的同学都会先完成流水灯的小程序设计。
流水灯就是一组灯,然后在控制系统的控制下按照设定的顺序和时间来发亮和熄灭,这样就能形成一定的视觉效果,很多街上的店面和招牌上面就安了流水灯,看上去更美观。
1. 实验目的
a. 理解左移 RL、右移 RR 指令的功能。
b. 延时程序 DELAY 的具体执行过程、延时量控制等。
c. 掌握通过设置程序的跳转来实现程序循环的方法。
d. 能自左向右——自右向左——自左向右反复循环来控制一只发光管如反弹状
移动。
e. 能通过一组 I/O 口组合实现 8只 LED 的流水灯效果。
2. 电路原理图
利用preteus仿真。
它能从上到下,再从下到上交替点亮。需要程序的读者自取。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint n) // 延时函数,大约延时 n ms
{
uchar i,j;
for (i = 0 ; i < n ; i ++)
{
for (j = 0 ; j < 123 ; j ++);
}
}
void main()
{
uint i ;
P3 = 0x00; //0000 0000 初始化P1端口,使之输出低电平
while (1)
{
for ( i = 0 ; i < 8 ; i ++ )
{
P3 = ( 0x01 << i ) ;
delay(255) ;
}
for ( i = 0 ; i < 8 ; i ++ )
{
P3 = ( 0x80 >> i ) ;
delay(255) ;
}
}
}