#include"reg52.h"
#include"Delay.h"
#include"intrins.h"
#define u8 unsigned char
#define u16 unsigned int
#define LED_ONE_PORT P0
#define LED_TWO_PORT P1
#define LED_THR_PORT P2
#define LED_FOU_PORT P3
void all_light(void);//LED灯全亮
void Ni_onebyeone_light(void);//逆时针逐个检测亮灭
void Shun_onebyeone_light(void);//顺时针逐个检测亮灭
void Ni_onebyeone_all_light(void);//逆时针,逐个全部点亮
void Shun_onebyeone_all_light(void);//顺时针,逐个全部点亮
void Ni_onebyeone_extinguish(void);//逆时针,逐个熄灭
void Shun_onebyeone_extinguish(void);//顺时针,逐个熄灭
void left_light_all_light(void);//左(顺时针)右(逆时针)同时由下至上,依次逐个亮起
void Shun_one_four_all_light(void);//每一组端口,均顺时针/逆时针亮灭
void half_all_light(void);//左右各一半亮灭延时1s
void main()
{
while(1)
{
all_light();
Ni_onebyeone_light();
Shun_onebyeone_all_light();
Ni_onebyeone_extinguish();
Shun_onebyeone_light();
Ni_onebyeone_all_light();
Shun_onebyeone_extinguish();
left_light_all_light();
Shun_one_four_all_light();
half_all_light();
}
}
//LED流水灯动画1:全亮3s后熄灭:检测LED灯是否均有效
void all_light(void)
{
LED_ONE_PORT=0x00;//P0.7-P0.0
LED_TWO_PORT=0x00;//P1.7-P1.0
LED_THR_PORT=0x00;//P2.7-P2.0
LED_FOU_PORT=0x00;//P3.7-P3.0
delay_ms(1500);//亮2s
LED_ONE_PORT=0xff;
LED_TWO_PORT=0xff;
LED_THR_PORT=0xff;
LED_FOU_PORT=0xff;
delay_ms(1500);//不亮2s
}
//LED流水灯动画2:逐个点亮一遍(逆时针)
void Ni_onebyeone_light(void)
{
u8 i,ii,iii,iiii;//定义循环变量
LED_ONE_PORT=0xfe;//1111 1110----P0.7-P0.0
delay_ms(100);
for(i=0;i<7;i++)
{
LED_ONE_PORT=_crol_(LED_ONE_PORT,1);
delay_ms(100);
}
LED_ONE_PORT=0xff;
LED_TWO_PORT=0xfe;//1111 1110----P1.7-P1.0
delay_ms(100);
for(ii=0;ii<7;ii++)
{
LED_TWO_PORT=_crol_(LED_TWO_PORT,1);
delay_ms(100);
}
LED_TWO_PORT=0xff;
LED_THR_PORT=0xfe;//1111 1110----P2.7-P2.0
delay_ms(100);
for(iii=0;iii<7;iii++)
{
LED_THR_PORT=_crol_(LED_THR_PORT,1);
delay_ms(100);
}
LED_THR_PORT=0xff;
LED_FOU_PORT=0xfe;//1111 1110----P3.7-P3.0
delay_ms(100);
for(iiii=0;iiii<7;iiii++)
{
LED_FOU_PORT=_crol_(LED_FOU_PORT,1);
delay_ms(100);
}
LED_FOU_PORT=0xff;
}
//LED流水灯动画2:逐个点亮一遍(顺时针)
void Shun_onebyeone_light(void)
{
u8 i,ii,iii,iiii;//定义循环变量
LED_FOU_PORT=0x7f;//1111 1110----P3.7-P3.0
delay_ms(100);
for(iiii=0;iiii<7;iiii++)
{
LED_FOU_PORT=_cror_(LED_FOU_PORT,1);
delay_ms(100);
}
LED_FOU_PORT=0xff;
LED_THR_PORT=0x7f;//1111 1110----P2.7-P2.0
delay_ms(100);
for(iii=0;iii<7;iii++)
{
LED_THR_PORT=_cror_(LED_THR_PORT,1);
delay_ms(100);
}
LED_THR_PORT=0xff;
LED_TWO_PORT=0x7f;//1111 1110----P1.7-P1.0
delay_ms(100);
for(ii=0;ii<7;ii++)
{
LED_TWO_PORT=_cror_(LED_TWO_PORT,1);
delay_ms(100);
}
LED_TWO_PORT=0xff;
LED_ONE_PORT=0x7f;//1111 1110----P0.7-P0.0
delay_ms(100);
for(i=0;i<7;i++)
{
LED_ONE_PORT=_cror_(LED_ONE_PORT,1);
delay_ms(100);
}
LED_ONE_PORT=0xff;
}
//LED流水灯动画3:逐个全部点亮(逆时针)
void Ni_onebyeone_all_light(void)
{
u8 j,jj,jjj,jjjj;//定义循环变量
for(j=0;j<8;j++)//1111 1111逻辑左移
{
LED_ONE_PORT=0xff<<(j+1);
delay_ms(100);
}
for(jj=0;jj<8;jj++)
{
LED_TWO_PORT=0xff<<(jj+1);
delay_ms(100);
}
for(jjj=0;jjj<8;jjj++)
{
LED_THR_PORT=0xff<<(jjj+1);
delay_ms(100);
}
for(jjjj=0;jjjj<8;jjjj++)
{
LED_FOU_PORT=0xff<<(jjjj+1);
delay_ms(100);
}
}
//LED流水灯动画4:逐个全部点亮(顺时针)
void Shun_onebyeone_all_light(void)
{
u8 j,jj,jjj,jjjj;
for(j=0;j<8;j++)//0111 1111----P0.7-P0.0
{
LED_FOU_PORT=0xff>>(j+1);//逻辑右移
delay_ms(100);
}
for(jj=0;jj<8;jj++)
{
LED_THR_PORT=0xff>>(jj+1);
delay_ms(100);
}
LED_TWO_PORT=0xff;
for(jjj=0;jjj<8;jjj++)
{
LED_TWO_PORT=0xff>>(jjj+1);
delay_ms(100);
}
LED_ONE_PORT=0xff;
for(jjjj=0;jjjj<8;jjjj++)
{
LED_ONE_PORT=0xff>>(jjjj+1);
delay_ms(100);
}
}
//LED流水灯动画5:逆时针逐个熄灭(前提:所有灯全亮)
void Ni_onebyeone_extinguish(void)
{
u8 j,jj,jjj,jjjj;//定义循环变量
for(j=0;j<8;j++)
{
LED_ONE_PORT=~(0xff<<(j+1));
delay_ms(100);
}
for(jj=0;jj<8;jj++)
{
LED_TWO_PORT=~(0xff<<(jj+1));
delay_ms(100);
}
for(jjj=0;jjj<8;jjj++)
{
LED_THR_PORT=~(0xff<<(jjj+1));
delay_ms(100);
}
for(jjjj=0;jjjj<8;jjjj++)
{
LED_FOU_PORT=~(0xff<<(jjjj+1));
delay_ms(100);
}
}
//LED流水灯动画6:顺时针逐个熄灭(前提:所有灯全亮)
void Shun_onebyeone_extinguish(void)
{
u8 j,jj,jjj,jjjj;//定义循环变量
for(jjjj=0;jjjj<8;jjjj++)
{
LED_FOU_PORT=~(0xff>>(jjjj+1));
delay_ms(100);
}
for(jjj=0;jjj<8;jjj++)
{
LED_THR_PORT=~(0xff>>(jjj+1));
delay_ms(100);
}
for(jj=0;jj<8;jj++)
{
LED_TWO_PORT=~(0xff>>(jj+1));
delay_ms(100);
}
for(j=0;j<8;j++)
{
LED_ONE_PORT=~(0xff>>(j+1));
delay_ms(100);
}
}
//LED流水灯动画7:左(顺时针)右(逆时针)同时由下至上,依次逐个亮起
void left_light_all_light(void)
{
u8 i;
for(i=0;i<8;i++)//左顺4,3 右逆1,2
{
LED_FOU_PORT=0xff>>(i+1);//逻辑右移
LED_ONE_PORT=0xff<<(i+1);//逻辑左移
delay_ms(100);
}
for(i=0;i<8;i++)
{
LED_THR_PORT=0xff>>(i+1);//逻辑右移
LED_TWO_PORT=0xff<<(i+1);//逻辑左移
delay_ms(100);
}
}
//LED流水灯动画8:每一组端口,均顺时针/逆时针亮灭
void Shun_one_four_all_light(void)
{
u8 i;
for(i=0;i<8;i++)
{
LED_FOU_PORT=0xff>>(i+1);
LED_THR_PORT=0xff>>(i+1);
LED_TWO_PORT=0xff>>(i+1);
LED_ONE_PORT=0xff>>(i+1);//顺
delay_ms(100);
}
for(i=0;i<8;i++)
{
LED_FOU_PORT=0xff<<(i+1);
LED_THR_PORT=0xff<<(i+1);
LED_TWO_PORT=0xff<<(i+1);
LED_ONE_PORT=0xff<<(i+1);//逆
delay_ms(100);
}
for(i=0;i<8;i++)//4,3顺 1,2逆
{
LED_FOU_PORT=0xff>>(i+1);
LED_THR_PORT=0xff>>(i+1);
LED_TWO_PORT=0xff<<(i+1);
LED_ONE_PORT=0xff<<(i+1);
delay_ms(100);
}
}
//LED流水灯动画9:左右各一半亮灭延时1s
void half_all_light(void)
{
LED_FOU_PORT=LED_THR_PORT=0x00;//左半全亮
delay_ms(1000);
LED_FOU_PORT=LED_THR_PORT=0xff;//左半全灭
LED_TWO_PORT=LED_ONE_PORT=0x00;//右半全亮
delay_ms(1000);
LED_TWO_PORT=LED_ONE_PORT=0xff;//左半全灭
}