打印

51模拟PWM控制LED灯亮度

[复制链接]
1955|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
icecoffelin|  楼主 | 2009-4-27 23:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2008-08-29 00:48#include<reg51.h>
#include<intrins.h>
sbit K1 =P1^4 ;           //PWMÖµÔö¼Ó¼ü
sbit K2 =P1^5 ;           //PWMÖµ¼õÉÙ¼ü
sbit BEEP =P2^7 ;         //·äÃùÆ÷
unsigned char PWM=0x7f ;   //¸³³õÖµ
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);
/*********************************************************/
void main()
{   
    P1=0xff;
    TMOD=0x21 ;
TH0=0xfc ;           //1msÑÓʱ³£Êý
    TL0=0x66 ;           //ƵÂʵ÷½Ú
    TH1=PWM ;            //Âö¿íµ÷½Ú
    TL1=0 ;
EA=1;
ET0=1;
ET1=1;   
    TR0=1 ;
   while(1)
   {


do{
     if(PWM!=0xff)
    {PWM++ ;delayms(10);}
        else Beep() ; 
   }
    while(K1==0);

do{
      if(PWM!=0x02)
     {PWM-- ;delayms(10);}
      else Beep() ; 
   }
    while(K2==0);
}
}
/*********************************************************/
// ¶¨Ê±Æ÷0ÖжϷþÎñ³ÌÐò £¨ÆµÂÊ£©
/*********************************************************/
void timer0() interrupt 1 

    TR1=0 ;
    TH0=0xfc ;
    TL0=0x66 ;
    TH1=PWM ;
    TR1=1 ;
    P3=0x00 ;         //Æô¶¯Êä³ö
}
/*********************************************************/
// ¶¨Ê±Æ÷1ÖжϷþÎñ³ÌÐò £¨Âö¿í£©
/*********************************************************/
void timer1() interrupt 3 

    TR1=0 ;
    P3=0xff ;        //½áÊøÊä³ö
}
/*********************************************************/
//·äÃùÆ÷×Ó³ÌÐò
/*********************************************************/
void Beep()     
{
    unsigned char i ;
    for (i=0 ;i<100 ;i++)
      {
        delay(100) ;
        BEEP=!BEEP ;            //BeepÈ¡·´
      } 
    BEEP=1 ;                    //¹Ø±Õ·äÃùÆ÷
delayms(100);

/*********************************************************/
// ÑÓʱ×Ó³ÌÐò
/*********************************************************/ 
void delay(unsigned char t)

   while(t--)   ;
}
/*********************************************************/
// ÑÓʱ×Ó³ÌÐò
/*********************************************************/
void delayms(unsigned char ms) 
{
   unsigned char i ;
   while(ms--)
    {
      for(i = 0 ; i < 120 ; i++) ;
    }
}
/*********************************************************/
 

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

19

帖子

0

粉丝