流水灯系列

  • 流水灯
  • 电路仿真图
  • /******************************
     项目名称:项目1彩灯控制器
     任务名称:任务3流水灯控制
     任务描述:P1口控制8个LED,编程实现8个LED依次亮灭并循环。
    
     *****************************/
    #include<reg51.h>
    #include<intrins.h>
    void delay(int i)
    {
    int k,j;
    for(k=0;k<i;k++)
        for(j=0;j<100;j++);
    }
    void main()
    {
    int j=0xfe;
    while(1)
    {
    P1=j;
    delay(500);
    j=_crol_(j,1)-1;
    /**for(i=0;i<7;i++)
    {
    j=(j<<=1)+1;
    delay(500);
    P1=j;
    }
    */
    delay(500);
    }
    }
  • 流水灯震荡
  • /******************************
     项目名称:项目1彩灯控制器
     任务名称:任务3流水灯控制
     任务描述:P1口控制8个LED,编程实现8个LED闪烁震荡。
    
     *****************************/
    #include<reg51.h>
    #include<intrins.h>
    void delay(int i)
    {
    int k,j;
    for(k=0;k<i;k++)
        for(j=0;j<100;j++);
    }
    void main()
    {
    int i;
    int j=0xfe;
    while(1)
    {
    for(i=0;i<7;i++)
        {
         P1=j;
         delay(500);
         j=_crol_(j,1);
         delay(500);
        }
        for(i=0;i<7;i++)
        {
         P1=j;
         delay(500);
         j=_cror_(j,1);
         delay(500);
        }
    }
    }
  • 交通灯
  /******************************
 项目名称:项目1彩灯控制器
 任务名称:任务6交通灯控制
 任务描述:P1口控制6个LED,编程实现交通灯。

 *****************************/
 #include<reg51.h>
 void delay(int i)
 {
 int k,j;
 for(k=0;k<i;k++)
     for(j=0;j<100;j++);
 }
void main()
{
while(1)
{
int i;
 P1=0x77;//两红灯亮
 delay(1000);
 P1=0xd7;//东西路口绿灯亮,南北路口红灯亮。
 delay(6000);
 for(i=0;i<7;i++)
     {
    P1=0xb7;//东西路口黄灯亮,南北路口红灯亮。
    delay(500);
    P1=0xf7;   //东西路口灯灭,南北路口红灯亮。
    delay(500);
    }
 P1=0x77;//两红灯亮;
 delay(1000);
 P1=0x7d;//东西路口红灯亮,南北路口绿灯亮。
 delay(6000);
 for(i=0;i<7;i++)
     {
    P1=0x7b;//东西路口红灯亮,南北路口黄灯亮。
    delay(500);
    P1=0x7f;// 东西路口红灯亮,南北路口灯灭。
    delay(500);
    }
}
}

 转向灯

 /******************************
 项目名称:项目1彩灯控制器
 任务名称:任务3转向灯控制
 任务描述:P1口控制4个LED,编程实现开关控制小灯闪烁。

 *****************************/
#include<reg51.h>
 sbit k1=P1^0;
 sbit k2=P1^1;
void delay(int i)
{
int k,j;
for(k=0;k<i;k++)
   for(j=0;j<100;j++);
}
void main()
{
 
  while(1)
  {
  if(k1==0&&k2==1)      //k1关闭,左转向灯亮
  {
    P1=0xcf;
    delay(500);
    P1=0xff;
    delay(500);
    
  }
   if(k1==1&&k2==0)      //k2关闭,右转向灯亮
  {
    P1=0x3f;
    delay(500);
    P1=0xff;
    delay(500);
    
  }
   if(k1==k2)      //k1关闭,左转向灯亮
  {

    P1=0xff;
    
  }
  }

}

方法二

  /******************************
 项目名称:项目1彩灯控制器
 任务名称:任务3转向灯控制
 任务描述:P1口控制4个LED,编程实现开关控制小灯闪烁,使用switch语句。

 *****************************/
#include<reg51.h>
void delay(int i)
{
int k,j;
for(k=0;k<i;k++)
   for(j=0;j<100;j++);
}
void main()
{
int r;
while(1)
    {
    r=P1&0x03;
    switch(r)
        {
        case 0:P1=0xff;break;
        case 1:P1=0x3f;delay(500);P1=0xff;delay(500);break;
        case 2:P1=0xcf;delay(500);P1=0xff;delay(500);break;
        case 3:P1=0xff;break;
        }

    }
}       
原文地址:https://www.cnblogs.com/ssxblog/p/10957323.html