智能小车电机驱动代码电路.docx
- 文档编号:3592134
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:8
- 大小:29.61KB
智能小车电机驱动代码电路.docx
《智能小车电机驱动代码电路.docx》由会员分享,可在线阅读,更多相关《智能小车电机驱动代码电路.docx(8页珍藏版)》请在冰豆网上搜索。
智能小车电机驱动代码电路
驱动两路电机,可以实现电机的正转,反转,开始,停止,左拐,右拐,加速,减速。
代码
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitma1=P2^5;//电机控制位
sbitmb1=P2^4;
sbitpwm1=P2^6;
sbitkey1=P3^0;//减速
sbitkey2=P3^1;//加速
sbitkey3=P3^2;//前进后退
sbitkey4=P3^3;//停止
sbitkey5=P3^4;//左拐
sbitkey6=P3^5;//右拐
sbitma2=P2^2;
sbitmb2=P2^1;
sbitpwm2=P2^3;//占空比控制位
bitflag=0,flag0=0,flag1=0,flag2=0;//电机转动控制标志位。
ucharnum=0;
voiddelay(ucharxms)//简单的延时
{
uinti;
ucharj;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
voidturn_around()//电机转动占空比控制函数
{
pwm1=0;
pwm2=0;
delay(num);
pwm1=1;
pwm2=1;
delay(100-num);
}
voidRotational_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;
}
}
voidturn_left()//电机左转,使两个电机的占空比不同,电机就会有不同的转动模式。
{
pwm1=0;
pwm2=1;
delay(60);
pwm1=1;
pwm2=0;
delay(40);
}
voidturn_right()//电机右转
{
pwm1=0;
pwm2=1;
delay(40);
pwm1=1;
pwm2=0;
delay(60);
}
voidkeyscan()//按键检测部分
{
if(key1==0)
{
delay(5);
if(key1==0)//key1按下后,num++,电机减速。
{
while(!
key1);
num+=20;
if(num>100)
num=100;
flag1=0;
flag2=0;
}
}
if(key2==0)
{
delay(5);
if(key2==0)//key2按下后,num--,电机加速。
{
while(!
key2);
num-=20;
if(num<0)
num=0;
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;//flag1=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。
}
}
}
voidmain()
{
//EA=1;//定时器的控制语句。
//ET0=1;
//TMOD=0X01;
//TH0=-50000/256;
//TL0=-50000%256;
//TR0=1;
while
(1)
{
keyscan();
Rotational_mode();
if(flag1==0&&flag2==0)
{
turn_around();
}
elseif(flag1==1)
{
turn_left();
}
elseif(flag2==1)
{
turn_right();
}
}
}
//voidtimer_0()interrupt1//定时器中断用来控制PWM的输出。
//{
//TH0=-50000/256;
//TL0=-50000%256;
//if(flag==0)//flag用来控制电机的正反转,flag=0时电机正转,否则电机反转。
//{
//ma1=1;
//ma2=1;
//mb1=0;
//mb2=0;
//}
//else
//{
//
//ma1=0;
//ma2=0;
//mb1=1;
//mb2=1;
//}
//pwm1=0;
//pwm2=0;
//delay(num);
//pwm1=1;
//pwm2=1;
//delay(100-num);
//}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 小车 电机 驱动 代码 电路
