该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序如下:
#include
#define uint unsigned int
#define uchar unsigned char
sbit P10=P1^0; //控制左电机前进
sbit P11=P1^1;//控制左电机后退
sbit P12=P1^2;//控制右电机前进
sbit P13=P1^3;//控制右电机后退
sbit LED=P0^0;
sbit zuobian=P3^2; //左边传感器
sbit youbian=P3^3; //右边传感器
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50us的延时
//************************************************
voiddelay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
//************************************************
//延时函数,在12MHz的晶振频率下
//大约50ms的延时
//************************************************
voiddelay_50ms(uint t)
{
uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
void qianjin()//小车前进
{ P10=0;P11=1;
delay_50us(25);
P10=1;P11=1;
delay_50us(10);
P12=0;P13=1;
delay_50us(25);
P12=1;P13=1;
delay_50us(10);
}
void tingzhi() //小车停止
{ P10=1;P11=1;P12=1;P13=1;}
void youguai() //小车右拐
{ P10=0;P11=1;
delay_50us(25);
P10=1;P11=1;
delay_50us(10);
P12=1;P13=1;
delay_50us(10);
}
void zuoguai() //小车左拐
{
P12=0;P13=1;
delay_50us(25);
P12=1;P13=1;
delay_50us(10);
P10=1;P11=1;
delay_50us(10);
}
void zhuanwan()//小车转弯
{
P10=1;P11=0;P12=0;P13=1;
delay_50ms(15);
{P10=1;P11=1;P12=1;P13=1;}
delay_50ms(100);
LED=1;
}
voidmain(void)
{
LED=0;
while(1)
{
if(zuobian==1&&youbian==0) //右边检测到黑线
zuoguai();
if(zuobian==0&&youbian==1) // 左边检测到黑线
youguai();
if(zuobian==1&&youbian==1) // 在黑线外
qianjin();
if(zuobian==0&&youbian==0) //到终点
zhuanwan();
}
}
请教一下这个程序用的电机驱动硬件是什么?是L298N吗?如果是,那么此程序中的P1^0一直到P1^3是接到L298N的 IN1 IN2 IN3 IN4吗?如果说如果是的话那么为什么小车前进函数,右拐函数,左拐函数我看不太懂,就拿前进函数来说:
void qianjin()//小车前进
{ P10=0;P11=1; //这是什么意思? 是IN1 IN2一个为高一个为低,左电机正转吗?(如果是P1^0接到IN1, P1^1接到IN2的话)
delay_50us(25);
P10=1;P11=1; //意思是IN1 IN2全为高电平,OUT1为0?所以停止?
delay_50us(10);
P12=0;P13=1; //同上
delay_50us(25);
P12=1;P13=1; //同上
delay_50us(10);
}
求各位大神显神通,本人感激不尽!