【51单片机STC89C52】IO口模拟PWM控制SG90舵机
一、PWM
PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通 过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的 时间占据整个信号周期的百分比,例如方波的占空比就是50%.
占空比 : 一个周期内,高电平占据时长的百分比
STC89C52没有集成PWM功能,可以通过IO口软件模拟,相对硬件PWM来说精准度略差
二、关于舵机控制原理
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。
以180度角度伺服为例,那么对应的控制关系是这样的:
三、编程实现
初始化定时器0
void Timer0Init(void) //500微秒@11.0592MHz
{//AUXR &= 0x7F; TMOD &= 0xF0; //设置定时器模式16位TMOD |= 0x01; //设置定时器模式TL0 = 0x33; //设置定时初始值0.5msTH0 = 0xFE; //设置定时初始值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时ET0 = 1; //打开定时器0中断EA = 1; //打开总中断EA
}
定时器0中断服务函数
void Time0Handler() interrupt 1
{cnt++; //统计溢出的次数//重新给初值TL0 = 0x33;TH0 = 0xFE;//控制PWM波if(cnt < angle){sg90_con = 1;}else{sg90_con = 0;}if(cnt == 40){ //当溢出40次,经过了20mscnt = 0; sg90_con = 1;}
}
整体代码
#include "reg52.h"
#include "intrins.h"sbit sg90_con = P1^1;
int angle;
int cnt = 0;void Delay2000ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void Delay300ms() //@11.0592MHz
{unsigned char i, j, k;i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);
}void Timer0Init(void) //500微秒@11.0592MHz
{//AUXR &= 0x7F; TMOD &= 0xF0; //设置定时器模式16位TMOD |= 0x01; //设置定时器模式TL0 = 0x33; //设置定时初始值0.5msTH0 = 0xFE; //设置定时初始值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时ET0 = 1; //打开定时器0中断EA = 1; //打开总中断EA
}void main()
{Delay300ms();//让硬件稳定一下Timer0Init(); //初始化定时器angle = 1; //初始角度是0度,0.5ms,溢出1就是0.5,高电平cnt = 0;sg90_con = 1;//一开始从高电平开始//每隔两秒切换一次角度while(1){angle = 3; //90度 1.5ms高电平cnt = 0;Delay2000ms();angle = 1; //0度cnt = 0;Delay2000ms();}
}void Time0Handler() interrupt 1
{cnt++; //统计溢出的次数//重新给初值TL0 = 0x33;TH0 = 0xFE;//控制PWM波if(cnt < angle){sg90_con = 1;}else{sg90_con = 0;}if(cnt == 40){ //当溢出40次,经过了20mscnt = 0; sg90_con = 1;}
}
更多舵机控制请点击【51单片机STC89C52】舵机控制综合篇
【51单片机STC89C52】IO口模拟PWM控制SG90舵机相关推荐
- 使用IO口模拟PWM设计呼吸灯
<<<<<正文>>>>> <硬件设计> 控制灯的IO口接芯片即可: <软件架构> <软件设计> 我的呼吸 ...
- 51单片机扩展io口实验c语言,【51单片机】普通I/O口模拟SPI口C语言程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...
- 51单片机的io口可不可以接gnd_纯干货!简析单片机中的高阻态
在我们刚一开始接触到51单片机的时候对P0口必须加上上拉电阻,否则P0就是高阻态. 对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解.高阻态 高阻态这是一个数字电路里常 ...
- 51单片机之IO口扩展——74HC165芯片并行转串行实验
我们都知道通信从大的方面有两种:串行和并行.串行的最大优点是占用总线少,但是传输速率低:并行恰恰相反,占用总线多,传输速率高.市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来 ...
- 51单片机之IO口扩展——74HC595芯片串行转并行实验
我们都知道通信从大的方面有两种:串行和并行.串行的最大优点是占用总线少,但是传输速率低:并行恰恰相反,占用总线多,传输速率高.市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来 ...
- 基于51单片机STC89C52RC的直流电机软件PWM控制的基本原理
电机驱动芯片L293D介绍: 在这里直流电机的控制采用L293D芯片.L293D是一款单片集成的高电压.高电流.4通道电机驱动,设计用于连接标准DTL或TTL逻辑电平,驱动电感负载(诸如继电线圈.DC ...
- 51单片机的IO口和寄存器
当我们拿到一块单片机时,我们首先看到的是他的外观,就像下边这样的: 当然对于51单片机来说,最常用的还是第一种样式的,这种叫做PDIP封装.在单片机上有很多小针(管脚),这些就是单片机用来输出数据,控 ...
- 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)
+ 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...
- 51单片机扩展io口C语言编写,51单片机扩展IO口后扩展口的地址如何确定
1. 然后它说8255的A口.B口.C口.控制寄存器的地址分别为7FFCH.7FFDH.7FFEH.7FFFH.这个是怎么算出来的? 高八位7F是因为p2.7为0是选通8255的cs片选端,第八位是F ...
最新文章
- Brocade NOS学习笔记(第一章——第三章)
- 音频放大电路_低音升压功率放大器电子电路的完整设计
- 手里有200万,如何理财?
- python使用级数pi的近似值_JavaScript与Python计算pi的近似值运行时间对比
- 自己动手写CPU之第五阶段(1)——流水线数据相关问题
- 端口 0-65536 TCP和UDP端口的区别
- c语言数组用户注册登入管理系统_[内附完整源码和文档] 基于JAVA的干部档案管理系统...
- c语言大地坐标转空间直角坐标,大地坐标转换直角坐标的C++代码(高斯克吕格投影)...
- 数字通信技术知识点一
- linux系统下用python写入数据到excel行数限制解决方案(限制1048576行)
- 计算机中的数学【费马大定理】 数学史上最著名的定理: x^n + y^n = z^n(n 2时,没有正整数解)...
- 【翻译】MED 3D: TRANSFER LEARNING FOR 3D MEDICAL I MAGE ANALYSIS
- Python爬虫:js的btoa和atob和pythonBase64编码解码比对分析
- MPFC++ wrapper by Pavel
- 试题 算法训练 藏匿的刺客
- 如何改变alert的默认样式
- Python3 通过 suds 访问 webservice
- 播放视频出现错误代码0xc00d36c4如何修复?
- 时间片(time-slicing)轮循调度(round-robin scheduling)
- 小鸟云:浅谈5 种典型的云原生架构反模式
热门文章
- 关于在simulink中使用s-function后出现State derivatives returned by S-function during flag=1 call must be a rea
- 大数据早报:Google向化学家开放量子计算机 科学家将机器学习技术用于地震预测(10.25)
- Python学习:魔法函数
- 腾讯企业邮箱 python 发送邮件样例(一)
- 计算机论文答辩难不难,计算机专业毕业论文答辩的几个问题
- excel数据分类汇总
- BGL自定义权重,求dijkstra
- 【微信小程序教程】点击按钮修改文字大小
- 支付宝当面付扫码支付接口开发
- 给儿童使用护眼台灯怎么样选择更好?专家建议孩子买台灯