求解,51单片机如何输出可调占空比的pwm信号
#include<reg51.h>sbitpwm=P1^1;//输出端口unsignedinta=0.8;//设置占空比voidInit(void)//初始化定时器{TM...
#include <reg51.h>
sbit pwm=P1^1; //输出端口
unsigned int a=0.8; //设置占空比
void Init(void) //初始化定时器
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
main()
{
Init();
pwm=1;
while(1);
}
void Timer_0(void) interrupt 1 //定时器设置
{
if(pwm==1)
{
pwm=0; //设置暗的时间
TH0=(65536-1000*a)/256;
TL0=(65536-1000*a)%256;
}
else
{
pwm=1; //设置亮的时间
TH0=(65536-1000*(1-a))/256;
TL0=(65536-1000*(1-a))%256;
}
}
这个是我写的程序,请大神帮忙看看,主要是想通过调节变量a来更改占空比调节led亮度,不过现在写进去单片机内后亮度调节变暗了一半,而且led灯会有明显的闪烁,不知道怎么解决。 展开
sbit pwm=P1^1; //输出端口
unsigned int a=0.8; //设置占空比
void Init(void) //初始化定时器
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
main()
{
Init();
pwm=1;
while(1);
}
void Timer_0(void) interrupt 1 //定时器设置
{
if(pwm==1)
{
pwm=0; //设置暗的时间
TH0=(65536-1000*a)/256;
TL0=(65536-1000*a)%256;
}
else
{
pwm=1; //设置亮的时间
TH0=(65536-1000*(1-a))/256;
TL0=(65536-1000*(1-a))%256;
}
}
这个是我写的程序,请大神帮忙看看,主要是想通过调节变量a来更改占空比调节led亮度,不过现在写进去单片机内后亮度调节变暗了一半,而且led灯会有明显的闪烁,不知道怎么解决。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询