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

📄 pwm.lst

📁 pwm的51单片机的程序实现
💻 LST
字号:
C51 COMPILER V8.02   PWM                                                                   04/04/2008 02:45:51 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN pwm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pwm.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2             
   3             名词解释:1、PWM(Pulse Width Modulation,脉宽调制)
   4                                          
   5                                   2、占空比(Duty Cycle)
   6                                          即:  在一串理想的脉冲序列中(如方波),
   7                                                正脉冲的持续时间与脉冲总周期的比值。
   8                          例如:脉冲宽度为1s,信号周期为4s的脉冲序
   9                                                列的占空比为0.25。
  10            
  11             程序说明:通过调整单位时间内I/O口输出高电平持续的时间,
  12                       即可达到对占空比的调节,也即PWM,本程序即是
  13                                   PWM的一个应用。
  14                                   
  15             应用说明:图示仅画标出了占空比的几个特殊值可以适当调
  16                       整各个变量的初值,从而控制LED对应输出几个不
  17                                   同的亮度级别。通过把周期设置的更小--频率
  18                                   提高就可以达到0%--100%之间任意的亮度级别。
  19                                   并且由于人眼的视觉暂留,看到的不是亮、灭的
  20                                   跳变,而是明暗的均匀过渡。
  21          
  22          (C)西安电子科技大学    测控技术与仪器    编写:郭世忠  日期:2008-04-04
  23           */
  24          
  25          
  26          ///////////////////////////////////////////////////////////////////////////
  27          //                                                               脉冲宽度                                                                //
  28          //                                                               |        |                                                            //
  29          //            0%      25%      50%   |75% |    100% --->占空比                 //
  30          //              __                ____     _____    ________   ___1     (高电平)         //
  31          //        |        | |       |    |   |     |  |                |                                        //
  32          //    |________| |_______|    |___|         |__|                |  ___0 (低电平)         //
  33          //                                                                                                                                               //
  34          //    |   500  |   500   |   500  |  500   |  500   |                                    //
  35          /*        500是一次高低电平变化的周期,可根据需要自定     */                     //
  36          //                                                                                                                                               //
  37          // 注意:  我们的学习板中,P1口的LED是低电平有效。因此,                         //
  38          //         占空比为0%时最亮,占空比为100%时熄灭,注意区别。                              //
  39          ///////////////////////////////////////////////////////////////////////////
  40          
  41          
  42          
  43          /**************************************************************************
  44              功能:使P1口的八个LED发的光由 亮到暗 均匀过渡
  45                
  46              说明:程序只会执行一个变化过程,要重复观察效果
  47                    可按 RST 键复位单片机,即可从头执行程序
  48          /**************************************************************************/
  49          
  50          
  51          
  52          #include<reg52.h>        /*51寄存器头文件*/ 
  53          
  54          
  55          void main(void)          /*主程序*/ 
C51 COMPILER V8.02   PWM                                                                   04/04/2008 02:45:51 PAGE 2   

  56          {
  57   1        unsigned int i,t;      /*变量定义*/ 
  58   1      
  59   1      while(1)                         /*主循环(死循环),单片机必须是死循环*/ 
  60   1       {                                      
  61   2                                                                                                                                                 
  62   2      //---------------------------------------------------------------------------   
  63   2         P1=0xff;              //P1口输出高电平       即P1.7-----P1.0依次对应 1111 1111
  64   2         for(i=0;i<t;i++);     //延时,保持高电平,LED为熄灭状态
  65   2      //----------------------------------------------------------------------------  
  66   2         P1=0x00;              //P1口输出低电平       即P1.7-----P1.0依次对应 0000 0000
  67   2         for(i=0;i<500-t;i++); //延时,保持低电平,LED为发光状态
  68   2      //----------------------------------------------------------------------------   
  69   2              t++;                     //累加,脉宽步进,可适当调整,以改变明暗变化速度。
  70   2      //----------------------------------------------------------------------------  
  71   2         if(t>500)             //域值判断,如果为真,则表明一次完整的变化过程结束。
  72   2              { 
  73   3              P1=0xff;             //强制将P1口置高,如果没有这句,LED会出现亮暗跳变(试验并思考原因)
  74   3          while(1);                    //进入死循环,程序挂起,使程序执行到这就停止,方便看效果
  75   3              }
  76   2                                              
  77   2        }
  78   1      
  79   1      }
  80          
  81          
  82          
  83          
  84          
  85          
  86          
  87          
  88          
  89          
  90          
  91          
  92          
  93          
  94          
  95          
  96          
  97          
  98          
  99          
 100          
 101          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     74    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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