main.c文件
 
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h> //因为要用到左右移函数,所以加入这个头文件
#include "LED.h"
 
int a[8] = {0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
int b[8] = {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xFF};
int c[8] = {0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
 
int x=5000;
void delay1(int i)
{
while(i--);
}
 
 
void mode_1()//顺时针流水
{
Led2Clockwise_2();//led2顺时针
Led3Clockwise_2();//led3顺时针
Led1Clockwise_2();
Led0Clockwise_2();//led0顺时针全灭状态单个灯流水状态
}
void mode_2()//全灭流水到全亮
{
LedAllOn();//全亮
    Led2Clockwise_2();//led2顺时针
    Led3Clockwise_2();//led3顺时针
    Led1Clockwise_2();
  Led0Clockwise_2();//led0顺时针全灭状态单个灯流水状态
}
 
void mode_3()//逆时针流水
{
 
    Led0Anticlockwise_3();
Led1Anticlockwise_3();
Led3Anticlockwise_3();
    Led2Anticlockwise_3();
 
}
 
 
void led1mode(int i)//心形全灭流水到全亮
{
i = 0;
    while(1)
    {
        P0 = a[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P0 = 0xFF;
            break;                
        }
    }
while(1)
    {
        P1 = b[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0x03;
            P1 = 0xFF;
            break;                
        }
    }
  while(1)
    {
        P3 = b[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P3 = 0xFF;
            break;                
        }
    }
while(1)
    {
        P2 = b[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2 = 0xFF;
            break;                
        }
    }
 
}
/*----------------------------TEST------------------------------*/
void led1mode_2(int i)//心形全灭流水到全亮
{
i = 0;
    while(1)
    {
        P2=P0 = b[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2=P0 = 0xFF;
            break;                
        }
    }
}
 
void led1mode_3(int i)//p1p2同时流水灭
{
i = 0;
    while(1)
    {
        P2=P1 = c[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2=P1 = 0xFF;
            break;                
        }
    }
}
void led1mode_4(int i)//p1p2同时流水亮
{
i = 0;
    while(1)
    {
        P2=P1 = a[i];
        delay1(x);
        i++;
        if(i >= 8)
        {
            i = 0;
            P2=P1 = 0xFF;
            break;                
        }
    }
}
 
void led1mode_5(int i)//顺时针流水全亮
{
i = 0;
while(1)
{
P2 = a[i];
delay1(x);
i++;
if(i >= 8)
{
i = 0;
P2 = 0xFF;
break;                
}
}
while(1)
{
P3 = a[i];
delay1(x);
i++;
if(i >= 8)
{
i = 0;
P3 = 0xFF;
break;                
}
}
while(1)
{
P1 = a[i];
delay1(x);
i++;
if(i >= 8)
{
i = 0;
P1 = 0xFF;
break;                
}
}
while(1)
{
P0 = b[i];
delay1(x);
i++;
if(i >= 8)
{
i = 0;
P0 = 0xFF;
break;                
}
}
}
 
//想要模式
void bigmode1()
{
mode_1();
delay1(1000);
    led1mode();
}
 
 
void main()
{
char i=0;
led0=0x00;
led1=0x00;
led2=0x00;
led3=0x00;
 
while(1)
{
for(i=0;i<5;i++)
{
  LedAllOn();//全亮  
  delay1(x);
  LedAllOff();
  delay1(x);
    }
led1mode_5();
 
bigmode1();
    Led0Anticlockwise_3();//两边流水熄灭
mode_4();//两边流水熄灭
    mode_5();//两边流水亮起
led1mode_2();//两边流水亮起
 
LedAllOff();
 
for(i=0;i<3;i++)
{
Led0Anticlockwise();
Led1Anticlockwise();
Led3Anticlockwise();
Led2Anticlockwise();
 
    }
 
for(i=0;i<3;i++)
{
Led0Anticlockwise_3_1();//led0逆时针
Led1Anticlockwise_3();//led0逆时针
Led3Anticlockwise_3();
Led2Anticlockwise_3();
    }
 
    led1mode();
 
for(i=0;i<2;i++)
{
mode_6();
led1mode_3();
led1mode_4();
mode_7();
    }
 
for(i=0;i<3;i++)
{
     mode_8();
mode_9();
    }
 
  LedAllOff();
led1mode();
 
// for(i=0;i<5;i++)
// {
//   LedAllOn();//全亮  
//   delay1(x);
//   LedAllOff();
//   delay1(x);
//    }
 
}
}
 
LED.c文件
 
#include <REGX52.H>
#include "LED.h"
 
//int a[][8] = {0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
 
typedef unsigned int u16;   //对数据类型进行声明定义
typedef unsigned char u8;
 
extern int m = 5000, n=1000, o=2000, p=800;
 
u8 led0_flg = 0;
u8 led1_flg = 0;
u8 led2_flg = 0;
u8 led3_flg = 0;
/*----------------------定时函数-----------------------------------*/
 
 
void delay(u16 i)
{
while(i--);
}
 
/*----------------------LED状态-1--顺时针LED全灭状态单个灯流水灯亮-------------------------------*/
void Led0Clockwise()//led0
{
u8 i;
 
for(i=0;i<8;i++)
{
P0=0x01<<i; //将1左移i位,然后将结果赋值到P0口
delay(n);
led0=0x00;
}
led0_flg = 1;
}
 
void Led0Anticlockwise()//led0逆时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P0=0x80>>i;
delay(n);
led0=0x00;
}
}
 
void Led1Clockwise()//led1顺时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P1=0x80>>i;
delay(n);
led1=0x00;
}
led1_flg = 2;
}
 
void Led1Anticlockwise()//led1逆时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P1=0x01<<i; //将1左移i位,然后将结果赋值到P0口
delay(n);
led1=0x00;
}
}
 
void Led2Clockwise()//led2顺时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P2=0x80>>i;
delay(n);
led2=0x00;
}
led2_flg = 1;
}
 
void Led2Anticlockwise()//led2逆时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P2=0x01<<i; //将1左移i位,然后将结果赋值到P0口
delay(n);
led2=0x00;
}
}
 
void Led3Clockwise()//led3顺时针
{
u8 i;
 
for(i=7;i>1;i--)
{
P3=0x01<<i;
delay(n);
led3=0x00;
}
led3_flg = 1;
}
 
void Led3Anticlockwise()//led3逆时针
{
u8 i;
 
for(i=0;i<7;i++)
{
P3=0x04<<i;
delay(n);
led3=0x00;
}
}
/*----------------------LED状态-2-顺时针led全亮状态单个流水灯灭状态--------------------------------*/
void Led0Clockwise_2()//led0顺时针全灭状态单个灯流水状态
{
u8 i;
 
for(i=0;i<8;i++)
{
P0=~(0x00)<<i; //将1左移i位,然后将结果赋值到P0口
delay(m);
led0=0x00;
}
}
 
void Led2Clockwise_2()//led2顺时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P2=0xff>>i;
delay(m);
led2=0x00;
}
}
 
void Led3Clockwise_2()//led3顺时针
{
u8 i;
 
for(i=0;i<7;i++)
{
P3=0xFC>>i;
delay(m);
led3=0x00;
}
}
 
void Led1Clockwise_2()//led1顺时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P1=0xff>>i;
delay(m);
led1=0x00;
}
}
/*----------------------LED状态-全亮-全灭-----------------------------*/
void LedAllOn()
{
led0=0xFF;
  led1=0xFF;
  led2=0xFF;
  led3=0xFF;
}
void LedAllOff()
{
led0=0x00;
led1=0x00;
led2=0x00;
led3=0x00;
}
/*----------------------LED状态-全亮逆时针灭----------------------------*/
void Led0Anticlockwise_3()//led0逆时针
{
u8 i;
 
for(i=0;i<9;i++)
{
P2=P0=0xFF>>i;
delay(m);
led0=0x00;
}
}
void Led0Anticlockwise_3_1()//led0逆时针
{
u8 i;
 
for(i=0;i<9;i++)
{
P0=0xFF>>i;
delay(o);
led0=0x00;
}
}
void Led1Anticlockwise_3()
{
u8 i;
 
for(i=0;i<8;i++)
{
P1=~(0x01)<<i;
delay(o);
led1=0x00;
}
}
 
void Led3Anticlockwise_3()//led3逆时针
{
u8 i;
 
for(i=0;i<7;i++)
{
P3=0xFC<<i;
delay(o);
led3=0x00;
}
}
void Led2Anticlockwise_3()//led2逆时针
{
u8 i;
 
for(i=0;i<8;i++)
{
P2=~(0x01)<<i; //将1左移i位,然后将结果赋值到P0口
delay(o);
led2=0x00;
}
}
/*----------------------两边流水模式---------------------------*/
void mode_4()//两边流水熄灭
{
   P1=0Xfe;
P3=0X7f;
delay(m);
P1=0Xfc;
P3=0X3f;
delay(m);
P1=0Xf8;
P3=0X1f;
delay(m);
P1=0Xf0;
P3=0X0f;
delay(m);
P1=0Xe0;
P3=0X07;
delay(m);
P1=0Xc0;
P3=0X03;
delay(m);
P1=0X80;
   P3=0X01;
delay(m);
P1=0X00;
   P3=0X00;
delay(m);  
}
 
void mode_5()//两边流水亮起
{
   P1=0X80;
P3=0X04;
delay(m);
P1=0XC0;
P3=0X0C;
delay(m);
P1=0XE0;
P3=0X1f;
delay(m);
P1=0XF0;
P3=0X3f;
delay(m);
P1=0XF8;
P3=0X7F;
delay(m);
P1=0XFC;
P3=0XFF;
delay(m);
P1=0XFE;
//   P3=0X01;
delay(m);
P1=0XFF;
//   P3=0X00;
delay(m);  
}
void mode_6()//半心亮起
{
P0=0X7f;
P3=0Xfc;
delay(m);
P0=0X3f;
P3=0Xf8;
delay(m);
P0=0X1f;
P3=0Xf0;
delay(m);
P0=0X0f;
P3=0Xe0;
delay(m);
P0=0X07;
P3=0Xc0;
delay(m);
P0=0X03;
P3=0X80;
delay(m);
P0=0X01;
   P3=0X00;
delay(m);
P0=0X00;
//   P3=0X00;
delay(m);  
}
void mode_7()//半心亮起
{
P0=0X01;
P3=0X80;
delay(m);
P0=0X03;
P3=0Xc0;
delay(m);
P0=0X07;
P3=0Xe0;
delay(m);
P0=0X0f;
P3=0Xf0;
delay(m);
P0=0X1f;
P3=0Xf8;
delay(m);
P0=0X3f;
P3=0Xfc;
delay(m);
P0=0X7f;
   P3=0Xfe;
delay(m);
P0=0Xff;
   P3=0Xff;
delay(m);  
}
 
void mode_8()//4半同时亮起
{
P0=0X7f;
P1=0Xfe;
P2=0Xfe;
P3=0Xfe;
delay(m);
P0=0X3f;
P1=0Xfc;
P2=0Xfc;
P3=0Xfc;
delay(m);
P0=0X1f;
P1=0Xf8;
P2=0Xf8;
P3=0Xf8;
delay(m);
P0=0X0f;
P1=0Xf0;
P2=0Xf0;
P3=0Xf0;
delay(m);
P0=0X07;
P1=0Xe0;
P2=0Xe0;
P3=0Xe0;
delay(m);
P0=0X03;
P1=0Xc0;
P2=0Xc0;
P3=0Xc0;
delay(m);
P0=0X01;
P1=0X80;
P2=0X80;
P3=0X80;
delay(m);
P0=0X00;
P1=0X00;
P2=0X00;
P3=0X00;
delay(m);
}
void mode_9()//4半同时亮起
{
P0=0X01;
P1=0X80;
P2=0X80;
P3=0X80;
delay(m);
P0=0X03;
P1=0Xc0;
P2=0Xc0;
P3=0Xc0;
delay(m);
P0=0X07;
P1=0Xe0;
P2=0Xe0;
P3=0Xe0;
delay(m);
P0=0X0f;
P1=0Xf0;
P2=0Xf0;
P3=0Xf0;
delay(m);
P0=0X1f;
P1=0Xf8;
P2=0Xf8;
P3=0Xf8;
delay(m);
P0=0X3f;
P1=0Xfc;
P2=0Xfc;
P3=0Xfc;
delay(m);
P0=0X7f;
P1=0Xfe;
P2=0Xfe;
P3=0Xfe;
delay(m);
P0=0Xff;
P1=0Xff;
P2=0Xff;
P3=0Xff;
delay(m);
}
void Led0clockwise_3()
{
u8 i;
 
for(i=0;i<9;i++)
{
P2=P0=~0xFF>>i;
delay(m);
led0=0x00;
}
}
 
LED.h文件

#ifndef __LED_
#define __LED_
/*----------------------引脚定义-----------------------------------*/
#define led0 P0       //将P0口定义为led 后面就可以使用led代替P0口
#define led1 P1
#define led2 P2
#define led3 P3

 

void delay();

void Led0Clockwise();//led0顺时针
void Led0Anticlockwise();//led0逆时针
void Led1Clockwise();//led1顺时针
void Led1Anticlockwise();//led1逆时针
void Led2Clockwise();//led2顺时针
void Led2Anticlockwise();//led2逆时针
void Led3Clockwise();//led3顺时针
void Led3Anticlockwise();//led3逆时针

void Led0Clockwise_2();//led0顺时针全灭状态单个灯流水状态
void Led2Clockwise_2();//led2顺时针
void Led3Clockwise_2();//led3顺时针
void Led1Clockwise_2();

/*----------------------LED状态-全亮逆时针灭----------------------------*/
void Led0Anticlockwise_3();//led0逆时针
void Led1Anticlockwise_3();
void Led3Anticlockwise_3();//led3逆时针
void Led2Anticlockwise_3();//led2逆时针

void LedAllOn();//全亮
void LedAllOff();//全灭

void bigmode_2();

void mode_4();//两边流水熄灭
void mode_5();//两边流水亮起
void mode_6();//半心亮起
void mode_7();//半心亮起
void mode_8();//4半同时亮起
void mode_9();
void Led0clockwise_3();


#endif

\n#其他问题#
#includeREGX52.H#
#ifndef__LED_#
#defineled1P1#
#endif\n#
嘉立创EDA

还没有评论,抢个沙发!