首页 > 编程知识 正文

51单片机制作舵机,51单片机控制sg90舵机

时间:2023-05-03 17:36:34 阅读:48504 作者:3936

舵机三股线接法:黄线接信号线,红线接vcc,褐色线接GND

舵机控制原理:通过控制PWM来控制舵机的旋转角度。 关于PWM的知识可以在智能小车的专栏里学习。 旋转周期为20ms,控制高电平的时间来控制舵机的旋转角度。

关于180舵机

t=0.5ms——————-转向机会旋转0

t=1.0ms——————-转向机会旋转45

t=1.5毫秒——33543354 -舵机会旋转90

t=2.0ms——————-转向机会旋转135

t=2.5毫秒——33543354 -舵机180转

此代码包含计时器、中断和pwm知识,可以在51智能购物车专栏中学习。 其中,计时器选择计时器1,使用两个字符型变量中的timer1决定高电平的时间,count作为计数器发挥功能,使用if语句判断两个字符型变量的大小,决定何时成为高电平或成为低电平

//_nop_ () 1机器周期# includereg 52.h # include delay.hsbitpwm=P3 ^ 2; //PWM输出的I/O端口设置为unsigned char count=0; 无符号char time R1; /* 180舵机t=0.5ms——————-舵机会旋转0 t=1.0ms——————-舵机会旋转45t=1.5ms33543——33——-舵机会旋转90 -舵机会180*//*延迟程序*//*计时器T0初始化*/voidtimer0_init({tmod=0x00; TMOD |=0x01; //计时器T0设定为方式1 TH0=0xff; //定时常数0.1ms石英振动频率为11.0592MHz TL0=0xa4; ET0=1; TR0=1; EA=1; }/*T0中断初始化*/void time0_ init (interrupt1(tr0=0; TH0=0xff; //0.1msTL0=0xa4; if (计数=时间R1 )//5==0 15==90{ PWM=1; }else { PWM=0; }计数; if(count=200 )//T=20ms清除({ count=0; }TR0=1; T0}void main () {Timer0_Init ); wile(1) {timer1=5; //舵机返回0度位置count=0; //让计时器重新计数延迟(3000 ); 时间R1=10; //舵机45度旋转count=0; 延迟(3000; 时间R1=15; //舵机旋转90度count=0; 延迟(3000; }简单地使用延迟函数提高了代码的可移植性

Delay.c//1ms级延迟函数

voidDelay(unsignedintXMS ) {unsigned char i,j; wile(XMS---- ) I=2; j=239; do{while (--j ); (while(--I ); }} Delay.h

# ifndef _ delay _ h _ # define _ _ delay _ h _ _ void delay (unsignedintxms ); #endif

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。