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

📄 pwm.c

📁 pwm的51单片机的程序实现
💻 C
字号:
/*
   
   名词解释:1、PWM(Pulse Width Modulation,脉宽调制)
				
			 2、占空比(Duty Cycle)
				即:  在一串理想的脉冲序列中(如方波),
				      正脉冲的持续时间与脉冲总周期的比值。
                例如:脉冲宽度为1s,信号周期为4s的脉冲序
				      列的占空比为0.25。
  
   程序说明:通过调整单位时间内I/O口输出高电平持续的时间,
             即可达到对占空比的调节,也即PWM,本程序即是
			 PWM的一个应用。
			 
   应用说明:图示仅画标出了占空比的几个特殊值可以适当调
             整各个变量的初值,从而控制LED对应输出几个不
			 同的亮度级别。通过把周期设置的更小--频率
			 提高就可以达到0%--100%之间任意的亮度级别。
			 并且由于人眼的视觉暂留,看到的不是亮、灭的
			 跳变,而是明暗的均匀过渡。

(C)西安电子科技大学    测控技术与仪器    编写:郭世忠  日期:2008-04-04
 */


///////////////////////////////////////////////////////////////////////////
//								 脉冲宽度								 //
//								 |	   |								 //
//	      0%      25%      50%   |75% |  	 100% --->占空比	    	 //
//              __	  	  ____	   _____    ________   ___1	(高电平)	 //
//	  |        | |       |    |   |	    |  |		|					 //
//    |________| |_______|    |___|	    |__|		|  ___0 (低电平)	 //
//							   											 //
//    |   500  |   500   |   500  |  500   |  500   |					 //
/*        500是一次高低电平变化的周期,可根据需要自定     */			 //
//																		 //
// 注意:  我们的学习板中,P1口的LED是低电平有效。因此,	    		 //
//         占空比为0%时最亮,占空比为100%时熄灭,注意区别。				 //
///////////////////////////////////////////////////////////////////////////



/**************************************************************************
    功能:使P1口的八个LED发的光由暗到亮均匀过渡
      
    说明:程序只会执行一个变化过程,要重复观察效果
          可按 RST 键复位单片机,即可从头执行程序
/**************************************************************************/



#include<reg52.h>	 /*51寄存器头文件*/ 


void main(void)		 /*主程序*/ 
{
  unsigned int i,t;	 /*变量定义*/ 

while(1)			 /*主循环(死循环),单片机必须是死循环*/ 
 {					
                    															   
//---------------------------------------------------------------------------   
   P1=0x00;              //P1口输出低电平	即P1.7-----P1.0依次对应 0000 0000
   for(i=0;i<t;i++);     //延时,保持低电平,LED为熄灭状态
//----------------------------------------------------------------------------  
   P1=0xff;              //P1口输出高电平	即P1.7-----P1.0依次对应 1111 1111
   for(i=0;i<500-t;i++); //延时,保持高电平,LED为发光状态
//----------------------------------------------------------------------------   
   	t++;		         //累加,脉宽步进,可适当调整,以改变明暗变化速度。
//----------------------------------------------------------------------------  
   if(t>500)	    	 //域值判断,如果为真,则表明一次完整的变化过程结束。
   	{ 
	P1=0x00;             //强制将P1口置低,如果没有这句,LED会出现亮暗跳变(试验并思考原因)
    while(1);		  	 //进入死循环,程序挂起,使程序执行到这就停止,方便看效果
	}
					

  }

}






















⌨️ 快捷键说明

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