51小程序--流水灯+花样灯

 

#include <reg51.h>

typedef unsigned char u8;

typedef unsigned int u16;

 

#define PORT P1

 

void delay(unsigned char time)

{

  unsigned int j = 100000;

  for(; time > 0; time--)

  for(;j > 0; j--);

}

 

 

void  main(void)

{

  PORT = 0xff;

  temp = 0xff;

  while(1)

  {

      delay(200000);

      temp = temp << 1;

      

      if(PORT == 0)

      {

        PORT = 0xff;

      }

  }

}

 

//该程序为灯一个一个亮

void main(void)

{

  u8 w,i;

  

  while(1)

  {

    for(i = 0, w = 0x01; i < 8; i++)

    {

      PORT = ~w;

      w <<= 1;

      delay(2000);

    }

  }

}

//只有一个灯进行流水

//花样流水灯

 

/*-----------------------------------------------

  名称:花样流水灯

  编写:Jam

  日期:2018.7.21

  修改:无

  功能:花样灯

        第一遍:LED1~LED8一个灯流水一遍

        第二遍:LED8~LED1一个灯流水一遍

        第三遍:LED1~LED8依次点亮所有灯

        第四遍:LED8~LED1依次熄灭所有灯

        第五遍:通过查表将预存的花式灯点亮

------------------------------------------------*/

 

#include <reg51.h>

 

typedef unsigned char u8;

typedef unsigned int u16;

 

#define PORT P1

 

u8 F_led[] = {0x7e,0x3c,0x18,0x00,

              0x55,0xaa,0xdb,0x99};

 

void Delay(u16 t)

{

    while(--t);

}

 

void main(void)

{

    u8 i;

    u8 temp;

    PORT = 0xff;

    

    while(1)

    {

        //从第一个灯开始亮

        for(i = 0, temp = 0x01; i < 8; i++)

        {

            PORT = ~temp;

            temp <<= 1;

            Delay(20000);

        }

        

        for(i = 0, temp = 0x80; i < 8; i++)

        {

            PORT = ~temp;

            temp >>= 1;

            Delay(20000);

        }

        

        

        for(i = 0; i < 8; i++)

        {

            PORT <<= 1;

            Delay(20000);

        }

        

        PORT = 0x80;

        

        for(i = 0,temp = 0x80; i < 8; i++)

        {

            PORT |=(temp >>= 1);

            Delay(20000);

        }

        

        for(i= 0; i < 8; i++)

        {

            PORT = F_led[i];

            Delay(20000);

        }

    }

}