智能车制作

标题: 51单片机io口能直接带动futabas3010舵机吗? [打印本页]

作者: dennisi123    时间: 2011-9-26 14:24
标题: 51单片机io口能直接带动futabas3010舵机吗?
51单片机io口能直接带动futabas3010舵机吗?  我是新手 请多多指教! 这是我的pwm程序 接上舵机后总是响,但不转, 大家看看哪块有问题?谢了!
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num=0;
uchar ZKB = 10;
sbit dj=P1^0;
//sbit vcc = P1^1;
//sbit gnd = P1^0;
sbit KEY=P1^5;
void delay(uint z)
{
  uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void main()
{
// ZKB=30;
TMOD=0x01;  //工作模式1
TH0=(65536-10)/256;
TL0=(65536-10)%256;
IE=0x82;
TR0=1;
// vcc = 1;
// gnd = 0;
while(1)
{
   if(KEY==0)
  {
    delay(5);
   if(KEY==0)
   {
     ZKB=ZKB+1;
    while(!KEY);
   }
   
  }
  if(ZKB>20)
  ZKB=15;
}   
}
void T0_time()interrupt 1
{
TH0=(65536-10)/256;//定时器计时0.01ms
TL0=(65536-10)%256;
num++;
if(num>=200) //设置周期20ms
num=0;
if(num<ZKB)
dj=1;     
else
dj=0;
   
}
作者: jack_channel    时间: 2011-9-26 15:37
可以的~你那个周期不对吧?0.01ms×200=20ms??你怎么算的?
用定时器产生模拟PWM信号
PWM其实就是特定频率的方波,用IO口可以模拟的
还有你是想用按键控制舵机打角吧??
作者: YOON    时间: 2011-9-27 09:22
#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();
        }
}




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