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

📄 pwm.lst

📁 pwm的51单片机的程序实现
💻 LST
字号:
C51 COMPILER V8.02   PWM                                                                   04/05/2008 00:30:20 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              
  45                  功能:使P1口的八个LED发的光由暗到亮,再由亮到暗均匀过渡
  46                         
  47          /**************************************************************************/
  48          
  49          
  50          
  51          #include<reg52.h>        //51寄存器头文件 
  52          
  53          void Delayms(int ms);//函数声明
  54          
  55          void main(void)          //主程序
C51 COMPILER V8.02   PWM                                                                   04/05/2008 00:30:20 PAGE 2   

  56          {
  57   1        unsigned int i,t;      //定义变量 
  58   1      
  59   1      while(1)                         //主循环(死循环),单片机必须是死循环
  60   1       {                                      
  61   2         
  62   2      /**************************这个for循环为由暗到亮的过程**********************/   
  63   2         for(t=0;t<=500;t++)  
  64   2         {  
  65   3          P1=0x00;              //P1口输出低电平      即P1.7-----P1.0依次对应 0000 0000
  66   3          for(i=0;i<t;i++);     //延时,保持低电平,LED为熄灭状态
  67   3         
  68   3          P1=0xff;              //P1口输出高电平      即P1.7-----P1.0依次对应 1111 1111
  69   3          for(i=0;i<500-t;i++); //延时,保持高电平,LED为发光状态
  70   3         }
  71   2      
  72   2              P1=0x00;                          //将P1口置低,防止跳变
  73   2          Delayms(500);                 //短暂延时,用于区分变化效果
  74   2      /**************************这个for循环为由亮到暗的过程**********************/ 
  75   2        for(t=0;t<=500;t++)  
  76   2         {
  77   3          P1=0xff;              //P1口输出高电平      即P1.7-----P1.0依次对应 1111 1111  
  78   3          for(i=0;i<t;i++);     //延时,保持低电平,LED为熄灭状态
  79   3         
  80   3          P1=0x00;              //P1口输出低电平      即P1.7-----P1.0依次对应 0000 0000
  81   3          for(i=0;i<500-t;i++); //延时,保持高电平,LED为发光状态
  82   3          }
  83   2      
  84   2              P1=0xff;                          //将P1口置高,防止跳变
  85   2          Delayms(500);                 //短暂延时,用于区分变化效果
  86   2        
  87   2        }
  88   1      
  89   1      }
  90          
  91          /****************************************************************************
  92          * 名    称:Delayms()
  93          * 功    能:延迟1ms
  94          * 入口参数:ms: 延迟毫秒数
  95          * 出口参数:无
  96          * 说    明: 11.0592MHz条件下
  97          ****************************************************************************/
  98          void Delayms(int ms)
  99          {
 100   1         unsigned int i;
 101   1         for(;ms>0;ms--)            //循环ms次
 102   1         {
 103   2            for(i=0;i<113;i++); //每次1ms延迟@ 11.0592MHz
 104   2         }
 105   1      }
 106          
 107          
 108          
 109          
 110          
 111          
 112          
 113          
 114          
 115          
 116          
 117          
C51 COMPILER V8.02   PWM                                                                   04/05/2008 00:30:20 PAGE 3   

 118          
 119          
 120          
 121          
 122          
 123          
 124          
 125          
 126          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    208    ----
   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 + -