初级会员
- 积分
- 138
- 金钱
- 138
- 注册时间
- 2015-12-30
- 在线时间
- 37 小时
|
发表于 2016-3-8 00:56:59
|
显示全部楼层
[mw_shl_code=c,true]#include "reg52.h"
sbit Moto_RA=P1^6;
sbit Moto_RB=P1^5;
sbit Moto_LA=P1^4;
sbit Moto_LB=P1^3; //左右电机驱动
/***********************************
*函数名称:void Delay(unsigned char num)
*函数功能:延时
*参数说明:num 延时时间 数值最大255
*返回说明:无
*其它说明:不精准延时
***********************************/
void Delay(unsigned char num)
{
unsigned int temp=0;
while(num--)
{
temp=2000;
while(temp--);
}
}
/***********************************
*函数名称:void Car_Run(unsigned char dire)
*函数功能:行进方向控制
*参数说明:dire 方向 0:停止 1:前 2:后 3:左 4:右
*返回说明:无
*其它说明:左右方向为原地转弯 【若想前进中和后退中转弯 需要与调速函数配合 使两个车轮转速不同】
***********************************/
void Car_Run(unsigned char dire)
{
switch (dire)
{
case 0: //停止
{
Moto_RA=0;
Moto_RB=0;
Moto_LA=0;
Moto_LB=0;
}break;
case 1: //前进
{
Moto_RA=1;
Moto_RB=0;
Moto_LA=1;
Moto_LB=0;
}break;
case 2: //后退
{
Moto_RA=0;
Moto_RB=1;
Moto_LA=0;
Moto_LB=1;
}break;
case 3: //左转
{
Moto_RA=1;
Moto_RB=0;
Moto_LA=0;
Moto_LB=1;
}break;
case 4: //右转
{
Moto_RA=0;
Moto_RB=1;
Moto_LA=1;
Moto_LB=0;
}break;
default:break;
}
}
/***********************************
*函数名称:void main(void)
*函数功能:程序入口
*参数说明:无
*返回说明:无
*其它说明:main函数有且只有一个
***********************************/
void main(void)
{
while(1)
{
Car_Run(1); //前进
Delay(20);
Car_Run(2); //后退
Delay(20);
Car_Run(3); //左转
Delay(20);
Car_Run(4); //右转
Delay(20);
Car_Run(0); //停止
Delay(20);
}
}[/mw_shl_code]
补充内容 (2016-5-15 13:38):
#include<reg52.h>
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit ENA=P1^3;
void delay(unsigned int z);
void delay_us(unsigned int aa);
void main()
{
while(1)
{
unsigned int i,cycle=0,T=2048;
IN1=1; /...
补充内容 (2016-5-15 13:40):
IN2=0;
for(i=0;i<1000;i++)
{
delay(10); //PWM占空比为50%,修改延时调整PWM脉冲
ENA=~ENA;
}
IN1=0; //反转
IN2=1;
for(i=0;i<1000;i++)
{
delay(20); //PWM占空比为50%,修改延时调...
补充内容 (2016-5-15 13:40):
ENA=~ENA;
}
IN1=1; //自动加速正转
IN2=0;
while(cycle!=T);
{
ENA=1;
delay_us(cycle++);
ENA=0;
delay_us(T-cycle);
}
IN1=0; //自动减速反转
IN2=1;
while...
补充内容 (2016-5-15 13:41):
while(cycle!=T);
{
ENA=1;
delay_us(cycle++);
ENA=0;
delay_us(T-cycle);
}
}
}
补充内容 (2016-5-15 13:42):
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay_us(unsigned int aa)
{
while(aa--);
} |
|