舵机

首先是一些关于舵机的介绍

  舵机控制原理     http://blog.csdn.net/ljb825802164/article/deta

本次使用的舵机是MG995MG90S,个人认为这两个舵机还是没什么区别的MG995的功率比较大MG90S功率比较小,以下有一个关于MG995的使用文章http://www.ndiy.cn/thread


在网上看到的程序总感觉太难读,在这里贴一下自己的程序
 主控用的51单片机。。然后用简单的延时函数实现的
#include
#include
#define uint unsigned int
#define uchar unsigned char				   .




//sbit jia=P3^4;
//sbit jian=P3^7;
sbit PWM=P0^0;		 //使用P0^0是使用了10K的排阻进行上拉


//uint count;
//uint jd;




void Timer0_Init(void);
void Delay1ms();
void Delay1500us();//1.5ms
void Delay100us();//0.1ms
void Delay2500us();//2.5ms


//void anjian();


void main()
{
// count=0;
// jd=1;
 Timer0_Init();
 while(1)
 {
 // anjian();
 }
}


void Timer0_Init(void)		//20毫秒@11.0592MHz
{
      //AUXR &= 0x7F;		//定时器时钟12T模式
			
	TMOD = 0x01;		//设置定时器模式
	TL0 = 0xff;		    //设置定时初值
	TH0 = 0xB7;		    //设置定时初值
//	TF0 = 0;		    //清除TF0标志
	TR0 = 1;		    //定时器0开始计时
	ET0=1;
	EA=1;
}
void tm0_isr() interrupt 1
{
   	TL0 = 0xff;		//设置定时初值
	TH0 = 0xB7;		//设置定时初值
	//if(count	PWM=1;
	//Delay1ms();	                     //延时1ms			         right 90°
	Delay1500us();                       //延时1.5ms		         right 45°
	//Delay1500us(); Delay100us();Delay100us();            //延时1.7ms    
	//Delay1500us(); Delay100us();Delay100us();Delay100us();//延时1.8ms    left45°
      //Delay2500us();                                       //延时2.5ms	left  90°
	
	
	PWM=0;
	
}




void Delay1ms()		//@11.0592MHz
{
	unsigned char i, j;


	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}


void Delay1500us()		//@11.0592MHz
{
	unsigned char i, j;


	i = 3;
	j = 173;
	do
	{
		while (--j);
	} while (--i);
}


void Delay100us()		//@11.0592MHz
{
	unsigned char i;


	_nop_();
	i = 43;
	while (--i);
}


void Delay2500us()		//@11.0592MHz
{
	unsigned char i, j;


	i = 5;
	j = 120;
	do
	{
		while (--j);
	} while (--i);
}


//void anjian()
//{
// P3=0xff;
// if(jia==0)
// {
//  Delay10ms();
//  if(jia==0)
//  {
//	  jd++,count=0;
//	  if(jd==6)jd=5;
//	  while(!jia);
//	  Delay10ms();
//	  while(!jia);
//  }
// }
//
//
//  if(jian==0)
// {
//  Delay10ms();
//  if(jian==0)
//  {
//	  jd--,count=0;
//	  if(jd==0)jd=1;
//	  while(!jian);
//	  Delay10ms();
//	  while(!jian);
//  }
// }
//}




你可能感兴趣的:(舵机)