51单片机点亮流水灯
51单片机点亮流水灯
首先介绍开发板easyboard上的LED灯
P1端口通过74HC573连接到LED灯,查询74HC573芯片手册,内部由8个D锁存器构成,当OE为低电平,LE为高电平,则输出Q=D,此时芯片相当于一个“透明”的状态,输入是什么,输出就是什么,在这里的目的是为了提高P1端口的输出能力,不接也没事。
由于开发板以及使用跳线帽将LED-E-IN接到VCC上,所以只需要操作端口输出高低电平,就可以控制LED的亮灭。
/***51单片机点亮流水灯***/
#include <reg52.h>
/***delay_ms函数***/
void delay_ms(unsigned int xms)
{
unsigned int i=0,j=0;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
unsigned int i=0;
char LED=0x01;//用于移位
/***流水灯亮灭方向标志***/
char up_flag=0;//向上标志
char down_flag=0;//向下标志
down_flag=1;//默认向上
while(1)
{
if(up_flag==1)
{
for(i=0;i<8;i++)//向上循环移位
{
P1=~(LED<<i);
delay_ms(1000);//延时1s
}
up_flag=0;
down_flag=1;
}
if(down_flag==1)//向下循环移位
{
for(i=0;i<8;i++)
{
P1=~((LED<<7)>>i);
delay_ms(1000);
}
down_flag=0;
up_flag=1;
}
}
}