使用51单片机驱动舵机

单片机用的是普中科技的学习板,芯片STC89C52RC,舵机futabas3003。我只用的是直接接P1^0,P1^1,P1^2。但是发现舵机不转。是什么原因我不知道,我... 单片机用的是普中科技的学习板,芯片STC89C52RC,舵机futaba s3003。我只用的是直接接P1^0,P1^1,P1^2。但是发现舵机不转。是什么原因我不知道,我是通过两个中断,使得程序产生方波的,不知道对不对。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit a=P1^0;//黑线地
sbit b=P1^1;//红线Vcc
sbit c=P1^2;//白线控制线
void begin() //初始化程序
{
a=0;
b=1;
c=1;
TMOD=0x11; //设置定时器0和定时器1的工作方式为方式1
TH0=(65536-1500)/256; //求模
TL0=(65536-1500)%256; //求余
TH1=(65536-18500)/256; //求模
TL1=(65536-18500)%256; //求余
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}

void main()
{
begin();
while(1);
}

void timer0() interrupt 1 //定时器0中断服务程序
{
a=0;
b=1;
c=0;
TH0=(65536-1500)/256; //求模
TL0=(65536-1500)%256; //求余
ET1=1;//开定时器1中断
TR1=1;//启动定时器1
ET0=0;//关定时器0中断
TR0=0;//关闭定时器0

}

void timer1() interrupt 3 //定时器1中断服务程序
{
a=0;
b=1;
c=1;
TH1=(65536-18500)/256; //求模
TL1=(65536-18500)%256; //求余
ET1=0;//关定时器1中断
TR1=0;//关闭定时器1
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
展开
 我来答
百度网友277135f
2010-12-26 · TA获得超过380个赞
知道小有建树答主
回答量:281
采纳率:0%
帮助的人:172万
展开全部
先别着急调试程序,先用5v电源试试舵机的电机(假如是5V工作的)转不转,如果转,那就用示波器观察一下各引脚是否有波形输出,再就是你驱动电机的电路是否损坏,比如三极管坏了等等。
jkuoo
推荐于2017-09-07 · TA获得超过107个赞
知道答主
回答量:208
采纳率:0%
帮助的人:59.9万
展开全部
sbit a=P1^0;//黑线地
sbit b=P1^1;//红线Vcc
sbit c=P1^2;//白线控制线
黑线 和VCC要接电源,单片机的电压还不能够驱动舵机,还有你没有了解什么是PWM,你好好研究下单片机怎么模拟PWM 这里可以认为用PWM来输出电压,舵机通过对控制电压的比较来控制转动角度!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kokomunan
2010-12-31
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
想用io口直接驱动舵机 电流够么?? 先用示波器看看你的信号对不对,其次 我认为 io口做高低电平驱动不了 你还是用5v电试吧 还有 外部电源一定要和单片机公地 也可以直接从板上拉出5v电 只要信号对 我保证好使
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式