想问各位,利用51单片机如何产生占空比可调的pwm波,占空比要通过程序自动调节,用于实现彩灯的七种颜色
想问各位,利用51单片机如何产生占空比可调的pwm波,占空比要通过程序自动调节,不能手动,另外为什么我用proteus仿真时,尽管定时器定时是1s,可是彩灯的变化频率却还...
想问各位,利用51单片机如何产生占空比可调的pwm波,占空比要通过程序自动调节,不能手动,另外为什么我用proteus仿真时,尽管定时器定时是1s,可是彩灯的变化频率却还是非常快,感觉pwm的效果根本没有,求各位指导 。
展开
3个回答
展开全部
用定时器做的,改变m_num的数值就会改变占空比
void timer1() interrupt 3
{
m_count++;
if(m_count==m_num)
PWM=0;
if(m_count==200)
{
m_count=0;
PWM=1;
}
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
}
void timer1() interrupt 3
{
m_count++;
if(m_count==m_num)
PWM=0;
if(m_count==200)
{
m_count=0;
PWM=1;
}
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
}
更多追问追答
追问
我感觉你写的我不是很懂,你这个
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的数值就改变了占空比。
这样应该比较明白了吧
展开全部
举个例子吧。先用定时器0定时Ts,再用定时器1定时ts。定时器1中断触发后,输出低电平,关闭定时器1,这样就能保证输出tms的正波形,;定时器0中断触发时,输出高电平,重置定时器0、1。占空比 = t/T,频率 = 1/T。注意T一定要大于t。
追问
占空比要能通过程序改变,不是手动改变的
追答
那也好办啊。你输出一个周期的波形后,按照一定的规律改变定时器1的计时时间(设定定时器1的初值是和某个变量有关的)就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用两个定时器来做就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询