大学生电子设计竞赛
直播中

龚明

7年用户 82经验值
擅长:嵌入式技术 MEMS/传感技术
私信 关注
[问答]

舵机SG90

` 本帖最后由 街甪丶的祝福 于 2017-8-7 16:12 编辑

有没有哪位大佬,会搞SG90,如果有51控制程序或者51改变舵机方向的程序,能否发一个给我,谢谢!!!
这种舵机,没有人搞过吗?
`
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

回帖(6)

袁香江

2017-8-8 10:48:56
没搞过
举报

范呈祥

2017-8-8 11:16:08
没搞过啊。。。
举报

刘军

2017-10-8 15:50:12
我搞过比较成功用在不同场合!
举报

小伙子你很皮哦

2018-7-18 16:14:44
#include
#define uint unsigned int        
#define uchar unsigned char

***it P1_0=P1^0;                         //PWM信号输出端                
void Init_t0(void);                        //子函数声明               
void main()  
{        
        P1_0=0;                                 //置PWM初始输出为高电平                       
        Init_t0();
        while(1);                                 //等待中断
}

void Init_t0(void)
{   
        TMOD=0x01;                  //设置定时器0工作方式1后面运行TR位启动
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;         //1.5ms 的高电平
        EA=1;
        ET0=1;
        TR0=1;        
}

/*******************中断服务程序**********************/  

void PWM0() interrupt 1         //定时器0中断,产生方波
{  
        if(P1_0==1)                         //如果上个电平为1,则下个低电平的时间为18.5ms
        {  
                TH0=(65536-18500)/256;                 //试过t1=1500;t0=20000-t1;但舵机老是吱吱的响,推测:运算耗时.
                TL0=(65536-18500)%256;
        }
        else                                         //如果上个电平为0,则下个高电平为1.5ms
        {
                TH0=(65536-1780)/256;
                TL0=(65536-1780)%256;
        }
        P1_0=~P1_0;
}



举报

小伙子你很皮哦

2018-7-18 16:15:55
#include
#define uint unsigned int        
#define uchar unsigned char

***it P1_0=P1^0;                         //PWM信号输出端                
void Init_t0(void);                        //子函数声明               
void main()  
{        
        P1_0=0;                                 //置PWM初始输出为高电平                       
        Init_t0();
        while(1);                                 //等待中断
}

void Init_t0(void)
{   
        TMOD=0x01;                  //设置定时器0工作方式1后面运行TR位启动
        TH0=(65536-500)/256;
        TL0=(65536-500)%256;         //1.5ms 的高电平
        EA=1;
        ET0=1;
        TR0=1;        
}

/*******************中断服务程序**********************/  

void PWM0() interrupt 1         //定时器0中断,产生方波
{  
        if(P1_0==1)                         //如果上个电平为1,则下个低电平的时间为18.5ms
        {  
                TH0=(65536-18500)/256;                 //试过t1=1500;t0=20000-t1;但舵机老是吱吱的响,推测:运算耗时.
                TL0=(65536-18500)%256;
        }
        else                                         //如果上个电平为0,则下个高电平为1.5ms
        {
                TH0=(65536-1780)/256;
                TL0=(65536-1780)%256;
        }
        P1_0=~P1_0;
}



举报

黎上遥

2018-7-21 18:17:13
引用: 赤发鬼李逵 发表于 2017-10-8 15:50
我搞过比较成功用在不同场合!

望大佬留下点资料给我们后辈学习参考
举报

更多回帖

发帖
×
20
完善资料,
赚取积分