如何用单片机控制多个舵机?

[复制链接]
4905|8
 楼主| lydzzhx 发表于 2008-10-28 17:23 | 显示全部楼层 |阅读模式
打算用20个舵机做个双足机器人 可不知道用什么芯片可以对多个舵机进行PWM脉宽并行发送 MCU+8253 可能会用到太多的8253 用MCU+CPLD CPLD器件不好找PCB加工困难 希望论坛的的兄弟给个最佳方案   
腾时代 发表于 2008-10-28 17:25 | 显示全部楼层

回复主题:如何用单片机控制多个舵机?

回复主题:如何用单片机控制多个舵机? 
回复主题:如何用单片机控制多个舵机? 
回复主题:如何用单片机控制多个舵机? 
回复主题:如何用单片机控制多个舵机? 
@@Steven 发表于 2010-9-7 17:40 | 显示全部楼层
用舵机控制板应该可以实现
ar_dong 发表于 2010-9-8 08:59 | 显示全部楼层
还是用cpld吧
我用单片机定时器控制一个都不理想
icecut 发表于 2010-9-8 09:12 | 显示全部楼层
用硬件pwm.或者一堆单片机.
其实来个arm也不错.关键是你频率有多高..
不倒翁0312 发表于 2013-4-8 18:48 | 显示全部楼层
icecut 发表于 2010-9-8 09:12
用硬件pwm.或者一堆单片机.
其实来个arm也不错.关键是你频率有多高..

怎样用硬件生成PWM信号?
不倒翁0312 发表于 2013-4-8 18:51 | 显示全部楼层
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define zhouqi 2180
uchar order;
uint PWM[8]={1308,1308,1308,1308,1308,1308,1308,1308};
void initPWM();

void main()
{
       initPWM();
       P1=-PWM[0]/256;
       P2=-PWM[0]%256;
       while(1);
}
void t0() interrupt 1
{
       switch(order)
       {
              case 1:    P0=0x01;
                            TH0=-PWM[0]/256;
                            TL0=-PWM[0]%256;
                            break;
              case 2:    P0=0x00;
                            TH0=-(zhouqi-PWM[0])/256;
                            TL0=-(zhouqi-PWM[0])%256;
                            break;
              case 3:    P0=0x02;
                            TH0=-PWM[1]/256;
                            TL0=-PWM[1]%256;
                            break;
              case 4:    P0=0x00;
                            TH0=-(zhouqi-PWM[1])/256;
                            TL0=-(zhouqi-PWM[1])%256;
                            break;
              case 5:    P0=0x04;
                            TH0=-PWM[2]/256;
                            TL0=-PWM[2]%256;
                            break;
              case 6:    P0=0x00;
                            TH0=-(zhouqi-PWM[2])/256;
                            TL0=-(zhouqi-PWM[2])%256;
                            break;
              case 7:    P0=0x08;
                            TH0=-PWM[3]/256;
                            TL0=-PWM[3]%256;
                            break;
              case 8:    P0=0x00;
                            TH0=-(zhouqi-PWM[3])/256;
                            TL0=-(zhouqi-PWM[3])%256;
                            break;
              case 9:    P0=0x10;
                            TH0=-PWM[4]/256;
                            TL0=-PWM[4]%256;
                            break;
              case 10:P0=0x00;
                            TH0=-(zhouqi-PWM[4])/256;
                            TL0=-(zhouqi-PWM[4])%256;
                            break;
              case 11:P0=0x20;
                            TH0=-PWM[5]/256;
                            TL0=-PWM[5]%256;
                            break;
              case 12:P0=0x00;
                            TH0=-(zhouqi-PWM[5])/256;
                            TL0=-(zhouqi-PWM[5])%256;
                            break;
              case 13:P0=0x40;
                            TH0=-PWM[6]/256;
                            TL0=-PWM[6]%256;
                            break;
              case 14:P0=0x00;
                            TH0=-(zhouqi-PWM[6])/256;
                            TL0=-(zhouqi-PWM[6])%256;
                            break;
              case 15:P0=0x80;
                            TH0=-PWM[7]/256;
                            TL0=-PWM[7]%256;
                            break;
              case 16:P0=0x00;
                            TH0=-(zhouqi-PWM[7])/256;
                            TL0=-(zhouqi-PWM[7])%256;
                            order=0;
                            break;
              default:order=0;
       }
       order++;
}

void initPWM()
{
       order=1;
       TMOD=0X11;
       TH0=(65536-1500)/256;
       TL0=(65536-1500)%256;
       EA=1;
       TR0=1;
       ET0=1;
}
我自己的程序,简单看看。顺便再提提建议。
icecut 发表于 2013-4-9 09:41 | 显示全部楼层
8051不支持硬件pwm,avr,arm都支持
123654789 发表于 2013-4-9 10:03 | 显示全部楼层
STC12C5204PWM支持硬件PWM
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

100

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部