上官c51舵机

#include <REGX52.H>

int cnt = 0;
sbit sg90 = P1^2;
int jd;              
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;

    //_nop_();
    i = 3;
    j = 26;
    k = 223;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void Time_0init()                       //定时器中断初始化
{
    TMOD = 0x01;
    TL0 = 0x66;                //设置定时初始值0.5ms
    TH0 = 0xEA;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
    ET0 = 1;
    EA  = 1;                //进入中断
}
void main()
{ Delay300ms();           //消抖
    Time_0init();         //进入初始化
    
    jd = 1;            //初始转到0°对应0.5ms
    cnt = 0;                        //初始0次
  sg90 = 1;                        //一上电给高电平
  
    
    
    while(1)                    //不断循环转动,在此可以调度数
    {
        jd = 4;    //相当于135°
        cnt = 0;   //归零跳到另一种波形
        Delay2000ms();
        
        jd = 1;    //相当于0°
        cnt = 0;
        Delay2000ms();
    }

}
void Time_0handler() interrupt 1                //(不断传波形信号)
{
    cnt++;
    TL0 = 0x66;                //爆表一次回到初始值
    TH0 = 0xEA;
    if(cnt < jd)      //转过的角度
    {
        sg90 = 1;
        
    }else
        {sg90 = 0;
        }
                                        
    
    if(cnt == 40)            //20ms为舵机一个周期形成一个波形
    {
        cnt = 0;
        sg90 = 1;                //从头开始
        
    }
    

}

原理:

0.5ms————-0度;                                     相当于jd=1
1.0ms————45度;                                    相当于jd=2
1.5ms————90度;                                    相当于jd=3
2.0ms———–135度;                                   相当于jd=4
2.5ms———–180度;                                    相当于jd=5

 

jd原理图:180°一般为20ms   50HZ

单个高低电平组成周期                   高电平为jd作用时期

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值