51单片机控制舵机程序.doc

上传人:鲁** 文档编号:547468404 上传时间:2023-01-28 格式:DOC 页数:3 大小:31.50KB
返回 下载 相关 举报
51单片机控制舵机程序.doc_第1页
第1页 / 共3页
51单片机控制舵机程序.doc_第2页
第2页 / 共3页
51单片机控制舵机程序.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《51单片机控制舵机程序.doc》由会员分享,可在线阅读,更多相关《51单片机控制舵机程序.doc(3页珍藏版)》请在金锄头文库上搜索。

1、#include #define Stop 0 /宏定义,停止#define Left 1 /宏定义,左转#define Right 2 /宏定义,右转sbit ControlPort = P20; /舵机信号端口sbit KeyLeft = P10; /左转按键端口sbit KeyRight = P11; /右转按键端口sbit KeyStop = P12; /归位按键端口unsigned char TimeOutCounter = 0,LeftOrRight = 0; /TimeOutCounter:定时器溢出计数 LeftOrRight:舵机左右旋转标志void InitialTimer

2、 ( void ) TMOD=0x10; /定时/计数器1工作于方式1 TH1 = ( 65535 - 500 ) / 256; /0.25msTL1 = ( 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 (

3、!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 ) % 25

4、6;TimeOutCounter +;switch ( LeftOrRight )case 0 : /为0时,舵机归位,脉宽1.5msif( 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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号