📄 pwm.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 + -