想问各位,利用51单片机如何产生占空比可调的pwm波,占空比要通过程序自动调节,不能手动,另外为什么我用proteus仿真时,尽管定时器定时是1s,可是彩灯的变化频率却还是非常快,感觉pwm的效果根本没有,求各位指导 。
我感觉你写的我不是很懂,你这个
if(m_count==m_num)
PWM=0;
if(m_count==200)
{
m_count=0;
PWM=1;
}
那要是m_count两个都不满足那就没下文了啊!
m_count加到200就会清零,不会没下文,每进一次中断只加1;m_num是小于200;
m_num 数控制高电平的时间就是占空比控制,在0到m_num期间是高电平;在m_num到200之间是低电平,到200后又变高电平, 改变m_num的数值就改变了占空比。
这样应该比较明白了吧
不好意思哈,在下面程序中
if(m_count==m_num)
PWM=0;
只有当m_count==m_num这个条件是才会输出低电平,但是这个就是一个点位而已,是不是这中间不太应该==号,而应该是大于号或者小于号类的
这个中断里只有PWM=0和PWM=1两周情况,当满足 if(m_count==m_num)时,PWM=0,然后就没有改变PWM的数值,他就会一直保持低电平。知道满足if(m_count==200)时变为高电平,然后一直保持。PWM是一个变量,在你没有改变它的数值之前,他是一直保持原来的数值。
如果还没看懂,就看一下谭浩强 《C程序设计》 面的if 语句;
占空比要能通过程序改变,不是手动改变的
追答那也好办啊。你输出一个周期的波形后,按照一定的规律改变定时器1的计时时间(设定定时器1的初值是和某个变量有关的)就可以了。