当前位置: 首页 > news >正文

11.舵机控制

jd就是cnt,分别对应着

        0.5ms-------------0度;   1 
        1.0ms------------45度;  2
        1.5ms------------90度;  3
        2.0ms-----------135度; 4
        2.5ms-----------180度; 5

并且软件PWM是不稳定的,所以前面要用软件延时稳定一下

#include "reg52.h"sbit sg90_con = P1^1;
int jd;
int cnt = 0;void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void Time0Init()
{//1. 配置定时器0工作模式位16位计时TMOD = 0x01;//2. 给初值,定一个0.5ms出来TL0=0x33;TH0=0xFE;//3. 开始计时TR0 = 1;TF0 = 0;//4. 打开定时器0中断ET0 = 1;//5. 打开总中断EAEA = 1;
}void Delay300ms()		//@11.0592MHz
{unsigned char i, j, k;i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);
}void main()
{Delay300ms();//让硬件稳定一下Time0Init(); //初始化定时器jd = 1;      //初始角度是0度,0.5ms,溢出1就是0.5,高电平cnt = 0;sg90_con = 1;//一开始从高电平开始//每隔两秒切换一次角度while(1){jd = 3; //90度 1.5ms高电平cnt = 0;Delay2000ms();jd = 1; //0度cnt = 0;Delay2000ms();}
}void Time0Handler() interrupt 1
{cnt++;  //统计爆表的次数. cnt=1的时候,报表了1//重新给初值TL0=0x33;TH0=0xFE;//控制PWM波if(cnt < jd){sg90_con = 1;}else{sg90_con = 0;}if(cnt == 40){//爆表40次,经过了20mscnt = 0;  //当40次表示20ms,重新让cnt从0开始,计算下一次的20mssg90_con = 1;}}


http://www.mrgr.cn/news/14830.html

相关文章:

  • Gitlab迁移到新的服务器后点击Integrations报500错误的解决方法
  • 第8章 Android数据存储与I/O
  • 【C#】【EXCEL】Bumblebee/Classes/ExWorksheet.cs
  • 【附源码】Python :三棱锥建模
  • IO进程线程 0828作业
  • Threejs之WebGLRenderer渲染器
  • InstantID: Zero-shot Identity-Preserving Generation in Seconds
  • 【leetcode】C++_string 917.仅仅反转字母
  • PyTest测试框架学习日记
  • 【SQL】关注者数量
  • 单片机的主流编程语言是什么
  • 学习大数据DAY43 Sqoop 安装,配置环境和使用
  • Leetcode 216.组合总和Ⅲ 回溯+剪枝 C++实现
  • k8s集群环境搭建(一主二从--kubeadm安装)
  • 分享5款支持论文写作网站先稿后付的网站!
  • [000-01-001].第04节:Shell中的内置命令
  • Android架构组件:MVVM模式的实战应用与数据绑定技巧
  • Pytest项目搭建总结
  • WireShark网络分析~环境搭建
  • 【C++ | 设计模式】工厂方法模式的详解与实现