51单片机——SG90舵机

article/2025/3/10 10:33:36

文章目录

  • 一.PWM介绍
  • 二.如何实现PWM信号输出
  • 三.接线
  • 四.sg90代码

一.PWM介绍

1.PWM是pulse width modulation,是脉冲宽度的缩写,它是通过一系列脉冲宽度进行调剂,等效出所需的波形(包含形状以及幅值)。

2.PWM信号图解析:舵机需要PWM信号才能进行运动(图1),在一个周期内(图2),给一个占空比就可以决定舵机转动多少度,占空比就是在一个周期内,高电平所占据时长的百分比。
在这里插入图片描述

二.如何实现PWM信号输出

1.一般手册中IO口会标出PWM口。

2.如果没有PWM功能,可以通过IO口软件模拟出来,相对来说比硬件PWM精准度差点。

3.怎么模拟?搞个50HZ的频率的PWM,PWM波的频率不能太高,大约50HZ就可以了,周期计算=频率的倒数=1/50=0.02s=20ms,所以一个周期为20ms,

4.0——180°的舵机,(图1)0.5ms就是0°,1ms就是45°,1.5ms就是90°,2ms就是135°,2.5ms就是180°(如果想-90°——90°的话,就把0°当作90°,45°当作45°,90°当作0°,135°当作-45°,180°当作-90°,之后舵机的单向摇臂,想让他一开始旋转就变为0°的位置的话则给1.5ms,然后在把单向摇臂安装上去,对着的那个方向就是0°,下图2是把1.5ms-90度当作0度的图)。

图1
在这里插入图片描述
图2
在这里插入图片描述
5.上电后按固定周期,占空比给它,它就会在那个角度不动,并且上电后会有一点不稳定需要给一些延时。

三.接线

一般有三根线,黄:PWM信号口,红:VCC,灰:GND。

四.sg90代码

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__void Delayms(unsigned char xms);
void Delay1000ms();#endif

Delay.c

#include <REGX52.H>
#include "INTRINS.H"//ms函数
void Delayms(unsigned char xms)		//@11.0592MHz
{unsigned char i, j;while(xms--){_nop_();i = 2;j = 199;do{while (--j);} while (--i);}}void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}

Timer0.h

#ifndef __TIMER0_H__
#define __TIMER0_H__void Timer0_Init(void);#endif

Timer0.c

#include <REGX52.H>void Timer0_Init(void)
{TMOD&=0xF0;TMOD|=0x01;TF0=0;TR0=1;//开始计时TH0=0xFE;//500us=0.5msTL0=0x33;ET0=1;EA=1;PT0=0;//最高优先中断
}

main.c

#include <REGX52.H>
#include "Timer0.h"
#include "Delay.h"sbit sg90_con=P1^1;int count;
int angle;//角度void main()
{Delayms(300);//不稳定Timer0_Init();angle=3;sg90_con=1;//一上电让它为高电平while(1){angle=1;//0°Delay1000ms();Delay1000ms();angle=3;//90°Delay1000ms();Delay1000ms();}
}void Timer0_Rountime() interrupt 1
{count++;TH0=0xFE;//500us=0.5msTL0=0x33;if(count==40)//经过啦20ms{count=0;sg90_con=1;}if(count<angle)//爆表之前给高电平,{sg90_con=1;}else//爆表则拉低电平,没爆表之前都是高电平{sg90_con=0;}}

http://chatgpt.dhexx.cn/article/mB443M6r.shtml

相关文章

单片机 舵机 SG90 舵机 控制原理 MSP432 单片机

文章目录 实物接线msp432程序 实物 https://www.cnblogs.com/yasina/p/12439035.html 接线 接线&#xff1a; pwm:橙色信号线 VCC:红色&#xff08;4.8-6v&#xff09;不能是3.3V GND:棕色 &#xff08;1&#xff09;单片机需要输出PWM波形控制舵机角度。 &#xff08;2&…

MSP430 STM32 单片机 SG90 舵机

接线&#xff1a; 注意&#xff1a; 1 工作电压&#xff1a;4.2-6V 2 PWM给20ms周期&#xff0c;也就是50HZ 3 手册可能写的是高电平是1ms到2ms&#xff0c;其实给0.5ms到2.5ms&#xff0c;还是要试试才知道。 4 给舵机直流电5V&#xff0c;但黄色信号线可直接连单片机引脚&am…

micropython(esp8266)SG90舵机控制

文章目录 SG90舵机接线控制方法 micropython程序部分示例实际操作 SG90舵机 接线 接线方法 有三根线&#xff0c;分别对应 红色-VCC 棕色-GND 橙色-信号线 这里接在D1也即是GPIO5处 控制方法 控制方法通过pwm控制信号线&#xff0c; 从而控制电机的运动 PWM周期&#xff1a…

雪碧enjoy_雪碧牛

雪碧enjoy 作者 克里斯科耶尔 已发表 2011年6月21日 翻译自: https://css-tricks.com/sprite-cow/ 雪碧enjoy

HTML css jQuery实现导航栏(华丽动画)

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>HTML css jQuery实现导航栏(华丽版)</title><style>* {/* 清除默认内边距 */padding: 0;/* 清除默认外边距 */margin: 0;}body {/* 设置默认字体 */font-weig…

CSS/HTML制作京东商城顶部导航条

京东商城原网站&#xff1a; 效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"…

雪碧图 移动端雪碧图

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>雪碧图</title><style type"text/css">span{display: inline-block; width: 24px; height: 24px; border: 1px solid #…

CSS雪碧图demo(含雪碧代码)

css雪碧图demo效果图&#xff0c;含hover&#xff0c;代码附件下载sprite_demo.zip 雪碧图制作问题参考&#xff1a; HTML 5开发的在线雪碧图片合成工具 http://developer.51cto.com/art/201206/341225.htm 合成工具url http://alloyteam.github.io/gopng 练手小图片素材&#…

CSS雪碧

CSS雪碧 CSS雪碧 即CSS Sprites&#xff0c;也有人叫它CSS精灵&#xff0c;是一种CSS图像合并技术&#xff0c;该方法是将小图标和背景图像合并到一张图片上&#xff0c;然后利用css的背景定位来显示需要显示的图片部分。 原理 CSS雪碧的基本原理是把你的网站上用到的一些图片整…

19-CSS sprites (css 精灵)实现教程

一、Css Sprites介绍 CSS Sprites : css精灵&#xff0c;css图片整合技术&#xff0c;css雪碧; 定义∶将导航背景图片&#xff0c;按钮背景图片等有规则的合并成一张背景图&#xff0c;即将多张图片合为一张整图&#xff0c;然后用background-position来实现背景图片的定位技术…

CSS3—雪碧图和滑动门

一、CSS Sprite&#xff08;雪碧图&#xff09; CSS Sprite也叫CSS精灵、CSS雪碧图&#xff0c;是一种网页图片应用处理方式。它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去&#xff0c;这样一来&#xff0c;当访问该页面时&#xff0c;由从前的多次请求变为一…

精灵图,雪碧图的应用

1.什么是精灵图&#xff1f; 精灵图就是一张图片中显示了页面中多个地方使用的图片&#xff0c;如 2.为什么使用精灵图&#xff1f; 使用精灵图可以减少加载图片的次数&#xff0c;当引入一次图片后&#xff0c;后面再使用就不用再请求资源&#xff0c;提高效率 3.怎么使用精…

【web前端性能优化】12.css sprite(图片精灵)-雪碧图实现原理

CSS雪碧 即CSS Sprite&#xff0c;也有人叫它CSS精灵&#xff0c;是一种CSS图像合并技术&#xff0c;该方法是将小图标和背景图像合并到一张图片上&#xff0c;然后利用css的背景定位来显示需要显示的图片部分。 举个应用的实例&#xff1a;这是淘宝网的分类导航实例&#xff…

练习京东顶部导航条、背景、渐变、按钮练习(雪碧图)、渐变

练习 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content&qu…

DaZeng:雪碧图(精灵图)的使用

雪碧&#xff08;精灵&#xff09;图 要求显示效果&#xff1a;&#xff08;轮播图导航栏效果&#xff09; 页面结构&#xff1a; <ul class"list-box"><li></li><li></li><li></li><li></li><li><…

a与雪碧图在导航处的使用

a与雪碧图在导航处的使用 实现效果为鼠标未放上之前为默认颜色&#xff0c;放上之后变成可以选中的红色。 选中前的效果&#xff1a; 选中后的效果&#xff1a; 设置的HTML源代码为&#xff1a; 设置未选中前的CSS代码&#xff1a; 设置选中前的a颜色以及div中的雪碧图类型…

【Unity ShaderGraph使用雪碧图制作导航光效效果】

效果&#xff1a; ShaderGraph的制作&#xff1a; shader中uv数和雪碧图的uv数对上就能出效果。 直接上代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class TurnDirEffectController : …

css超链接样式+雪碧图实现导航

一、CSS链接的四种状态【演示前清除浏览器记录】 1.1 a:link 普通的、未被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.2 a:visited 用户已被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.3 a:hover 鼠标指针位于链接的上方 1.4 a:active 链接被点…

Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 新特性预览

时隔 10 个月&#xff0c;Apache Flink Meetup 又来到了深圳这个与 Flink 契合度很高的城市。正如改革和创新是深圳的标签&#xff0c;Apache Flink 给技术开发者们带来的&#xff0c;也是摒弃旧的 “批处理” 思维&#xff0c;迎接新的 “流批一体” 趋势。那么本次的 Meetup …

JUST技术:利用轨迹拼接分析实时可达区域

如何快速得知从你的位置开始出发&#xff0c;在当前的交通状况下&#xff0c;5分钟之内能够抵达的空间区域范围&#xff1f;当你掏出手机打车时&#xff0c;出租车调度平台应该通知哪些范围的车主进行接单&#xff1f;本文将带来被国际著名数据库和数据挖掘会议DASFAA 2020 &am…