• 大小: 20KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-07-28
  • 语言: 其他
  • 标签: 51单片机  

资源简介

按K1,PWM值增加,则占空比减小,LED 灯渐暗。
按K2,PWM值减小,则占空比增加,LED 灯渐亮。

资源截图

代码片段和文件信息

/*******************************************************************/

// 利用定时器控制产生占空比可变的 PWM 波
// 按K1,PWM值增加,则占空比减小LED 灯渐暗。
// 按K2,PWM值减小,则占空比增加LED 灯渐亮。
// 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。

/*********************************************************/

#include < reg51.h >
#include < intrins.h >

sbit  K1 =P3^2 ;                    //增加键
sbit  K2 =P3^3 ;                    //减少键
sbit  BEEP =P3^6 ;                //蜂鸣器
unsigned char PWM=0x7f ;   //赋初值
void Beep();
void delayms(unsigned char ms);
void delay(unsigned char t);

/*********************************************************/
void main()
{  

     P0=0xff; 
    TMOD=0x21 ;
    TH0=0xfc ;             //1ms延时常数 12M
    TL0=0x18 ;            //频率调节

    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=0x18 ;
    TH1=PWM ;
    TR1=1 ;
    P0=0x00 ;      //启动输出
}

/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3 

    TR1=0 ;
    P0=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++) ;
     }
}

/*********************************************************/

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-10-13 20:01  PWM控制LED灯渐亮渐灭实验\
     文件        4021  2019-10-13 20:00  PWM控制LED灯渐亮渐灭实验\PWMLED
     文件        5277  2019-10-13 19:57  PWM控制LED灯渐亮渐灭实验\PWMLED.LST
     文件        6728  2019-10-13 20:00  PWM控制LED灯渐亮渐灭实验\PWMLED.M51
     文件        4440  2019-10-13 19:57  PWM控制LED灯渐亮渐灭实验\PWMLED.OBJ
     文件        2136  2009-07-22 22:51  PWM控制LED灯渐亮渐灭实验\PWMLED.Uv2.bak
     文件        2685  2009-07-22 22:47  PWM控制LED灯渐亮渐灭实验\PWMLED.c
     文件         969  2019-10-13 20:00  PWM控制LED灯渐亮渐灭实验\PWMLED.hex
     文件          29  2019-10-13 20:00  PWM控制LED灯渐亮渐灭实验\PWMLED.lnp
     文件        1556  2015-12-30 21:57  PWM控制LED灯渐亮渐灭实验\PWMLED.opt.bak
     文件         550  2019-10-13 20:00  PWM控制LED灯渐亮渐灭实验\PWMLED.plg
     文件       56207  2019-10-13 20:01  PWM控制LED灯渐亮渐灭实验\PWMLED.uvopt
     文件       13254  2019-10-13 20:01  PWM控制LED灯渐亮渐灭实验\PWMLED.uvproj
     文件        1212  2009-07-22 23:01  PWM控制LED灯渐亮渐灭实验\PWMLED_Opt.Bak
     文件        2148  2008-07-19 08:23  PWM控制LED灯渐亮渐灭实验\PWMLED_Uv2.Bak
     文件          92  2009-07-24 14:58  PWM控制LED灯渐亮渐灭实验\实验操作说明.txt

评论

共有 条评论