51单片机如何产生8路PWM波
1个回答
展开全部
用两个定时器的方法是用定时器t0来控制频率,定时器t1来控制占空比。大致的的编程思路是这样的:t0定时器中断让一个i0口输出高电平,在这个定时器t0的中断当中起动定时器t1,而这个t1是让io口输出低电平,这样改变定时器t0的初值就可以改变频率,改变定时器t1的初值就可以改变占空比。
用一个定时器时(如定时器t0),首先你要确定pwm的周期t和占空比d,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是pwm的高电平的时间,则d*t=n*t,类似的可以求出pwm低电平时间需要多少个时间基准n'。
因为这里我们是产生周期为1ms(1000hz)的pwm,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000hz),2、当time>n时(n应该在0-100之间变化开),让单片相应的i/o口输出高电平,当time
评论
0
0
0
加载更多
用一个定时器时(如定时器t0),首先你要确定pwm的周期t和占空比d,确定了这些以后,你可以用定时器产生一个时间基准t,比如定时器溢出n次的时间是pwm的高电平的时间,则d*t=n*t,类似的可以求出pwm低电平时间需要多少个时间基准n'。
因为这里我们是产生周期为1ms(1000hz)的pwm,所以可设置中断的时间基准为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000hz),2、当time>n时(n应该在0-100之间变化开),让单片相应的i/o口输出高电平,当time
评论
0
0
0
加载更多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询