⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 资料为主从控制的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;
//-------初始化函数------------------
void init_serialcomm( void ) 
{ 
    SCON = 0x50 ;
    TMOD=0x01; 
    TMOD |= 0x20 ; 
    TH1=0XFD;
    TL1=0XFD; 
    TR1 = 1 ; 
    TH0=0Xff;
	 TL0=0X06; 
    TR0=1;
} 
//----------延时函数-----------------
 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);
        


              }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -