咳咳咳51单片机控制舵机程序咳咳咳51单片机控制舵机程序
Xxxxx
#include
#define Stop 0 //宏定义,停止
#define Left 1 //宏定义,左转
#define Right 2 //宏定义,右转
sbit ControlPort = P2^0; //舵机信号端口
sbit KeyLeft = P1^0; //左转按键端口
sbit KeyRight = P1^1; //右转按键端口
sbit KeyStop = P1^2; //归位按键端口
unsigned char TimeOutCounte...
咳咳咳51单片机控制舵机程序
Xxxxx
#include
#define Stop 0 //宏定义,停止
#define Left 1 //宏定义,左转
#define Right 2 //宏定义,右转
sbit ControlPort = P2^0; //舵机信号端口
sbit KeyLeft = P1^0; //左转按键端口
sbit KeyRight = P1^1; //右转按键端口
sbit KeyStop = P1^2; //归位按键端口
unsigned char TimeOutCounter = 0,LeftOrRight = 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;
}
}
本文档为【咳咳咳51单片机控制舵机程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。