单片机STC89C52 如何控制舵机

我的单片机扩展板上只有一个VCC+ DC-的直流电机(普通的1块钱的马达)接口,和一个5线式的步进电机控制接口。(D,C,B,A,VCC+ 5个针脚)
但是就是没有舵机的接口(单片机有40个引出针,可以接其他东西,不知道可以直接接舵机么),而机器人都是用舵机进行摆臂控制的吧,我应该怎么做,难道还要买新的机器人控制器吗?

如何让 FUTABA S3003 动起来

#include<reg52.h> //51单片机头文件

#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义

void delay(uint); //延时子函数声明
void enable1(void);
void enable2(void);

sbit P1_0=P1^0; //PWM信号输出端
sbit K1=P1^1;
sbit K2=P1^2;
sbit K3=P1^3;

/****************************主函数***********************************/

void main()
{
P1_0=1; //置PWM初始输出为高电平

while(1)
{
if(K1==0)
{
delay(20);
if(K1==0)
{
while(!K1);
enable1();
//while(!s2)
}
}

if(K2==0)
{
delay(20);
if(K2==0)
{
while(!K2);
enable2();
}

}
/* if(K3==0)
{
delay(20);
if(K3==0)
{
Init3;
}

}
*/
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

void enable1(void)
{
TMOD=0x01; //设置定时器0工作方式1后面运行TR位启动
TH0=(65536-1500)/256;
TL0=(65536-1500)%256; //1.5ms 的高电平
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}

void enable2(void)
{
TMOD=0x10; //设置定时器1工作方式1后面运行TR位启动
TH1=(65536-900)/256;
TL1=(65536-900)%256; //1.5ms 的高电平
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //启动定时器1

}
//设置第三种PWM方式的初始化
/*
void Init3()
{
TMOD=0x01; //设置定时器0工作方式1后面运行TR位启动
TH0=(65536-1500)/256;
TL0=(65536-1500)%256; //1.5ms 的高电平

}
*/

/******************************中断服务程序**********************************/

void PWM1() interrupt 1 //定时器0 中断,产生方波
{
if(P1_0==1) //如果上个电平为1,则下个低电平的时间为18.5ms
{
TH0=(65536-18500)/256;
TL0=(65536-18500)%256;
}
else //如果上个电平为0,则下个高电平为1.5ms
{
TH0=(65535-1500)/256;
TL0=(65535-1500)%256;
}
P1_0=~P1_0;
}

void PWM2() interrupt 3 //定时器1中断,产生方波
{
if(P1_0==1) //如果上个电平为1,则下个低电平的时间为18.5ms
{
TH0=(65536-19000)/256;
TL0=(65536-19000)%256;
}
else //如果上个电平为0,则下个高电平为1.5ms
{
TH0=(65535-900)/256;
TL0=(65535-900)%256;
}
P1_0=~P1_0;
}

//定时器2设置第三种PWM波
/* void PWM3() interrupt 5 //定时器2 中断,产生方波
{
if(P1_0==1) //如果上个电平为1,则下个低电平的时间为18.5ms
{
TH0=(65536-18500)/256;
TL0=(65536-18500)%256;
}
else //如果上个电平为0,则下个高电平为1.5ms
{
TH0=(65535-1500)/256;
TL0=(65535-1500)%256;
}
P1_0=~P1_0;
}
*/

辛苦之作,如果能够回答你的问题,别忘了给分哦~~喵喵
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-02
  1、舵机控制信号一般是50HZ的PWM波,占空比在10%-20%之间,51自己写程序用定时器实现占空比控制就可以。
  2、如果是步进电机,我知道要在他们(电机和单片机)之间加个ULN2003控制心片就可以了。
  3、舵机的控制信号时周期为20毫秒的信号,高电平时间为1ms到2ms,因此用任何一个I/0口输出中信号就可以控制舵机运转。
第2个回答  2011-02-18
不需要的。但是你可能得需要一个高于5V的电源,该电源给舵机供电(具体是多少要看舵机的需求了,因为5V电源可能驱动不起来舵机)。单片机随便一个I/O口生成方波信号送给舵机的信号线就可以了。别忘了电源与单片机的电源共地哦!本回答被网友采纳
第3个回答  2012-12-19

我使用的这个产品来控制的,直接接线就行了,用你的电脑U盘接口接起来编程这个东西就行了

第4个回答  2011-02-20
用单片机io口产生周期固定,占空比可调的信号

单片机高手请进!!!stc89c52单片机 能控制几个舵机?用什么样的程序控制...
include <reg52.h> define Stop 0 \/\/宏定义,停止 define Left 1 \/\/宏定义,左转 define Right 2 \/\/宏定义,右转 sbit ControlPort = P1^1; \/\/舵机信号端口 sbit KeyLeft = P3^2; \/\/左转按键端口 sbit KeyRight = P3^3; \/\/右转按键端口 sbit KeyStop = P1^3; \/\/归位...

设计分享 | 基于51单片机理解SG90舵机原理并用按键控制
设计分享:基于51单片机的SG90舵机控制与按键操作本文主要介绍了如何利用51单片机(如AT89C52)配合SG90舵机,通过按键实现舵机角度的精确控制。当按下开关时,舵机将按照预定顺序运行至0°、45°、90°、135°、180°,然后回到0°。每个角度转动时间间隔为1秒,涉及外部中断和PWM脉宽调制技术的运用。SG90舵机...

哪位能告诉一个驱动舵机 驱动步进电机的程序 芯片stc89c52...
用stc89c51单片机来控制舵机的程序,测试成功,仅供大家参考.include "reg52.h"unsigned char count; \/\/0.5ms次数标识 sbit pwm =P3^0 ; \/\/PWM信号输出 sbit jia =P3^7; \/\/角度增加按键检测IO口 sbit jan =P3^6; \/\/角度减少按键检测IO口 unsigned char jd; \/\/角度标识 void...

51控制舵机问题,为什么把舵机信号线一接上单片机控制线上,数码管显示就...
幸好你使用的是STC单片机,你可以把输出设置成推挽输出,提高输出能力。如果可能,在单片机的输出口与舵机之间增加一级推动电路,一则放大推动能力,二则起到隔离、减少干扰的作用。在舵机的5V电源与单片机的电源之间加消谐电路,可以考虑使用AWS1117之类的低压差稳压芯片(STC单片机应该可以工作在3.3V的电压环...

学单片机-入门篇1-介绍STC89C52RC单片机
定时器\/计数器是单片机内部的三个16位可编程部件,可以设置为计数器或定时器,通过指令控制其工作模式和计数范围。中断系统允许单片机处理8个中断事件,包括两个外部中断、三个定时器\/计数器中断和串口中断。外部中断可以通过P3.2和P3.3引脚触发,定时器\/计数器中断在溢出时触发,而串口中断在数据发送或...

STC89C52RC单片机的工作原理?
要花的时间就是单片机的时钟周期)就去不同的地方找(单片机指命操作)。能否找到,要做出什么处理,就是人做的记录(程序判断,做出相应的数据存储器)。在找的过程中,可能会有人打断(单片机的中断)。做完这个工作后,该做什么,是发呆还是休息(单片机的休眠),一但有新的任务就又开始工作。

stc89c52不用复位电路也能运行吗
stc89c52没有复位电路也可以的,但是at89c52或at89s52就不行咯

stc89c52与at89c52的区别
支持2路PWM和8路高速10位A\/D转换,特别适合电机控制等应用。其I\/O口有36\/40\/44个,具有多种工作模式,可以提供高达20mA的驱动能力,但需注意整体芯片最大电流限制为120mA。总的来说,STC89C52在存储容量和功能扩展性上优于AT89C52,特别适合对性能和扩展性有较高要求的应用场景。

求stc89c52单片机引脚功能详细资料,还有最小系统原理图,晶振电路和复位...
stc89c52单片机引脚功能详细资料,你可到宏晶官网上下载一份STC89C52RC的技术文档,关于单片机最小系统,你可以在网上找一下“比较好的单片机最小系统制作”一文,上面介绍的单片机最小系统,比较适合用于STC89C52单片机,图纸资料比较全的,值得参考。

stc89c52单片机 汇编程序问题
MOVX @DPTR, A 。 MOVX 是片外ROM传送指令,DPTR是16位指针,你那应该用r0或r1,DEL2: MOV R0, #100 DJNZ R0, $ 这有问题 后面键3.5那看不明白,那么乱,在KELL调试那调试看看吧

相似回答