• 大小: 16.79 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-11-22
  • 语言: 其他
  • 标签: 舵机  

资源简介

用51单片机控制舵机,按键实现左转、右转及归位,程序风格采用 化为公司 标准,整洁易读。

资源截图

代码片段和文件信息

/***********************************************************
版权所有 :河池学院创新实训中心(2/3),刘欢(1/3)
程序功能 :舵机控制
生成日期 :2009年10月30日 星期五
作  者 :刘欢
联系方式  :(QQ)281638360  (MSN)sundayboy@live.cn
说  明 :51单片机控制舵机,按键实现左转、右转及归位
            占用定时/计数器1
************************************************************/

#include 
#define Stop 0    //宏定义,停止
#define Left 1   //宏定义,左转
#define Right 2   //宏定义,右转


sbit ControlPort = P1^0;  //舵机信号端口
sbit KeyLeft = P1^1;   //左转按键端口
sbit KeyRight = P1^2;   //右转按键端口
sbit KeyStop = P1^3;   //归位按键端口

unsigned char TimeOutCounter = 0LeftOrRight = 0;  //TimeOutCounter:定时器溢出计数   LeftOrRight:舵机左右旋转标志

void InitialTimer ( void )  
{
    TMOD=0x10;   //定时/计数器1工作于方式1
    TH1 = ( 65535 - 500 ) / 256;   //0.25ms
TL1 = ( 65535 - 500 ) % 256;
    EA=1;        //开总中断
    ET1=1;       //允许定时/计数器1 中断
    TR1=1;       //启动定时/计数器1 中断
}

void ControlLeftOrRight ( void )   //控制舵机函数
{
if( KeyStop == 0 )
{
while ( !KeyStop );    //使标志等于Stop(0),在中断函数中将用到
LeftOrRight = Stop;
}

if( KeyLeft == 0 )
{
while ( !KeyLeft );    //使标志等于Left(1),在中断函数中将用到
LeftOrRight = Left;
}

if( KeyRight == 0 )
{
while ( !KeyRight );   //使标志等于Right(2),在中断函数中将用到
LeftOrRight = Right;
}

}

void main ( void )  //主函数
{
    InitialTimer();
for(;;)
{
ControlLeftOrRight();
}
}

void Timer1 ( void ) interrupt 3  //定时器中断函数
{
    TH1 = ( 65535 - 500 ) / 256;
TL1 = ( 65535 - 500 ) % 256;
TimeOutCounter ++;

switch ( LeftOrRight )
{
case 0 :   //为0时,舵机归位,脉宽1.5ms
{
if( TimeOutCounter <= 6 )
{
ControlPort = 1;
}
else 
{
ControlPort = 0;
}
break;
}
case 1 :     //为1时,舵机左转,脉宽1ms(理论值),实际可以调试得出
{
if( TimeOutCounter <= 2 )
{
ControlPort = 1;
}
else 
{
ControlPort = 0;
}
break;
}
case 2 :   //为2时,舵机右转,脉宽2ms(理论值),实际可以调试得出
{
if( TimeOutCounter <= 10 )
{
ControlPort = 1;
}
else 
{
ControlPort = 0;
}
break;
}
default : break;
}

if( TimeOutCounter == 80 )  //周期20ms(理论值),比较可靠,最好不要修改
{
TimeOutCounter = 0;
}
}

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

     文件       6376  2009-10-30 22:30  舵机控制\STARTUP.A51

     文件      10722  2009-10-30 22:30  舵机控制\STARTUP.LST

     文件        750  2009-10-30 22:30  舵机控制\STARTUP.OBJ

     文件       4044  2009-10-30 22:30  舵机控制\SteeringEngineControl

     文件       2481  2009-10-30 22:30  舵机控制\SteeringEngineControl.c

     文件        869  2009-10-30 22:30  舵机控制\SteeringEngineControl.hex

     文件         90  2009-10-30 22:30  舵机控制\SteeringEngineControl.lnp

     文件       6201  2009-10-30 22:30  舵机控制\SteeringEngineControl.LST

     文件       8242  2009-10-30 22:30  舵机控制\SteeringEngineControl.M51

     文件       3920  2009-10-30 22:30  舵机控制\SteeringEngineControl.OBJ

     文件       1062  2009-10-30 22:31  舵机控制\SteeringEngineControl.Opt

     文件        430  2009-10-30 22:31  舵机控制\SteeringEngineControl.plg

     文件       2207  2009-10-30 20:53  舵机控制\SteeringEngineControl.Uv2

    .......      1060  2009-10-30 22:30  舵机控制\SteeringEngineControl_Opt.Bak

     文件       2206  2009-10-30 20:49  舵机控制\SteeringEngineControl_Uv2.Bak

     目录          0  2009-10-30 22:31  舵机控制

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

                50660                    16


评论

共有 条评论