单片机控制舵机程序.doc_第1页
单片机控制舵机程序.doc_第2页
单片机控制舵机程序.doc_第3页
单片机控制舵机程序.doc_第4页
单片机控制舵机程序.doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#define uchar unsigned char#define uint unsigned intsbit IN1=P00;sbit IN2=P01;sbit EA1=P05;sbit dj=P07; /舵机口uint t=0;/中断次数uchar zk;/高电平中断次数uchar p=0;/定义pwm占空比void delay(uint z) uint i,j; for(i=0;iz;i+) for(j=0;j8;/100us一次中断 TL0=-100%256;if(t=0)zk=p; if(t=zk) dj=0; t+; if(t=200) t=0;/20mspwm周期 void turn_left() IN1=1;IN2=0;EA1=1;/电机工作 p=5;/0.5ms delay(600); void turn_right() IN1=1;IN2=0;EA1=1;/电机工作 p=25;/2.5ms delay(600); void main() TMOD=0x01;/定时器0工作在方式1 TH0=-1008; TL0=-100%256; ET0=1;/开中断 EA=1;/开总中断 TR0=1;/定时器0启动while(1)turn_left();turn_right(); 一般的航模舵机的标准脉宽是1000us到2000us,不是500us和2500us这一说法是机器人舵机传出来的,但实际是有不少舵机只认1000us到2000us的,只有那些标明是机器人舵机的舵机,才认500和2500,其它的要看人品! 伺服电机主要参数性能参数:工作电压:4.8V6V电流:10 mA(静态)力矩:3kg/cm外型尺寸:414220 mm重量:48g转动角度: 60度 60度*3个引脚功能如下:黑色: GND 地线红色: 5V电源线黄色: 控制信号* K1 归中(0度位置) * K2 逆时针转动到极限位置(-60度) * K3 顺时针转动到极限位置(+60度) */#include sbitout = P10;/舵机信号线sbitK1= P14;sbitK2= P15;sbitK3= P16;char code reserve3_at_ 0x3b; /保留0x3b开始的3个字节/*us延时子函数 (500us)*/void delayus(unsigned char x)unsigned char i;while (x-)for (i = 0; i 58; i+);/*归中子函数 (0度)*/voidProg0(void) unsigned char m; for(m=0; m30; m+) out = 1; delayus(3); /延时1.5ms out = 0; delayus(37);/延时18.5ms /*逆时针转动子函数1ms*/voidProg1(void) unsigned char m; for(m=0; m40; m+) out = 1; /延时1ms delayus(2); out = 0; delayus(38);/延时19ms /*顺时针转动子函数 2ms*/voidProg2(void) unsigned char m; for(m=0; m40; m+) out = 1; delayus(4); /延时2ms out = 0; delayus(36);/延时18ms /*主函数*/voidmain(void) P1 = 0xf0; Prog0(); /0度位置 while(1) if(K1 = 0) delayus(40); /延时20ms if(K1 = 0) Prog0(); /返回0度位置 else if(K2 = 0) delayus(40); /延时20ms if(K2 = 0) Prog1(); /逆时针转动 else if(K3 = 0) delayus(40); /延时20ms if(K3 = 0) Prog2(); /顺时针转动 /*/舵机速度控制舵机的速度跟电位器的角度有关,比如说同样100K的电位器,120度与85度的相比,85度的在相同的控制角度下,电压变化要大一些,因些舵机的速度与角度都会大一些,快一些。电位器的中间值(如100K的电位器在50K位置上)就是舵机的中心。在软件上,你可以跟据舵机的总角度与选用的(TX上)电位器的角度来设定步长,一般电位器用85度与120度两个,一个是油门,一个是方向(针对车模)。舵机的脉冲范围一般是700-1500-1900uS,1500是中心。L293D驱动直流电机转速控制原程序:#include#define uint unsigned int#define uchar unsigned charsbit P2_0=P20;sbit P0_0=P00;sbit P0_1=P01;long a=355;bit flag=1;void int0()interrupt 0a+=3000;if(a=65535)a=65534;void int1()interrupt 2a-=3000; if(a0)a=0;void time0_server_(void)interrupt 1if(flag=1) P2_0=0; P0_0=1; P0_1=1; TH0=65535-(65535-a)/256); TL0=65535-(65535-a)%256);if(flag=0) P2_0=1; P0_0=1; P0_1=1; TH0=(65535-a)/256; TL0=(65535-a)%256;flag=flag;void Init_t0(void)TMOD=0X01;TH0=(65535-a)/256;TL0=(65535-a)%256;ET0=1;TR0=1;EX0=1;IT0=1;EX1=1;IT1=1;EA=1;void main(void)P2_0=1;P0_0=1;P0_1=1;Init_t0();while(1);点击查看视频教程:/player.php/sid/XODk3MTU4MjA=/v.swf驱动电路图 本例程利用2051的T0产生双路PWM信号,推动L293D或L298N为直流电机调速,程序已通过调试。接L298N时相应的管脚上最好接上10K的上拉电阻。 有什么不对的地方欢迎大家批评指正! /* =直流电机的PWM速度控制程序= */ /* 纬东工作室 2006年6月 */ /* 晶振采用11.0592M,产生的PWM的频率约为91Hz */ #include #include #define uchar unsigned char #define uint unsigned int sbit en1=P10; /* L298的Enable A */ 批sbit en2=P11; /* L298的Enable B */ sbit s1=P12; /* L298的Input 1 */ sbit s2=P13; /* L298的Input 2 */ sbit s3=P14; /* L298的Input 3 */ sbit s4=P15; /* L298的Input 4 */ uchar t=0; /* 中断计数器 */ uchar m1=0; /* 电机1速度值 */ uchar m2=0; /* 电机2速度值 */ uchar tmp1,tmp2; /* 电机当前速度值 */ /* 电机控制函数 index-电机号(1,2); speed-电机速度(-100100) */ void motor(uchar index, char speed) if(speed=-100 & speed=100) if(index=1) /* 电机1的处理 */ m1=abs(speed); /* 取速度的绝对值 */ if(speed0) /* 速度值为负则反转 */ s1=0; s2=1; else /* 不为负数则正转 */ s1=1; s2=0; if(index=2) /* 电机2的处理 */ m2=abs(speed); /* 电机2的速度控制 */ if(speed0;j-); void main() uchar i; TMOD=0x02; /* 设定T0的工作模式为2 */ TH0=0x9B; /* 装入定时器的初值 */ TL0=0x9B; EA=1; /* 开中断 */ ET0=1; /* 定时器0允许中断 */ TR0=1; /* 启动定时器0 */ while(1) /* 电机实际控制演示 */ for(i=0;i0;i-) /* 正转减速 */ motor(1,i); motor(2,i); delay(5000); for(i=0;i0;i-) /* 反转减速 */ motor(1,-i); motor(2,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论