• 大小: 57KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签:

资源简介

用C语言编写舵机常用控制程序,以51系类单片机为载体,用于智能小车车轮控制;多关节教学机械手;电子类竞赛常用舵机控制。

资源截图

代码片段和文件信息

#include “reg51.h“
#define UP_TIME_TH 0xfc  //高电平时间    初值为0.8ms
#define UP_TIME_TL 0xe0
#define DOWN_TIME_TH  0xB5  //低电平时间
#define DOWN_TIME_TL  0x00
//90度up=fa24down=b7bc
sbit PWM=P0^0;  //PWM口
sbit upAdd=P1^0;  //按键设定
sbit upSub=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
int upTimeTH=UP_TIME_TH;  //高低电平赋初值
int upTimeTL=UP_TIME_TL;
int downTimeTH=DOWN_TIME_TH;
int downTimeTL=DOWN_TIME_TL;
int flag=1;   //按键单下作用标记
void delay(int xint y)   //延时
{
   int i=0;
   int j=0;
   for(i=0;i     for(j=0;j     ;
}
void timeInit()  //定时器初始化
{
   TMOD=0x01;
   TH0=upTimeTH;
   TL0=upTimeTL;
   EA=1;
   ET0=1;
   TR0=1;
   TF0=0;
}
void goto_angle(int upTHint upTLint downTHint downTL)
{
     upTimeTH=upTH;
 upTimeTL=upTL;
 downTimeTH=downTH;
 downTimeTL=downTL;
}
void rotate_ni()   //逆时针相对转动,每次5us
{
   upTimeTL-=0x05;
   if(upTimeTL<0)
   {
  upTimeTH--; upTimeTL=0xf0;
   }
   downTimeTL+=0x05;
   if(downTimeTL>0x0ff)
   {
  downTimeTH++; downTimeTL=0x00;
   }
}
void rotate_shun()   //顺时针相对转动,每次5us
{
   upTimeTL+=0x05;
   if(upTimeTL>0xff)
   {
  upTimeTH++; upTimeTL=0x00;
   }
   downTimeTL-=0x05;
   if(downTimeTL<0)
   {
    downTimeTH--; downTimeTL=0xf0;
   }
}
void rotate_angle_ni(int timeTHint timeTL)  //逆时针绝对定位函数
{
    while(1)
{
 rotate_ni();
     delay(10100);
     if(upTimeTH<=timeTH && upTimeTL<=timeTL) break; 
    }
}
void rotate_angle_shun(int timeTHint timeTL)  //顺时针绝对定位函数
{
    while(1)
{
 rotate_shun();
     delay(10100);
     if(upTimeTH>=timeTH && upTimeTL>=timeTL) break; 
    }
}
void main()
{
   p14=p15=p16=p17=0;    //按键设置
   PWM=1;
   timeInit();
   while(1)
   {
       if(upAdd==0&&flag==1)
   {
       rotate_ni();
       delay(100200);
   flag=0;
   }
    if(upSub==0&&flag==1)
   {
  // rotate_shun();
  // delay(100200);
  goto_angle(0xfa0x240xb70xbc);
   flag=0;
   }
   if(p12==0&&flag==1)    //逆时针转到180度
   {
      rotate_angle_ni(0xf50xe0);
  flag=0;
   }
      if(p13==0&&flag==1)   //顺时针转到0.8ms处
   {
      rotate_angle_shun(0xfc0xe0);
  flag=0;
   }
   if(upAdd==1&&upSub==1&&p12==1&&p13==1)
   {
       flag=1;
   }
  
   }
}
void time0(void) interrupt 1
{
    if(PWM==0)
{
    PWM=1;
TH0=upTimeTH;
        TL0=upTimeTL;
}
else
{
    PWM=0;
TH0=downTimeTH;
        TL0=downTimeTL;
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7676  2013-04-06 10:26  舵机\duoji

     文件       2631  2013-04-08 00:53  舵机\duoji .c

     文件       6183  2013-04-06 10:26  舵机\duoji .LST

     文件       8852  2013-04-06 10:26  舵机\duoji .OBJ

     文件       2004  2013-04-06 10:26  舵机\duoji.hex

     文件         59  2013-04-06 10:26  舵机\duoji.lnp

     文件      11844  2013-04-06 10:26  舵机\duoji.M51

     文件       3345  2013-04-06 10:55  舵机\duoji.plg

     文件      57388  2013-04-11 22:44  舵机\duoji.uvopt

     文件      13427  2013-04-06 10:43  舵机\duoji.uvproj

     文件      18994  2013-04-11 19:50  舵机\duoji_test_dir

     文件       6998  2013-04-11 19:50  舵机\duoji_test_dir.c

     文件       7141  2013-04-11 19:50  舵机\duoji_test_dir.hex

     文件         76  2013-04-11 19:50  舵机\duoji_test_dir.lnp

     文件      15833  2013-04-11 19:50  舵机\duoji_test_dir.LST

     文件      25659  2013-04-11 19:50  舵机\duoji_test_dir.M51

     文件      21442  2013-04-11 19:50  舵机\duoji_test_dir.OBJ

     文件       7905  2013-04-11 19:50  舵机\duoji_test_dir.plg

     文件      57384  2013-04-09 15:26  舵机\duoji_uvopt.bak

     文件      13236  2013-04-06 10:41  舵机\duoji_uvproj.bak

     文件       6376  2009-05-07 14:37  舵机\STARTUP.A51

     文件      14048  2013-04-11 19:50  舵机\STARTUP.LST

     文件        749  2013-04-11 19:50  舵机\STARTUP.OBJ

     目录          0  2015-08-17 20:29  舵机

----------- ---------  ---------- -----  ----

               309250                    24


评论

共有 条评论

相关资源