在群内有不少人提问,表示无法理解程序是如何实占空比调节的,哪句是形成PWM波的,哪句是调节占空比的,因此,写了这个程序分析.
发群内的反应
4个按钮控制4颗LED例子
更改写法有人就看不懂了,主要就是原理理解不透.
#include "reg52.h"
sbit NanBeiHong = P1^0;
sbit k1=P1^1;
sbit k2=P1^2;
unsigned char c=47;
unsigned char Js=0;//中断计时
void ZhongDuanSheZhi()
{
TH0+=0X4c;/*定时器赋初值,定时50ms触发中断,自动补偿方式*/
TL0+=0X00;
TMOD=0X01;
TR0=1;
ET0=1; //开启定时器
EA=1; //全局中断开关
}
void FanBo(/*调节占空比*/)
{
NanBeiHong=(Js>=c?0:1);
if(!Js)++c;//自动调节占空比演示用可观察波形
}
void main()
{
unsigned char JZhi=0;
unsigned int YS=54000,a=55555;
ZhongDuanSheZhi();
while(1)
{
FanBo();
// if(!k1&&!++JZhi)++c;
// if(!k2&&!++JZhi)--c;
// while(!k1||!k2);
}
}
void ZhongDuan() interrupt 1
{
++Js;
TH0+=0X4c;
TL0+=0X00;
}
这个示例代码实现自动调节占空比,可在波形中观察到占空比的循环自动变化。