智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 7545|回复: 15
打印 上一主题 下一主题

舵机控制问题,程序在此,求明白人解答~~

  [复制链接]

4

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
威望
168
贡献
51
兑换币
0
注册时间
2011-8-26
在线时间
7 小时
跳转到指定楼层
1#
发表于 2011-9-25 12:23:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想要输出一个周期为20ms的方波,其中1.5ms高电平,18.5ms低电平,先让舵机能稳定在一个位置不动。
我用的单片机型号是80c52rc,舵机的型号是Futaba s3010。当我使用此程序驱动舵机时,舵机一直向左转
(ps:舵机横向安装,右侧在下,齿轮初始位置在正上方即舵机直立时的左端)
希望大家帮忙看下我的程序,是否哪里出现了问题,或者说程序没问题而是硬件造成的。。。。
先谢过各位,程序如下。

#include"reg52.h"                                               
sbit  pwm = P1^7;
int ncounter=1;
main()
{

        TMOD = 0x01;
        TH0 = 0xFE;                                                         //定时函数,定时0.5ms
        TL0 = 0x13;
        ET0 = 1;
        EA = 1;
        TF0 = 0;
        TR0 = 1;
        while(1)
        ;  
}
void int0()interrupt 1 using 0                                          //中断函数
{
        TH0 = 0xFE;                                                        //重写定时函数
        TL0 = 0x13;
       
        led1=1;
        pwm=1;
        ncounter++;
        if(ncounter<=3)                                                 //3*0.5ms的高电平
        {                                                                          
                pwm=~pwm;       
                led1=~led1;                               
        }                  
        if(ncounter==40)
        {
                ncounter=0;
        }

}

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章在线王奖章推广达人奖章特殊贡献奖章热心会员奖章

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
2#
发表于 2011-9-25 12:51:44 | 只看该作者
#include<reg52.h>
#define uint unsigned int
unsigned char count;
unsigned char jd;
sbit pwm=P2^0;
sbit jia=P3^6;
sbit jian=P3^7;
void delay(uint SB)
{
        uint i,j;
        for(i=SB;i>0;i--)
        for(j=125;j>0;j--);
}
void Time0_Init()
{
        TMOD=0x01;
        IE=0x82;
    TH0=(65536-92)/256;//100us
           TL0=(65536-92)%256;
        TR0=1;
}
void Time0_Int() interrupt 1
{
    TH0=(65536-92)/256;
           TL0=(65536-92)%256;
        if(count<jd)
                pwm=1;
        else
                pwm=0;
        count=(count+1);
        count=count%200;
}
void keyscan()
{
        if(jia==0)
        {
                delay(10);
                if(jia==0)
                {
                        jd++;
                        count=0;
                        if(jd==20)
                        jd=19;
                        while(jia==0);
                }
        }
        if(jian==0)
        {
                delay(10);
                if(jian==0)
                {
                        jd--;
                        count=0;
                        if(jd==2)
                        jd=3;
                        while(jian==0);
                }
        }

}
void main()
{
        jd=11;
        count=0;
        Time0_Init();
        while(1)
        {
                keyscan();
        }
}
回复 支持 反对

使用道具 举报

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章在线王奖章推广达人奖章特殊贡献奖章热心会员奖章

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
3#
发表于 2011-9-25 12:52:10 | 只看该作者
按键控制打角。
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
威望
168
贡献
51
兑换币
0
注册时间
2011-8-26
在线时间
7 小时
4#
 楼主| 发表于 2011-9-25 19:15:04 | 只看该作者
嗯嗯  我再看看,谢谢了!!
回复 支持 反对

使用道具 举报

36

主题

312

帖子

0

精华

会长

Rank: 8Rank: 8

积分
6098

优秀会员奖章活跃会员奖章

QQ
威望
966
贡献
4838
兑换币
13
注册时间
2010-7-24
在线时间
147 小时
5#
发表于 2011-9-26 01:35:38 | 只看该作者
3楼的程序不错~~
回复 支持 反对

使用道具 举报

3

主题

99

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2001

优秀会员奖章活跃会员奖章

威望
463
贡献
1418
兑换币
2
注册时间
2011-10-4
在线时间
60 小时
6#
发表于 2011-10-6 21:52:15 | 只看该作者
理论上3楼的程序应该好使
回复 支持 反对

使用道具 举报

10

主题

149

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1657
QQ
威望
959
贡献
408
兑换币
228
注册时间
2011-9-20
在线时间
145 小时
7#
发表于 2012-2-15 10:32:28 | 只看该作者
这个好
回复 支持 反对

使用道具 举报

2

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
932
威望
572
贡献
156
兑换币
0
注册时间
2012-2-18
在线时间
102 小时
8#
发表于 2012-3-4 17:55:11 | 只看该作者
YOON 发表于 2011-9-25 12:51
#include
#define uint unsigned int
unsigned char count;

   前辈,能给一组    单片机s12xs128mal    舵机 s-d6    的舵机控制程序么,希望能带带新手!

回复 支持 反对

使用道具 举报

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

优秀会员奖章活跃会员奖章论坛元老奖章资源大师奖章在线王奖章推广达人奖章特殊贡献奖章热心会员奖章

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
9#
发表于 2012-3-4 18:24:53 | 只看该作者
自己看看S12的PWM模块,这个模块是最简单的。对应舵机设置一下就可以了。
回复 支持 反对

使用道具 举报

2

主题

36

帖子

0

精华

高级会员

Rank: 4

积分
932
威望
572
贡献
156
兑换币
0
注册时间
2012-2-18
在线时间
102 小时
10#
发表于 2012-3-5 20:27:46 | 只看该作者
YOON 发表于 2012-3-4 18:24
自己看看S12的PWM模块,这个模块是最简单的。对应舵机设置一下就可以了。

      我没接触过pwm模块,你给我一段程序我也看不懂,我看些书或许能看懂,但是要编出程序来,还是挺难得!希望前辈能帮忙编一段适合的s12舵机控制程序,我现在正在看S12脉宽调制模块及其应用实例
希望能多看懂一些,还是希望您能编一小段给我,最好写上解释,我怕我看不懂!真心求帮忙!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 23:12 , Processed in 0.053316 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表