資源簡介
3路、4路紅外循跡智能小車程序,包括pwm對小車的速度調制。附proteus仿真圖

代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
unsigned?char?zkb1=0?;????//**左邊電機的占空比**//
unsigned?char?zkb2=0?;????//**右邊電機的占空比**//
unsigned?char?t=0;????????//**定時器中斷計數器**//
sbit?LSEN1=P1^0;???????//?右光對管1
sbit?LSEN2=P1^1;???????//右光對管2
sbit?RSEN1=P1^2;????????//左光對管1
sbit?RSEN2=P1^3;????????//左光對管2
sbit?IN1=P0^0;
sbit?IN2=P0^1;
sbit?IN3=P0^2;
sbit?IN4=P0^3;
sbit?ENA=P0^4;
sbit?ENB=P0^5;
//****************延時函數****************//
void?delay(int?z)???
{???while?(z--);??}
//**********初始化定時器,中斷***********//
void?init()
{??TMOD=0x01;
???TH0=(65536-100)/256;
???TL0=(65536-100)%256;
???EA=1;
???ET0=1;
???TR0=1;
}
//***********中斷函數+脈寬調制***********//
void?timer0()?interrupt?1
{???
????TH0=(65536-100)/256;
???TL0=(65536-100)%256;
??if(t ?????ENA=1;
??else
?????ENA=0;
??if(t ??????ENB=1;
??else
??????ENB=0;
????????t++;
??if(t>=100)
????{t=0;}
}
//******************直行******************//
void?qianjin()
{??IN1=1;?//******給電機加電啟動******//
?????IN2=0;
?????IN3=1;
?????IN4=0;?
????zkb1=30;
????zkb2=30;
}
//***************左轉函數1***************//
void?turn_left1()
{??
?IN1=1;?//******給電機加電啟動******//
?????IN2=0;
?????IN3=1;
?????IN4=0;
????zkb1=0;
????zkb2=50;
}
//***************左轉函數2***************//
void?turn_left2()
{??
?IN1=1;?//******給電機加電啟動******//
?????IN2=0;
?????IN3=1;
?????IN4=0;
????zkb1=0;
????zkb2=60;
}
//***************右轉函數1***************//
void?turn_right1()
{???
?????IN1=1;?//******給電機加電啟動******//
?????IN2=0;
?????IN3=1;
?????IN4=0;
zkb1=50;
????zkb2=0;
}
//***************右轉函數2***************//
void?turn_right2()
{???
?????IN1=1;?//******給電機加電啟動******//
?????IN2=0;
?????IN3=1;
?????IN4=0;
zkb1=60;
????zkb2=0;
}
//***************stop***************//
void?goback()
{??
?????IN1=0;?//******給電機加電啟動******//
?????IN2=1;
?????IN3=0;
?????IN4=1;
????zkb1=50;
????zkb2=50;
}
//***************循跡函數*****************//
void?xunji()
{?uchar?flag;
??if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
????{?flag=0;?}//*******直行*******//
???else??if((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0))
????{?flag=1;}?//***左偏1右轉1***//
???else??if(((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))||((RSEN1==0)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0)))
????{?flag=2;}?//***左偏2右轉2***//
???else?if((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==1))
????{?flag=3;?}//***右偏1,左轉1***//
??else?if(((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1))||((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==0)))
????{?flag=4;?}//***右偏2,左轉2***//
??else?if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))
????{?flag=5;?}//***stop***//
switch?(flag)
?????{??case?0:qianjin();
??????????????break;
????????case?1:turn_right1();
??????????????break;
????????case?2:turn_right2();
??????????????break;
????????case?3:turn_left1();
??????????????break;
????????case?4:turn_left2();
??????????????break;?
????case?5:goback();
??????????????break;?
??????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-07-11?13:39??3路4路紅外循跡\
?????文件????????6475??2014-07-11?13:08??3路4路紅外循跡\3路4路紅外.txt
?????文件??????168051??2014-07-11?12:55??3路4路紅外循跡\DCMOTOR.dsn
?????文件????????3029??2014-07-11?12:56??3路4路紅外循跡\TEST.C
?????文件????????3467??2014-07-11?12:55??3路4路紅外循跡\xj.c
評論
共有 條評論