?? led.c
字號:
#include<AT89X52.h>
unsigned char count;count1,count2;
unsigned int data time;
#define PWM_DELAY 60
#define OFF_DELAY 20
unsigned char data PWMR,PWMB,PWMG;
unsigned char DIP_P1;
//-------初始化函數(shù)------------------
void init_serialcomm( void )
{
SCON = 0x50 ;
TMOD=0x01;
TMOD |= 0x20 ;
TH1=0XFD;
TL1=0XFD;
TR1 = 1 ;
TH0=0Xff;
TL0=0X06;
TR0=1;
}
//----------延時函數(shù)-----------------
void DELAY(unsigned int MS)
{
unsigned char us,usn;
while(MS!=0)
{
usn = 2; //在12M晶振下接近1ms
while(usn!=0)
{
us=0xf9;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
void sent_data(void )
{
unsigned char OPREG;
DIP_P1=P1&0X0F;
switch(DIP_P1)
{
case 1:PWMR=100; //紅色
PWMB=0;
PWMG=0;
break;
case 2: PWMR=100; ////紅色+綠色
PWMG=100;
PWMB=0;
break;
case 3: PWMR=0; ///+綠色
PWMG=100;
PWMB=0;
break;
case 4: PWMR=0; /////藍色+綠色
PWMG=100;
PWMB=100;
break;
case 5: PWMR=0; /////藍色
PWMG=0;
PWMB=100;
break;
case 6: PWMR=100; ////紅色+藍色
PWMG=0;
PWMB=100;
break;
case 7: PWMR=100; ////紅色+藍色+綠色
PWMG=100;
PWMB=100;
break;
case 8: break;
default:PWMG=0;
PWMB=0;
PWMR=0;
break;
}
OPREG=PWMR;
OPREG+=0X80;
SBUF=OPREG;
while(TI==0);
TI=0;
SBUF=PWMB;
while(TI==0);
TI=0;
SBUF=PWMG;
while(TI==0);
TI=0;
}
//------------------------------------------------
main()
{
P1=0XFF;
DIP_P1=P1&0X0F;
init_serialcomm(); //初始化串口
while(1)
{
for(PWMR=0;PWMR<=100;PWMR++) //紅色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMR=100;PWMR>0;PWMR--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMR=0;PWMR<=100;PWMR++, PWMG++) //紅色+綠色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMR=100;PWMR>0;PWMR--, PWMG--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMG=0;PWMG<=100;PWMG++) //綠色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMG=100;PWMG>0;PWMG--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMG=0;PWMG<=100;PWMG++) //藍色+綠色
{
PWMB++ ;
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMG=100;PWMG>0;PWMG--)
{
PWMB--;
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMB=0;PWMB<=100;PWMB++) //藍色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMB=100;PWMB>0;PWMB--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMR=0;PWMR<=100;PWMR++, PWMB++) //紅色+藍色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMR=100;PWMR>0;PWMR--, PWMB--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
PWMG=0;
PWMB=0;
PWMR=0;
for(PWMR=0;PWMR<=100;PWMR++,PWMB++,PWMG++) //紅色+綠色+藍色
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( 12000);
for(PWMR=100;PWMR>0;PWMR--,PWMG--,PWMB--)
{
DELAY( PWM_DELAY );
sent_data( );
}
DELAY( OFF_DELAY);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -