51单片机二自由度云台代码示例
时间: 2023-07-23 21:44:26 浏览: 52
以下是一个基于51单片机的二自由度云台代码示例:
```C
#include <reg51.h>
sbit servo1=P1^0; //定义舵机1控制引脚
sbit servo2=P1^1; //定义舵机2控制引脚
void delay_ms(int ms) //延时函数
{
int i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<114;j++);
}
}
void servo1_control(int angle) //控制舵机1
{
int i;
for(i=0;i<50;i++) //一个脉冲的周期为20ms,每个角度需要一个1-2ms的高电平
{
servo1=1; //输出高电平
delay_ms(angle+1); //输出高电平时间为1ms+角度值
servo1=0; //输出低电平
delay_ms(20-angle-1); //输出低电平时间为20ms-角度值
}
}
void servo2_control(int angle) //控制舵机2
{
int i;
for(i=0;i<50;i++) //一个脉冲的周期为20ms,每个角度需要一个1-2ms的高电平
{
servo2=1; //输出高电平
delay_ms(angle+1); //输出高电平时间为1ms+角度值
servo2=0; //输出低电平
delay_ms(20-angle-1); //输出低电平时间为20ms-角度值
}
}
void main()
{
while(1)
{
servo1_control(90); //控制舵机1旋转到90度
delay_ms(1000); //延时1秒
servo2_control(90); //控制舵机2旋转到90度
delay_ms(1000); //延时1秒
servo1_control(0); //控制舵机1旋转到0度
delay_ms(1000); //延时1秒
servo2_control(0); //控制舵机2旋转到0度
delay_ms(1000); //延时1秒
}
}
```
以上代码仅供参考,实际使用时需要根据自己的硬件和需求进行适当的修改。