C51單片機實現呼吸燈和花樣流水燈程序

1.用C51單片機實現花樣流水燈,代碼以下:數組

#include <reg52.h>
#define LED_A P1            //led燈所用的接口,是哪一個口就寫P幾
void delayms()
{
unsigned char x = 0;          
unsigned char i;
unsigned char y = 0;
while(y < 0.001)             //定義led燈的切換的延時時間,越小越快。
{                     //(y < 0.001);(x<100);(i<100)均可以修改
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_ALL_2[] = {0XFC,0XF3,0XCF,0X3F};
  while(1)
  {
    for(k=0;k<3;k++)                    //第一個for實現奇偶燈交叉閃爍三次,想閃爍幾回就修改(K<3)中的數值;
    {
      LED_A = 0xAA;                      
      delayms();
      LED_A = 0x55;
      delayms();
    }
    for(k=3;k>0;k--)                //實現一個流水燈左右三次(從左到右再從右到左算一次);
    {
      for(j=0;j<LED_NUM;j++)        
      {
        LED_A = LED_ALL[j];
        delayms();
      }
      for(j=6;j>0;j--)
      {
        LED_A = LED_ALL[j];
        delayms();
      }
    }
    for(k=0;k<3;k++)            //實現前四個燈亮後四個燈滅,交叉閃爍3次,修改次數同上;
    {
      LED_A = 0xf0;
      delayms();
      LED_A = 0xf;
      delayms();
    }
    for(k=3;k>0;k--)              //實現兩個燈依次流水3次;
    {
      for(j=0;j<4;j++)
      {
        LED_A = LED_ALL_2[j];
        delayms();
      }
      for(j=2;j>0;j--)
      {    
        LED_A = LED_ALL_2[j];
        delayms();
      }
    }
  }
}函數

 

 

 

 

 

 

2.實現第一個燈呼吸,由暗變亮,再由亮變暗,程序以下;接口

#include <reg52.h>
sbit LED1 = P3^0;
void delay(unsigned int a)          //定義一個延時函數
{
  while(--a);
}
void main()
{
  unsigned int t,circle=800;          //定義變量,circle=800爲led燈呼吸的間隔長短,數值越小,間隔越短。
  while(1)
  {
    LED1 = 1;
    for(t=1;t<circle;t++)
    {
      LED1 = 0;
      delay(t);          
      LED1 = 1;
      delay(circle-t);
    }
    LED1 = 0;
    for(t=circle-1;t>0;t--)
    {
      LED1 = 0;
      delay(t);
      LED1 = 1;
      delay(circle-t);
    }
  }
}ci

相關文章
相關標籤/搜索