个电机转动占空比控制.doc

上传人:工**** 文档编号:559272801 上传时间:2023-06-11 格式:DOC 页数:7 大小:37.51KB
返回 下载 相关 举报
个电机转动占空比控制.doc_第1页
第1页 / 共7页
个电机转动占空比控制.doc_第2页
第2页 / 共7页
个电机转动占空比控制.doc_第3页
第3页 / 共7页
个电机转动占空比控制.doc_第4页
第4页 / 共7页
个电机转动占空比控制.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《个电机转动占空比控制.doc》由会员分享,可在线阅读,更多相关《个电机转动占空比控制.doc(7页珍藏版)》请在金锄头文库上搜索。

1、个电机转动占空比控制看你的程序累. 用PWM因当是用来控制电机的转速的, 也有用来作低速度起动用追问嗯 主要是控制它的速度。对了 你有没有怎么控制的资料 传给我#include #include #include #define uchar unsigned char #define uint unsigned int sbit ma1=P25; /电机控制位sbit mb1=P24;sbit pwm1=P26;sbit key1=P30; /减速sbit key2=P31; /加速sbit key3=P32; /前进后退sbit key4=P33; /停止sbit key5=P34; /左拐

2、sbit key6=P35; /右拐sbit ma2=P22;sbit mb2=P21;sbit pwm2=P23; /占空比控制位bit flag=0,flag0=0,flag1=0,flag2=0; /电机转动控制标志位。uchar num=0;void delay(uchar xms)/简单的延时 uint i; uchar j; for(i=xms;i0;i-) for(j=110;j0;j-);void turn_around() /电机转动占空比控制函数 pwm1=0; pwm2=0; delay(num); pwm1=1; pwm2=1; delay(100-num);void

3、Rotational_mode()/电机转动模式选择 ,正转,反转,停止,开启 if(flag0=0) if(flag=0) /flag用来控制电机的正反转,flag=0时电机正转,否则电机反转。 ma1=1; ma2=1;mb1=0; mb2=0; else ma1=0;ma2=0;mb1=1;mb2=1; else /电机停止控制 ma1=0;ma2=0;mb1=0;mb2=0; void turn_left() /电机左转,使两个电机的占空比不同,电机就会有不同的转动模式。 pwm1=0; pwm2=1; delay(60); pwm1=1; pwm2=0; delay(40); voi

4、d turn_right() /电机右转 pwm1=0; pwm2=1; delay(40); pwm1=1; pwm2=0; delay(60); void keyscan() /按键检测部分 if(key1=0) delay(5);if(key1=0) /key1按下后,num+,电机减速。 while(!key1); num+=20; if(num100) num=100; flag1=0; flag2=0; if(key2=0) delay(5);if(key2=0) /key2按下后,num-,电机加速。 while(!key2); num-=20; if(num0) num=0;

5、flag1=0; flag2=0; if(key3=0) delay(5); if(key3=0) /key3按下后,flag的值发生改变,从而,改变电机的转动放向。 while(!key3); flag=flag;flag1=0; flag2=0; if(key4=0) delay(5);if(key4=0) /key4按下后电机停止工作,再次按下后电机开始工作。 while(!key4); flag0=flag0; flag1=0; flag2=0; if(key5=0) delay(5);/key5按下后电机左转。if(key5=0) while(!key5); flag1=1;/fla

6、g1=1,按左转模式转动。 flag2=0; if(key6=0) delay(5);/key6按下后电机右转。 if(key6=0) while(!key6); flag2=1;flag1=0; /flag2=1,按右转模式转动。然后每次按按完key5和key6后, /要保证flag1,flag2都复位为0,因此每次有键按下后, / 都有flag1,flag2为0。 void main() while(1) keyscan();Rotational_mode();if(flag1=0&flag2=0) turn_around(); else if(flag1=1) turn_left();else if(flag2=1) turn_right();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号