帮我解释一下这个PWM控制电机调速的程序。

帮我解释一下这个PWM控制电机调速的程序。,第1张

for(a=ya>0a--) //PWM波高电平宽度

{

PWM_PA0|=(1<<PA0)

}

for(b=100-yb>0b--) //PWM低电平宽度

{

PWM_PA0|=(0<<PA0)

}

这里面的Y应该是X才对吧。。。。

不会是先判断Y循环 里面再循环,逻辑上不成立的。

所以你的占空比X应该就是那个Y

先解释下此函数的功能

void beep(void)

{

uchar t

for(t=0t<100t++)//循环,共输出50个脉冲

{

delaynms(1)//延时,即两个脉冲的间隔时间

FMQ=!FMQ //产生脉冲,此句貌似有错误,应该写成 FMQ = ~FMQ

}

FMQ=1 //关闭脉冲,即循环后,不管结果如何,必须让此端口置 1

delaynms(300)//延时,此句有没有都可以

}

程序的开头 sbit FMQ = P3^6可知,这是一个输出端口,至于连接的什么不得而知

但从函数本身看,这只是一个简单的利用延时函数来输出脉冲的函数,其精度不高

程序开头有四句

sbit PWM11 = P1^0

sbit PWM12 = P1^1

sbit PWM13 = P1^2

sbit PWM14 = P1^3

并且在中断函数中进行控制,初步可以断定,这是一个利用L298N 控制的两相步进电机

但此程序的可读性太差,除了当时编程的时候可以理解其内容,等过段时间就会忘记流程啦

此程序有待改进!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7753190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存