欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 蓝桥杯单片机(十)PWM脉宽调制信号的发生与控制

蓝桥杯单片机(十)PWM脉宽调制信号的发生与控制

2025/2/7 10:28:52 来源:https://blog.csdn.net/m0_73597306/article/details/145359323  浏览:    关键词:蓝桥杯单片机(十)PWM脉宽调制信号的发生与控制

模块训练:

一、PWM基本原理

1.占空比

2.脉宽周期与占空比

当PWM脉宽信号的频率确定时,脉宽周期也确定了,此时改变占空比即可。当利用PWM脉宽周期改变LED灯的亮度时,灯是低电平亮,所以将低电平占空比改成10%即可实现灯的亮度是10%

通过将脉宽周期分为多份再改变高低电平从而改变占空比实现PWM调光。

3.按键控制

通过状态控制按键,当按键按下时改变状态,再按下即再改变状态时即可实现按键循环切换LED灯亮度模式

二、程序代码

1.程序代码

#include <regx52.h>
sbit L1=P0^0;
sbit S7=P3^0;
unsigned pwm_duty;
//========定时器相关函数=============
unsigned char count=0;
unsigned char stat=0;
void InitTimer0()
{TMOD=0X01;TH0=(65535-100)/256;TL0=(65535-100)%256 ;ET0=1;EA=1;//TR0=1先不写等要用到时再打开时钟计时
}
void ServiceTimer0() interrupt 1
{TH0=(65535-100)/256;TL0=(65535-100)%256 ;count++;if(count<pwm_duty){L1=0;}else if(count<100){L1=1;}else if(count==100){count=0;}
}
//===================================
void SelectHC573()
{P2=(P2&0X1F)|0X80;
}
//===========按键相关函数===============
void Delay(unsigned char t)
{while(t--);
}
void ScanKey()
{if(S7==0){Delay(500);if(S7==0){switch(stat){case 0:pwm_duty=10;TR0=1;stat=1;break;case 1:pwm_duty=50;stat=2;break;case 2:pwm_duty=90;stat=3;break;case 3:pwm_duty=0;stat=0;TR0=0;break;}while(S7==0);}}
}
//=======================================
void main()
{SelectHC573();InitTimer0();while(1){ScanKey();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com