文档库 最新最全的文档下载
当前位置:文档库 › 小车测试程序

小车测试程序

/******************************************
华北电力大学机器人创新俱乐部第二版小车
测试程序 1.0
******************************************/

/*****************************************
小车驱动模块说明

1、12V接电机驱动电源,驱动电机
2、5V接单片机电源,驱动驱动电路的逻辑芯片
3、ENA使能A电机
4、ENB使能B电机
5、IN1,IN2为A电机控制脚:IN1为高电平,IN2为
低电平时电机正转,反过来电机反转,如果电
平同为高或为低时不转
6、IN3,IN4为B电机控制脚,使用方法同上。

*****************************************/

/*****************************************
小车接线说明

ENA管脚接P0_0管脚
ENB管脚接P0_1管脚
IN1,2,3,4分别对应P0_2,P0_3,P0_4,P0_5管脚

*****************************************/

#include //读取头文件
typedef unsigned char uchar;

/************管脚定义********************/
sbit ENA=P0^0;//A电机使能管脚
sbit ENB=P0^1;//B电机势能管教

//四个电机转动方向控制管脚
sbit IN1=P0^2;
sbit IN2=P0^3;
sbit IN3=P0^4;
sbit IN4=P0^5;


//变量定义
uchar time=0; //定义时间计数函数
uchar T=20; //PWM的脉冲周期
uchar rr=0; //右轮PWM脉冲的高电平时间
uchar ll=0; //左轮PWM脉冲的高电平时间

/*****************************************
速度设置函数
输入参数
LD:左轮转向 'F' 为前进 'B'为后退
RD"右轮转向 'F' 为前进 'B'为后退

LS RS 代表转速,调速范围0~40
*****************************************/
void SetSpeed(uchar LD,uchar RD,uchar LS,uchar RS)
{
if('F'==RD)
{
IN1=1;
IN2=0;
}
else
{
IN1=0;
IN2=1;
}
if('F'==LD)
{
IN3=1;
IN4=0;
}
else
{
IN3=0;
IN4=1;
}
rr=RS;
ll=LS;
}

/***延时函数,调用一次空运行5毫秒*******/
void delay(void) //5ms延时,误差 -0.000000000001us
{
unsigned char a,b;
for(b=15;b>0;b--)
for(a=152;a>0;a--);
}
/*定时器中断函数,每1毫秒自动调用一次。***/
void timer0() interrupt 1 using 1 //使用定时器
{
TH0=(65536-1000)/256; //定时器初值重装载,1000us挑一次,一个完整周期20ms。
TL0=(65536-1000)%256;
//每进入一次中断计数变量增加1
if(time>rr) //右轮加电时间到,变低
{
ENA=0;
}
if(time>ll) //左轮加电时间到,变低
{
ENB=0;
}
if(time>40) //周期时间到,重新再加电
{
time=0;
ENA=1;
ENB=1;
}
time++;
}

void main() //这个是主程序~~~~
{

//定时器设置
uchar i;
TMOD=0x01; //定时器0方式1
TH0=(65536-10000)/256; //定时器装载初值
TL0=(65536-10000)%256;
EA=1; //开CPU中断
ET0=1; //开定时器0中断
TR0=1;//启动定时器0
delay();
SetSpeed('B','F',0,0);

while(1) //死循环
{
for(i=0;

i<=200;i++) //循环200次5毫秒,相当于延时一秒
delay();
SetSpeed('F','F',25,25); //两轮都前进
for(i=0;i<=200;i++) //循环200次5毫秒,相当于延时一秒
delay();
SetSpeed('F','B',25,25); //左轮前进,右轮后退
}
}

相关文档