求问单片机控制舵机连续来回转动而不停下来的C程序怎么写

 我来答
百度网友607d515
2017-01-27 · 超过27用户采纳过TA的回答
知道答主
回答量:66
采纳率:50%
帮助的人:12.9万
展开全部
因为舵机中有电位器,输出1.5ms宽度的脉冲宽度是正90度,所以你可以写一个for循环,然后引进一个参数,不停地改变0.5ms到2.5ms之间的脉冲宽度就行了。(用延迟函数可以调整速度)希望能帮到你!
滑翔世界
2023-06-13 广告
舵机的型号还有1、HS-785HB舵机:该舵机具有高精度、超强的阻尼力,可以准确定位。2、MG996R舵机:该舵机具有较高的力矩,可承受大负荷。3、SG90舵机:该舵机是一种小型舵机,具有良好的操作性能。4、MG995舵机:该舵机具有较大的... 点击进入详情页
本回答由滑翔世界提供
百度网友9bd0b1f
2019-05-12
知道答主
回答量:1
采纳率:0%
帮助的人:732
展开全部
AT89C52控制

#include<reg52.h>
sbit PWM=P1^0;
unsigned char angle=0;
unsigned char count;
unsigned char flage;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void Time0_Init()
{
TMOD=0x01;
IE=0x82;
TH0=0xfe;
TL0=0x33;
TR0=1;
}
void keyscan1()
{
if(flage==0)
{
delay(10);
angle=2;
}
}void keyscan2()
{
if(flage==1)
{
delay(10);
angle=3;
}
}
void main()
{
flage=1;
count=0;
Time0_Init();
while(1)
{
if(flage==1)
{
keyscan2();
delay(10);
}
flage=!flage;
delay(1000);
if(flage==0)
{
keyscan1();
delay(10);
}
flage=!flage;
delay(200);
}
}
void Time0_Int() interrupt 1
{
TH0=0xfe;
TL0=0x33;
if(count<angle)
PWM=1;
else
PWM=0;
count=(count+1);
count=count%40;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式