基于51单片机+SG90舵机
基于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舵机相关推荐
- 最简单DIY基于51单片机的舵机控制器
51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...
- 基于51单片机密码锁-舵机开锁-CXM
这个项目的起因还是因为每次进出寝室十分的麻烦才有了这个项目 所以我和我的铁子就决定搞个密码锁 我负责软件我的铁子负责硬件 目录 原理图 主要功能函数讲解 硬件 先简单介绍一下整个架构 原理图 主要功能 ...
- 51单片机sg90舵机
51单片机按键控制舵机旋转 一.舵机工作原理 1.这里介绍的sg90的可旋转角度为 0~180° 2.sg90有三条线,橙色(PWM)红色(5V)棕色(GND) 3.PMW的范围为0.5ms2.5ms ...
- 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序
51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...
- 最简单DIY基于蓝牙、51单片机和舵机的钢铁爱国者机关枪控制器
51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...
- 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
+ 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...
- (含代码)基于51单片机的红外遥控(独立按键)舵机开关灯控制
硬件说明: 采用STC89C51作为主控芯片,结合SG90舵机模块,红外遥控(独立按键),等电路模块实现远程控制舵机. 应用实例: 在不改变外部电路的情况下,实现远程开灯,关灯. 远程控制机器开关状态 ...
- 基于51单片机的简易雷达定位装置
简易超声波雷达 任务: 一. 摘要: 超声波测距广泛运用于各类电子产品精确距离测量,如汽车尾部的倒车雷达对倒车时的障碍物进行精确判断,反馈到驾驶员,使驾驶员能做出准确的判断和操作:各类航模中当即将触地 ...
- 基于51单片机的多功能智能语音循迹避障小车
目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...
- B47 - 基于51单片机的RFID停车计费系统
任务摘要 当今社会,交通压力不断增加,智能停车场管理系统是人们对便捷高效交通的一种追求.本智能停车场管理系统运用RFID技术,采用STC8H8K64U单片机.RC522.串口屏.光电传感器实现系统设计 ...
最新文章
- Design Pattern - Mediator(C#)
- 12种提升视频质量的方法
- Socket模型详解
- java static 变量 初始化一次_关于java static变量初始化的疑问
- java经典密码算法,浅析五种最常用的Java加密算法,以后可以直接拿来用了
- PTA-基础编程题目集-函数题 ……
- C++:vs2017编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字【解决办法】
- vb 复制 剪贴板 html,VB把选中的内容复制到剪切板
- USB接口的TP概率性不工作需重启才恢复问题定位
- linux下面配置安装nodejs+npm
- spring cloud微服务分布式云架构 - Spring Cloud集成项目简介( java ssm spring boot b2b2c o2o 多租户电子...
- 第4节 常见软件安装-Mysql和SQLyog
- lin接口 连接计算机,db9接口(lin接口db9定义)
- 【AS3代码】擦窗户效果(也就是流行的妄撮游戏)
- uReport2报表工具的基础使用及注意事项
- 查询大数据各组件版本
- IGRP/EIGRP 内部网管路由选择协议
- 采购申请PR和采购订单PO的关系
- 研报精选230215
- 抖音招商团长怎么做?怎么入驻?
热门文章
- CentOS8-linux安装 tailf命令
- Docker容器监控cAdvisor
- 传奇服务器修改二级密码,找回传奇玩家账号和二级密码,修改密码和密保
- vs201X的TFS(Team Foundation Server) 设置为:不自动签出
- 太极 免ROOT使用Xposed模块
- 在多媒体计算机系统中图像的颜色是,图像量化位数越大,记录图像中每个像素点的颜色种类就越多。() - 试题答案网问答...
- 75道面试逻辑智力测试题内附详细答案
- 怎么在MATLAB中看奈氏图的S平面,MATLAB频域分析,奈氏图、伯德图、对数幅相图绘制...
- 基于 Java 机器学习自学笔记 (第60天:过去十日的总结)
- JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)