51单片机按键控制舵机旋转

一、舵机工作原理

1、这里介绍的sg90的可旋转角度为 0~180°

2、sg90有三条线,橙色(PWM)红色(5V)棕色(GND)

3、PMW的范围为0.5ms2.5ms,相应的旋转角度为0180°

二、控制代码

1、接线图如下(这里用到的PWM引脚为at89c52中的 P2.1):

2、实现的功能介绍:按下k2旋转角度为0°(复位),按下k3旋转角度递增,按下k4旋转角度递减,按下k5旋转角度最大(180°)

3、代码如下:

#include<reg52.h>
#include<intrins.h>int count = 0; //全局变量,监控pwm周期
int jd=5; //初始化旋转角度,5是通过定时器定时长度和sg90高电平持续时间计算出来的(以下会说明)
sbit sg90=P2^1;
sbit key1 = P3^4;
sbit key2 = P3^5;
sbit key3 = P3^6;
sbit key4 = P3^7;//延时函数
void delay(unsigned char i){unsigned int j,k;for(j=i;j>0;j--)for(k=125;k>0;k--);
}//定时器初始化函数
void Time0_init(){TMOD=0X01;      //T0定时方式1TL0 = 0xA4;        //设置定时寄存器低八位初值TH0 = 0xFF;      //设置定时寄存器高八位初值ET0=1;          //打开定时器0的中断TR0=1;          //打开定时器0EA=1;           //开总中断
}void main(){delay(300);Time0_init();   while(1){//复位键if(key1 == 0){delay(50);if(key1 == 0){jd = 5;count = 0;}}//角度递增if(key2 == 0){delay(50);if(key2 == 0){if(jd>=5 && jd<=24){jd++;}   count = 0;}}//角度递减if(key3 == 0){delay(50);if(key3 == 0){if(jd>=6 && jd<=25){jd--;}         count = 0;}}//最大角度if(key4 == 0){delay(50);if(key4 == 0){jd = 25;count = 0;}}}
}void Time_server() interrupt 1{TL0 = 0xA4;        //设置定时寄存器低八位初值TH0 = 0xFF;      //设置定时寄存器高八位初值if(count<=jd){sg90 = 1;}else{sg90 = 0;}count++;if(count >= 200){sg90 = 0;count = 0;}
}

4、关于中断

  • 定时器定时长度可通过工具算出:

51单片机sg90舵机相关推荐

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

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

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

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

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

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

  4. 使用51单片机控制舵机入门

    舵机(sg90,板子是普中的51) 本人小白一枚,昨天用51实现了舵机的几个小功能,帮助和我一样初学的朋友~(。・`ω´・) 如有错误不足还请大家指点 接线 红电源 棕接地 橙色数据线 代码 希望实现 ...

  5. MSP430 STM32 单片机 SG90 舵机

    接线: 注意: 1 工作电压:4.2-6V 2 PWM给20ms周期,也就是50HZ 3 手册可能写的是高电平是1ms到2ms,其实给0.5ms到2.5ms,还是要试试才知道. 4 给舵机直流电5V, ...

  6. 51单片机控制舵机,舵机不动的定时器原因

    舵机: 红色:VCC 棕色:GND 黄色:PWM 这是定时器0初始化: unsigned cha count = 0; unsigned char timer1 ;void Timer1_Init() ...

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

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

  8. 最简单DIY基于C#和51单片机上下位机一体化的PCA9685舵机控制程序

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

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

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

最新文章

  1. MySQL 5.1.40新特性及下载
  2. ASP.NET MVC3 301永久重定向实现程序
  3. layui 实现图片上传和预览
  4. 深度学习之卷积神经网络 AlexNet
  5. CSS 行内级元素和行内框
  6. django目录介绍
  7. vb6 怎么把一个数组的 0 值 去掉_解决逆向查找问题?VLOOKUP、CHOOSE、IF,索引数组,轻松解决...
  8. Foobar2000是一款完全可定制的音乐播放器
  9. 验证集精度高于训练集精度的原因分析
  10. MMORPG游戏框架图
  11. 信号跟单时提示mt4与服务器断开,MT4平台操作中遇到的一些常见问题和解决方法 -...
  12. spark大数据应用
  13. 华为手机什么时候更新鸿蒙系统_华为鸿蒙2.0系统什么时候可以用 华为鸿蒙2.0系统升级方法介绍[多图]...
  14. 支付宝小程序的开发笔记
  15. Java正则表达式(超详细)
  16. android dy 完结篇(0x3)
  17. 齐治堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析
  18. 浅谈文化创意产业与创意城市 | 上海城市规划
  19. L1-011~L1-015
  20. 黎明杀机无限连接服务器错误,更新黎明杀机时发生错误 无法连接到更新服务器 | 手游网游页游攻略大全...

热门文章

  1. mysql 乱码 越南_mysql数据库乱码之保存越南文乱码解决方法
  2. puzzle(0142)幻圆、拉丁方
  3. JVM的基本结构及其各部分详解(一)
  4. MySQL多表联合查询
  5. 《版式设计——日本平面设计师参考手册》目录—导读
  6. 轮播与fragment联动
  7. 目标检测 TP\FP\FN\TN如何理解?FN和TN无意义
  8. java版五子棋游戏源码
  9. Hbuilder插件下载失败,提示“插件下载失败,请检查网络是否正常”
  10. requests出现InsecureRequestWarning解决