这个程序非常简单,你看看吧。
/*
简易小车。最小系统板,L298N带动两个电机,12V电机电源,L298N自带5V逻辑电源,
供板子使用。
*/
#include <reg51.h>
#include <intrins.h>
//直流电机的控制口
sbit ZLDJ10=P2^7;//1右轮后退
sbit ZLDJ11=P2^6;//0
sbit ZLDJ20=P2^5;//1左轮前进
sbit ZLDJ21=P2^4;//0
sbit LHW=P2^0;//左红外
sbit ZHW=P2^1;//中红外
sbit RHW=P2^2;//右红外
void TC(void)//停车
{
ZLDJ10=0;
ZLDJ11=0;
ZLDJ20=0;
ZLDJ21=0;
}
void Delay10ms(unsigned int c)
{
unsigned char a,b;
for(c;c>0;c--)
{
for(b=44;b>0;b--)
{
for (a=112;a>0;a--)
{
}
}
}
}
void LZD180(void)//左转动180度
{
unsigned char i;
for (i=0;i<10;i++)
{
ZLDJ10=0;
ZLDJ11=1;
ZLDJ20=0;
ZLDJ21=1;
}
TC();
}
void RZD90(void)//右转动90度
{
unsigned char i;
for (i=0;i<5;i++)
{
ZLDJ10=1;
ZLDJ11=0;
ZLDJ20=1;
ZLDJ21=0;
}
TC();
}
void LZD90(void)//左转动90度
{
unsigned char i;
for (i=0;i<5;i++)
{
ZLDJ10=0;
ZLDJ11=1;
ZLDJ20=0;
ZLDJ21=1;
}
TC();
}
void QSQJ(void)//全速前进
{
ZLDJ10=0;
ZLDJ11=1;
ZLDJ20=1;
ZLDJ21=0;
}
void main(void)
{
LHW=1;//I/O口初始化
ZHW=1;
RHW=1;
Delay10ms(10);
while(1)
{
if((ZHW==0)&&(LHW==0)&&(RHW==0))
{
TC();
LZD180();
}
if((ZHW==0)&&(LHW==0)&&(RHW!=0))
{
TC();
RZD90();
}
if((ZHW==0)&&(LHW!=0)&&(RHW==0))
{
TC();
LZD90();
}
if((ZHW==0)&&(LHW!=0)&&(RHW!=0))
{
TC();
LZD180();
}
if((ZHW!=0)&&(LHW==0)&&(RHW==0))
{
TC();
LZD180();
}
if((ZHW!=0)&&(LHW!=0)&&(RHW==0))
{
TC();
LZD90();
}
if((ZHW!=0)&&(LHW==0)&&(RHW!=0))
{
TC();
RZD90();
}
if((ZHW!=0)&&(LHW!=0)&&(RHW!=0))
{
QSQJ();
}
}
}
|