资源简介
用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
相关资源
- AT89C2051多路舵机控制电路详解
- 如何用单片机控制舵机及程序详细
- 单片机控制舵机电路图
- arduino pca9685多舵机同时控制案例
- 循迹小车51程序(超声波 颜色识别 舵
- OPENMV舵机云台颜色追踪学习资料.zip
- STM32控制sg90舵机代码.rar
- PCA9685驱动16舵机电机调速STM32F4代码
- LOBOT 24路舵机控制软件中文版.rar
- STM32舵机控制的基本代码
- stm32f103 驱动舵机例程
- STM32SG90舵机
- 32路舵机控制器
- 基于STM32F103控制16PWM路舵机驱动板PC
- 双足机器人及多舵机控制
- 基于STM32的舵机控制系统 20181125
- STM32蓝牙+超声波+舵机.rar
- MG995舵机基于STM32的驱动源代码
- stm32任意角度控制SG90小舵机
- 基于stm32f4的舵机控制
- 2017年电子设计大赛_滚球控制系统源代
- STM32F103C8舵机控制程序,原创支持12舵
- STM32控制舵机任意角度转动0--180度
- STM32串口控制舵机.zip
- 2017 电赛 滚球控制系统源代码(PIX
- stm32蓝牙控制机械臂3个舵机校赛用的
- 16路模块 PWM舵机驱动板 控制器 机器人
- 数字舵机相关资料 pdf
- STM32可以实现用户给指定角度,然后舵
- stm32f1控制电磁阀+舵机+ADC推杆
评论
共有 条评论