码迷,mamicode.com
首页 > 其他好文 > 详细

呼吸灯和花样流水灯 51单片机实现

时间:2019-09-28 23:23:56      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:reg   sbit   闪烁   --   用途   delay   unsigned   左右   频率   

1.用C51单片机实现花样流水灯,代码如下:

#include <reg52.h> 
#define LED_All P1            //led灯所用的接口,单片机接口不同,led灯不同
void delayms()
{
unsigned char x = 0;          
unsigned char i;
unsigned char y = 0;
while(y < 0.001)             //定义led灯的切换的延时时间,越小越快
{                     //i,x,y均可以修改
x = 0;
while(x<100)
{
i = 0;
while(i<100)
{
i++;
}
x++;
}
y++;
}
}
#define LED_NUM 8          //定义led灯的数量,可快速实现不同用途的修改
void main()
{
unsigned char k;
unsigned char j;
unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};      //led灯亮灭的十六进制数组
unsigned char LED_ALL1[] = {0XFC,0XF3,0XCF,0X3F};
  while(1)
  {
    for(k=0;k<3;k++)                    //第一个for实现奇偶灯交叉闪烁三次,k的值决定了灯的闪烁次数
    {
      LED_All = 0xAA;                      
      delayms();
      LED_All = 0x55;
      delayms();
    }
    for(k=3;k>0;k--)                //实现一个流水灯左右三次(左右来回为一次)
    {
      for(j=0;j<LED_NUM;j++)        
      {
        LED_All = LED_ALL[j];
        delayms();
      }
      for(j=6;j>0;j--)
      {
        LED_All = LED_ALL[j];
        delayms();
      }
    }
    for(k=0;k<3;k++)            //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上
    {
      LED_All = 0xf0;
      delayms();
      LED_All = 0xf;
      delayms();
    }
    for(k=3;k>0;k--)              //实现两个灯依次流水3次
    {
      for(j=0;j<4;j++)
      {
        LED_All = LED_ALL1[j];
        delayms();
      }
      for(j=2;j>0;j--)
      {    
        LED_All = LED_ALL1[j];
        delayms();
      }
    }
  }
}

 

 

 

 

 

 

2.实现第一个灯为灯呼吸,程序如下;

#include <reg52.h>
sbit LED1 = P3^0;
void delay(unsigned int a)          //定义一个延时函数
{
  while(--a);
}
void main()
{
  unsigned int t,T=800;          //定义变量,T=800为led灯呼吸的呼吸频率,数值越小,频率越小
  while(1)
  {
    LED1 = 1;
    for(t=1;t<T;t++)
    {
      LED1 = 0;
      delay(t);          
      LED1 = 1;
      delay(T-t);
    }
    LED1 = 0;
    for(t=T-1;t>0;t--)
    {
      LED1 = 0;
      delay(t);
      LED1 = 1;
      delay(T-t);
    }
  }
}

呼吸灯和花样流水灯 51单片机实现

标签:reg   sbit   闪烁   --   用途   delay   unsigned   左右   频率   

原文地址:https://www.cnblogs.com/yozora/p/11605290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!