智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3606|回复: 2
打印 上一主题 下一主题

51单片机io口能直接带动futabas3010舵机吗?

[复制链接]

8

主题

196

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1860

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

QQ
威望
1129
贡献
401
兑换币
251
注册时间
2010-12-29
在线时间
165 小时
跳转到指定楼层
1#
发表于 2011-9-26 14:24:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
   
}

137

主题

2197

帖子

1

精华

知名人物

广州穗佳电子科技有限公司飞思卡尔专业店

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
23283

特殊贡献奖章资源大师奖章优秀版主奖章热心会员奖章论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章论坛骨干奖章

QQ
威望
6807
贡献
12964
兑换币
9459
注册时间
2011-6-24
在线时间
1756 小时
2#
发表于 2011-9-26 15:37:56 | 只看该作者
可以的~你那个周期不对吧?0.01ms×200=20ms??你怎么算的?
用定时器产生模拟PWM信号
PWM其实就是特定频率的方波,用IO口可以模拟的
还有你是想用按键控制舵机打角吧??
回复 支持 反对

使用道具 举报

39

主题

659

帖子

0

精华

跨届大侠

绝对零度

Rank: 10Rank: 10Rank: 10

积分
9046

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

QQ
威望
2939
贡献
3875
兑换币
708
注册时间
2011-7-22
在线时间
1116 小时
3#
发表于 2011-9-27 09:22:48 | 只看该作者
#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();
        }
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-14 17:39 , Processed in 0.042572 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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