基于51单片机控制SG90舵机

  • 基本介绍
    • 舵机的分类
    • 接线
  • 代码
    • main.c
    • delay.c
    • delay.h
  • 基于 51单片机的其他项目

基本介绍

舵机的分类

大致分为以下三种吧 只是我现在用过就三种 。

180° 有限位 (不上电 只能转180度 真正转也就是180° )
180° 无限位 (不上电 能转360° 但是真正转也就是180°)
360° 无限位 (这个就是上电不上电都能转360°以上)

我这里用的是 180° 无限位的舵机
首先看看一下图片:

接线

接线其实很简单。

51单片机 SG90舵机
VCC VCC(红色)
GND GND(棕色)
P1.0 信号线 (橙色)

代码

我用的是STC89C52

main.c


#include <reg52.h>
#include "delay.h"unsigned int count;      //次数标识
unsigned int angle=5;         //角度标识
sbit pwm =P1^0 ;          //PWM信号输出/*定时器初始化函数*/
void Timer0_Init(void)      //100微秒@11.0592MHz
{TMOD |= 0x01;     //设置定时器模式TL0 = 0xA4;       //设置定时初值TH0 = 0xFF;        //设置定时初值TF0 = 0;       //清除TF0标志TR0 = 1;      //定时器0开始计时ET0 = 1;
}/*串口初始化函数*/
void Uart_Init(void)        //9600bps@11.0592MHz
{SCON = 0x50;      //8位数据,可变波特率TMOD |= 0x20;      //设定定时器1为8位自动重装方式TL1 = 0xFD;       //设定定时初值TH1 = 0xFD;        //设定定时器重装值ET1 = 0;     //禁止定时器1中断TR1 = 1;     //启动定时器1ES = 1;EA = 1;
}/*串口发送一字节函数*/
void Uart_SendData(unsigned char dat )
{SBUF = dat;while(TI == 0);TI = 0;
}/*串口发送字符串函数*/
void Uart_SendString(char *s)
{while (*s)              {Uart_SendData(*s++);}
}/*程序入口*/
void main(void)
{//angle与对应角度关系//4   5   6   ...... 19  20//0   11  22  ...... 166 177Uart_Init();Timer0_Init();Uart_SendString("舵机正在旋转。\r\n");for(angle=4;angle<21;angle++)//从0到177度,步进11度{delay_ms(2);}delay_ms(2000);for(angle=21;angle>4;angle--)//从177到0度,步进11度{delay_ms(2);}Uart_SendString("舵机正在往复旋转。\r\n");while(1){ }
}/*串口中断服务函数*/
void Uart_Isr() interrupt 4
{if (RI){RI = 0;  }
}/*定时器中断服务函数*/
void Timer0_Isr() interrupt 1
{TL0 = 0xA4;       //设置定时初值TH0 = 0xFF;        //设置定时初值if(count< angle)              //判断次数是否小于角度标识pwm=1;                  //确实小于,PWM输出高电平elsepwm=0;                  //大于则输出低电平count=(count+1);          //0.1ms次数加1count=count%160;     //保持周期为20ms,普通51单片机定时100us有误差,经示波器测量约为50Hz
}

delay.c

#include <reg52.h>
#include "delay.h"
#include "intrins.h"//延时约1ms
void delay_ms(unsigned int ms)
{unsigned int a,b;for(a=ms;a>0;a--)for(b=114;b>0;b--);
}

delay.h

#ifndef __DELAY_H
#define __DELAY_H
#include <reg52.h>void delay_ms(unsigned int ms);#endif

基于 51单片机的其他项目

基于51单片机+遥控灯
基于51单片机+LCD1602显示
基于51单片机+红外遥控解码+LCD1602显示
基于51单片机+DHT11温湿度+LCD1602显示
基于51单片机+DS18B20温度测温器+LCD1602显示
基于51单片机+SYN6288语音播报
基于51单片机+LD3320语音模块+SYN6288语音合成——语音识别智能分类垃圾桶
基于51单片机+ESP8266模块(HTTP)上传温湿度到oneNET APP显示+LCD1602显示

如果觉得这篇文章对你有用。欢迎大家点赞、评论哈哈o( ̄︶ ̄)o

继续加油!

基于51单片机+SG90舵机相关推荐

  1. 最简单DIY基于51单片机的舵机控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  2. 基于51单片机密码锁-舵机开锁-CXM

    这个项目的起因还是因为每次进出寝室十分的麻烦才有了这个项目 所以我和我的铁子就决定搞个密码锁 我负责软件我的铁子负责硬件 目录 原理图 主要功能函数讲解 硬件 先简单介绍一下整个架构 原理图 主要功能 ...

  3. 51单片机sg90舵机

    51单片机按键控制舵机旋转 一.舵机工作原理 1.这里介绍的sg90的可旋转角度为 0~180° 2.sg90有三条线,橙色(PWM)红色(5V)棕色(GND) 3.PMW的范围为0.5ms2.5ms ...

  4. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  5. 最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  6. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)

    + 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...

  7. (含代码)基于51单片机的红外遥控(独立按键)舵机开关灯控制

    硬件说明: 采用STC89C51作为主控芯片,结合SG90舵机模块,红外遥控(独立按键),等电路模块实现远程控制舵机. 应用实例: 在不改变外部电路的情况下,实现远程开灯,关灯. 远程控制机器开关状态 ...

  8. 基于51单片机的简易雷达定位装置

    简易超声波雷达 任务: 一. 摘要: 超声波测距广泛运用于各类电子产品精确距离测量,如汽车尾部的倒车雷达对倒车时的障碍物进行精确判断,反馈到驾驶员,使驾驶员能做出准确的判断和操作:各类航模中当即将触地 ...

  9. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

  10. B47 - 基于51单片机的RFID停车计费系统

    任务摘要 当今社会,交通压力不断增加,智能停车场管理系统是人们对便捷高效交通的一种追求.本智能停车场管理系统运用RFID技术,采用STC8H8K64U单片机.RC522.串口屏.光电传感器实现系统设计 ...

最新文章

  1. Design Pattern - Mediator(C#)
  2. 12种提升视频质量的方法
  3. Socket模型详解
  4. java static 变量 初始化一次_关于java static变量初始化的疑问
  5. java经典密码算法,浅析五种最常用的Java加密算法,以后可以直接拿来用了
  6. PTA-基础编程题目集-函数题 ……
  7. C++:vs2017编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字【解决办法】
  8. vb 复制 剪贴板 html,VB把选中的内容复制到剪切板
  9. USB接口的TP概率性不工作需重启才恢复问题定位
  10. linux下面配置安装nodejs+npm
  11. spring cloud微服务分布式云架构 - Spring Cloud集成项目简介( java ssm spring boot b2b2c o2o 多租户电子...
  12. 第4节 常见软件安装-Mysql和SQLyog
  13. lin接口 连接计算机,db9接口(lin接口db9定义)
  14. 【AS3代码】擦窗户效果(也就是流行的妄撮游戏)
  15. uReport2报表工具的基础使用及注意事项
  16. 查询大数据各组件版本
  17. IGRP/EIGRP 内部网管路由选择协议
  18. 采购申请PR和采购订单PO的关系
  19. 研报精选230215
  20. 抖音招商团长怎么做?怎么入驻?

热门文章

  1. CentOS8-linux安装 tailf命令
  2. Docker容器监控cAdvisor
  3. 传奇服务器修改二级密码,找回传奇玩家账号和二级密码,修改密码和密保
  4. vs201X的TFS(Team Foundation Server) 设置为:不自动签出
  5. 太极 免ROOT使用Xposed模块
  6. 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
  7. 75道面试逻辑智力测试题内附详细答案
  8. 怎么在MATLAB中看奈氏图的S平面,MATLAB频域分析,奈氏图、伯德图、对数幅相图绘制...
  9. 基于 Java 机器学习自学笔记 (第60天:过去十日的总结)
  10. JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)