IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【51单片机】舵机控制——一篇就够 -> 正文阅读

[嵌入式]【51单片机】舵机控制——一篇就够

来看文章的都是想快速学会使用的,咱们挑重点的说

(舵机有多种,本文仅介绍固定180度舵机)

?舵机有3根线:红、 ? 黄、 ? 棕

???????????????????????? ↓?????? ? ↓?????? ? ↓

分别对应????? :vcc、信号、接地

2.怎么让舵机转动起来?

舵机的转动角度跟输入脉冲有关,详细看下表

? ? ? ? ? ? ?? 总周期为20ms

?? 角度????????? ?? 高电平???????? ?? 低电平

? ? 0度?????????? ?? 0.5ms?????? ? ?? 19.5ms??????????????????? 可以发现一个规律:角度每次增加45 度

? 45度????????????? 1ms???????????? ? 19ms??????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 高电平时间增加0.5ms

? 90度????????????? 1.5ms??????????? 18.5ms????????????????????????

135度??????????? ? 2ms?????????????? 18ms????????????????????????????? 总周期-高电平脉冲=低电平脉冲

180度????????????? 2.5ms??????????? 17.5ms

?

知道了规律,这下子我们可以来写代码了↓?

#include <regx51.h>
void Delay(unsigned char i)   //12MHz 延时函数  
{
    unsigned char a,b;        //该段延时函数Delay(1)=0.5ms
    for(;i>0;i--)
  for(b=71;b>0;b--)
        for(a=2;a>0;a--);
}

sbit PWM=P1^1;  //定义给信号线脉冲输入I/O口

/*
  总周期20ms
  通过调节占空比实现舵机需要转动的角度
*/
void zero(void) //0度 子程序
{   
        PWM=1;
        Delay(1);       //高电平 Delay(1)=0.5ms     
        PWM=0;
        Delay(39);      //低电平 Delay(39)=19.5ms
}

void one(void) //45度 子程序
{
        PWM=1;
        Delay(2);      //Delay(2)=1ms
        PWM=0;   
        Delay(38);     //Delay(38)=19ms
}

void two(void)  //90度 子程序
{
         PWM=1;
        Delay(3);       //Delay(3)=1.5ms
        PWM=0;
        Delay(37);     //18.5ms
}

void three(void) //135度 子程序
{
        PWM=1;
        Delay(4);       //Delay(4)=2ms
        PWM=0;
        Delay(36);      //18ms
}

void four(void) //180度 子程序
{
        PWM=1;
        Delay(5);      //Delay(5)=2.5ms
        PWM=0;
        Delay(35);     //17.5ms
}
void main()  //主程序
{     
    while(1)
    {    
         two();     //调用90度的子程序,实现舵机转动90度
    }
}

//end

如果需要按键控制,可以通过改变主程序代码实现,如↓?

void main()
{     
	while(1)
	{	
        if(P3_1==0)   //如果按键按下
		  {
/*			  Delay(5);   //按键消抖,
			  if(P3_1==0) //       可删,看需要添加。
*/
              two();  //如果按键按下,舵机转动90度				 
		  }

		else        //否则
		  zero();   //为0度
    }
}

PS:建议写代码时先写一个0度的程序,先确定舵机0度位置,方便确定舵机转动的方向和角度

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:19:13  更:2021-09-12 13:21:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/23 18:19:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码