智能车制作

标题: 舵机控制问题,程序在此,求明白人解答~~ [打印本页]

作者: 马路    时间: 2011-9-25 12:23
标题: 舵机控制问题,程序在此,求明白人解答~~
我想要输出一个周期为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;
        }

}
作者: YOON    时间: 2011-9-25 12:51
#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();
        }
}
作者: YOON    时间: 2011-9-25 12:52
按键控制打角。
作者: 马路    时间: 2011-9-25 19:15
嗯嗯  我再看看,谢谢了!!
作者: kerrys    时间: 2011-9-26 01:35
3楼的程序不错~~
作者: 海驹    时间: 2011-10-6 21:52
理论上3楼的程序应该好使
作者: 炒冰棍    时间: 2012-2-15 10:32
这个好
作者: 0蓝色精灵0    时间: 2012-3-4 17:55
YOON 发表于 2011-9-25 12:51
#include
#define uint unsigned int
unsigned char count;

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


作者: YOON    时间: 2012-3-4 18:24
自己看看S12的PWM模块,这个模块是最简单的。对应舵机设置一下就可以了。
作者: 0蓝色精灵0    时间: 2012-3-5 20:27
YOON 发表于 2012-3-4 18:24
自己看看S12的PWM模块,这个模块是最简单的。对应舵机设置一下就可以了。

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

作者: YOON    时间: 2012-3-5 22:21
给你一份资料吧,先看看能不能帮到你。[attach]19192[/attach]搞懂怎么初始化设置先。不用那么客气的,呵呵,我才大二,用“您”担当不起啊,我也还在学习。

作者: 0蓝色精灵0    时间: 2012-4-9 13:21
YOON 发表于 2012-3-5 22:21
给你一份资料吧,先看看能不能帮到你。搞懂怎么初始化设置先。不用那么客气的,呵呵,我才大二,用“您”担 ...

PWMCLK=0XFF
PWMPRCLK=0X77  为什么是总线时钟/128    0X是十六进制?怎么算出来的?
PWMSCLA=0    /*clockSA=ClockA/512*/  看不懂,求解释!

作者: 0蓝色精灵0    时间: 2012-4-9 17:40
本帖最后由 0蓝色精灵0 于 2012-4-9 17:47 编辑
YOON 发表于 2012-3-5 22:21
给你一份资料吧,先看看能不能帮到你。搞懂怎么初始化设置先。不用那么客气的,呵呵,我才大二,用“您”担 ...

CAE[7:0]=1,采用中间对齐模式
而下面却是
PWMCAE=0XFF;   /*输出时是中间对齐模式*/
这是怎么看   ?FF代表什么
PWMPRCLK=0X77    77又代表什么?
希望指点啊





作者: 陈永胜    时间: 2012-5-13 23:54
YOON 发表于 2011-9-25 12:52
按键控制打角。

问一下,我的舵机在直道的时候走S,怎么回事啊……可不可以给我一段舵机控制的问题啊[url=mailto:……sdcys@qq.com]……sdcys@qq.com[/url]
作者: 反对幂指三    时间: 2012-6-2 10:52
看起来应该不错!
作者: HHHvictor    时间: 2012-11-9 21:33
YOON 发表于 2012-3-5 22:21
给你一份资料吧,先看看能不能帮到你。搞懂怎么初始化设置先。不用那么客气的,呵呵,我才大二,用“您”担 ...

请问对于楼主的问题,用xs128如何编写主函数呢??下载到车里会有什么反映





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2