|
長按控制照明與炫彩兩個大模式之間的轉換,短按實現轉換后大模式里的小模式之間轉換,開關要靈敏的控制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();
}
}
|
|