打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用8051单片机控制舵机

8051控制舵机

舵机在电子和嵌入式系统中非常有用,由于可以把它旋转到任何特定的角度,所以广泛应用于玩具、机器人、计算机、汽车、飞机等项目中。舵机的适用范围也很广泛,从高扭矩电机到低扭矩电机都有应用。

先简单了解一下舵机的工作原理,舵机主要告靠PWM(脉宽调制)控制,这意味着它的旋转角度是由控制脉冲的持续时间控制制的。舵机基本上由直流电动机组成,而直流电动机由可变电阻(电位器)和一些齿轮控制。直流电机的输出通过齿轮转换成扭矩。电位器连接到舵机的输出轴上,并计算角度,在到达需要的角度时停止直流电机。

舵机角度控制

舵机可旋转0到180度,可以通过1ms到2ms之间的脉冲持续时间来控制这种程度的旋转。1ms可以旋转0度,1.5ms可以旋转90度和2毫秒脉冲可旋转180度。1至2毫秒之间的持续时间可以旋转舵机到0至180度之间的任何角度。

电路原理图:

电路原理图

舵机有三根控制线,红色的VCC(电源),棕色的为GND,橙色是控制线。控制线连接到8051的引脚P2.0。当这个引脚输出高电平1ms,则舵机旋转到0度,输出高电平1.5ms,则舵机旋转到90度,输出高电平2ms,则舵机旋转到180度。函数“servo_delay”使用8051芯片的定时器生成50us延时。

由于使用8051的定时器0模式1,所以在TMOD寄存器中写入0x01。模式1是16位定时器模式,TH0是16位定时器的高字节,TL0是16位定时器的低字节。将0xff写入TH0,将0xd2写入TL0,在11.0592M的晶振下,值0xffd2将使定时器0产生50us延时。TR引脚用于启动定时器,TF是溢出标志,在溢出时由硬件设置标志,需要通过软件重新设置。

C语言代码:

#include

sbit output=P2^0;

void msdelay(unsigned int time) // 毫秒级延时函数.

{

unsigned i,j ;

for(i=0;i<>

for(j=0;j<>

}

void servo_delay(int times) // 50us整倍延时函数

{

int m;

for(m=0;m<>

{

TH0=0xFF;

TL0=0xD2;

TR0=1;

while(TF0==0);

TF0=0;

TR0=0;

}

}

void main()

{

int n;

TMOD=0x01; // 选择 Timer 0, Mode 1

output=0;

while(1)

{

for(n=13;n<>

{

output=1;

servo_delay(n);

output=0;

servo_delay(260);

msdelay(200);

}

}

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
LabVIEW Arduino:舵机控制
舵机原理
单片机之定时器篇_定时器t0,t1各种工作方式最长时间
多路舵机控制PWM发生器的设计与Proteus仿真
proteus与keil Cx51的单片机仿真(定时器输出方波)
arduino舵机servo库介绍和检查调整舵机的两个方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服