這個程序非常簡單,你看看吧。
/*
簡易小車。最小系統板,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();
}
}
}
|