|
长按控制照明与炫彩两个大模式之间的转换,短按实现转换后大模式里的小模式之间转换,开关要灵敏的控制LED模式的转换。求教各位,怎样改进来实现上述功能,请斧正。
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit k1=P2^0;
#define led0 P0
#define led1 P1
void delay(u16 i) //普通延时函数
{
while(i--);
}
void delayms(u16 z) //延时1ms
{
u16 x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void ruo() //弱光照明
{
led0=0x00;
led1=0x00;
delay(5);
led0=0x55;
led1=0xaa;
}
void liushui() //流水灯
{
u8 j;
led0=0x01;
delay(20000);
for(j=0;j<8;j++)
{
led0=(0x01<<j);
delay(20000);
}
led0=0x00;
led1=0x08;
delay(20000);
for(j=0;j<8;j++)
{
led1=(0x08>>j);
delay(20000);
}
for(j=0;j<8;j++)
{
led1=(0x01<<j);
delay(20000);
}
led0=0x08;
led1=0x00;
delay(20000);
for(j=0;j<8;j++)
{
led0=(0x08>>j);
delay(20000);
}
}
void huxi() //呼吸灯
{
u16 cycle=400,pwm=0;//定义周期并复赋值
led1=0xff;
led0=0xff;
for(pwm=cycle-1;pwm>0;pwm--)//逐渐变暗
{
led1=0xff;
led0=0xff;
delay(pwm);
led1=0x00;
led0=0x00;
delay(cycle-pwm);
}
for(pwm=1;pwm<cycle;pwm++)//逐渐变亮
{
led1=0x00;
led0=0x00;
delay(cycle-pwm);
led1=0xff;
led0=0xff;
delay(pwm);
}
}
void sos() //sos
{
led0=0xff;
led1=0xff;
delayms(300);
led0=0x00;
led1=0x00;
delayms(300);
led0=0xff;
led1=0xff;;
delayms(300);
led0=0x00;
led1=0x00;
delayms(300);
led0=0xff;
led1=0xff;
delayms(100);
led0=0x00;
led1=0x00;
delayms(100);
led0=0xff;
led1=0xff;
delayms(100);
led0=0x00;
led1=0x00;
delayms(100);
led0=0xff;
led1=0xff;
delayms(100);
led0=0x00;
led1=0x00;
delayms(100);
led0=0xff;
led1=0xff;
delayms(100);
led0=0x00;
led1=0x00;
delayms(300);
}
void zhaoming()
{
u8 k=0;
while(1)
{
if(k1==0)
{
delayms(2000);
if(k1==0)
break;
}
if(k1==0)
{
delay(1000);
if(k1==0)
{
if(++k>2)
k=0;
while(k1==0);
}
}
switch(k)
{
case(0):
led0=0x00;
led1=0x00;break;
case(1):
ruo();break;
case(2):
led0=0x55;
led1=0xaa;
}
}
}
void xuancai()
{
u8 t=0;
while(1)
{
if(k1==0)
{
delayms(2000);
if(k1==0)
break;
}
if(k1==0)
{
delay(500);
if(k1==0)
{
if(++t>3)
t=0;
while(k1==0);
}
}
switch(t)
{
case(0):
liushui();break;
case(1):
huxi();break;
case(2):
sos();break;
case(3):
led0=0x00;
led1=0x00;break;
}
}
}
void main()
{
while(1)
{
zhaoming();
xuancai();
}
}
|
|