资源简介
用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
- 上一篇:C++ curl封装类
- 下一篇:c++标准库函数中文chm
评论
共有 条评论