舵机

来源:互联网 发布:美国 制造业回归 知乎 编辑:程序博客网 时间:2024/05/01 07:23

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

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

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


在网上看到的程序总感觉太难读,在这里贴一下自己的程序
 主控用的51单片机。。然后用简单的延时函数实现的
#include<reg52.h>#include<intrins.h>#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.5msvoid Delay100us();//0.1msvoid 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<jd)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.5msleft  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);//  }// }//}




原创粉丝点击