|
本帖最后由 一寸灰 于 2019-1-30 12:38 編輯
●這里的循跡是指小車在白色地面上 沿著黑線走;
●傳感器利用不同顏色的物體表面有不同反射性的特點(diǎn):白色地面發(fā)生漫反射,黑色則被吸收。
小車的組成結(jié)構(gòu)
• 硬件部分
紅外傳感器
驅(qū)動*2
杜邦線*若干
51最小系統(tǒng)*1
螺絲卡簧固定片亞克力板底盤
• 軟件部分:
keil軟件所寫的c語言程序,控制51單片機(jī)
0.png (381.59 KB, 下載次數(shù): 71)
下載附件
2019-1-25 03:21 上傳
傳感器:
在小車行駛過程中傳感器不斷地向地面發(fā)射紅外光,紅外光遇到白色地板發(fā)生漫反射,反射光被傳感器的接收管接受;遇到黑色紅外光會被吸收 單片機(jī)以此確定黑線的位置來控制小車的行走路線。循跡51最小系統(tǒng)原理圖:
51.PNG (72.95 KB, 下載次數(shù): 79)
下載附件
2019-1-30 12:35 上傳
因?yàn)樗玫腖298N驅(qū)動模塊上有5V穩(wěn)壓端,所以最小系統(tǒng)上面可以不需要穩(wěn)壓電路,直接用驅(qū)動供電即可。
下面是可以簡單循跡的源代碼:
#include <reg52.h>
#include "include.h"
unsigned char pwm_val =0;//變量定義
unsigned char val_left =15;// 左電機(jī)占空比N/20 //速度調(diào)節(jié)變量 0-20。。。0最小,20最大
bit PWM_ON=1;//電機(jī)PWM開關(guān)
/***************PWM電機(jī)轉(zhuǎn)速***************/
void pwm_moto(void)
{
if(PWM_ON)
{
if(pwm_val <= val_left)
{
if(LIN1==1&&LIN2==1&&RIN1==1&&RIN2==1)
{ LOUT1 = 0 ;LOUT2 = 1 ;ROUT1 = 1 ;ROUT2 = 0 ;}
else if(LIN1==0&&LIN2==1&&RIN1==1&&RIN2==1)
{ LOUT1 = 1 ;LOUT2 = 0 ;ROUT1 = 1 ;ROUT2 = 0 ;}//快左拐
else if(LIN1==0&&LIN2==0&&RIN1==1&&RIN2==1)
{ LOUT1 = 1 ;LOUT2 = 0 ;ROUT1 = 1 ;ROUT2 = 0 ;}//快左拐
else if(LIN1==1&&LIN2==0&&RIN1==1&&RIN2==1)
{ LOUT1 = 0 ;LOUT2 = 0 ;ROUT1 = 1 ;ROUT2 = 0 ;}//慢左拐
else if(LIN1==1&&LIN2==1&&RIN1==0&&RIN2==1)
CarTurnRight_Low();//慢右拐
else if(LIN1==1&&LIN2==1&&RIN1==1&&RIN2==0)
{ LOUT1 = 0 ;LOUT2 = 1 ;ROUT1 = 0 ;ROUT2 = 1 ;}//快右拐
else if(LIN1==0&&LIN2==0&&RIN1==1&&RIN2==1)
{ LOUT1 = 0 ;LOUT2 = 1 ;ROUT1 = 0 ;ROUT2 = 1 ;}//快右拐
else if((LIN1==0&&LIN2==0&&RIN1==1&&RIN2==0)||(LIN1==0&&LIN2==1&&RIN1==0&&RIN2==1)||(LIN1==1&&LIN2==0&&RIN1==0&&RIN2==1))
{ LOUT1 = 0 ;LOUT2 = 1 ;ROUT1 = 1 ;ROUT2 = 0 ;}
}
else
{
LOUT1 = 0 ;LOUT2 = 0 ;ROUT1 = 0 ;ROUT2 = 0 ;
}
if(pwm_val>=20)
pwm_val=0;
}
else
{
LOUT1 = 0 ;LOUT2 = 0 ;ROUT1 = 0 ;ROUT2 = 0 ;
}
}
void main()
{
P2=0X00; //關(guān)電機(jī)
// delay(1000);
TMOD=0X01;
TH0= 0XFC;//0xFF;//0.25ms 定時//0XFC; //1ms定時
TL0= 0X66;//0x1A;//0X66;
TR0= 1;
ET0= 1;
EA = 1; //開總中斷
while(1) //無限循環(huán) 無黑線為零全亮0 有黑線燈滅為一
{ //作用當(dāng)為直道時 無調(diào)速即全速前進(jìn) 彎道時有調(diào)速
if(LIN1==0&&LIN2==0&&RIN1==0&&RIN2==0)
{PWM_ON = 0; CarGoAhead();}
else
{PWM_ON = 1;}
}
}
//TIMER0中斷服務(wù)子函數(shù)產(chǎn)生PWM信號
void timer0()interrupt 1
{
TH0=0XFC; //1Ms定時
TL0=0X66;
pwm_val++;
pwm_moto();
}
//定義小車光電模塊輸入IO口
sbit LIN1 = P1^0; //左循跡紅外傳感器
sbit LIN2 = P1^1;
sbit RIN1 = P1^2; //右循跡紅外傳感器
sbit RIN2 = P1^3;
//定義小車電機(jī)驅(qū)動模塊輸出IO口
sbit LOUT1 = P2^0;//LIN1 LIN3 IN1 IN2 電機(jī)1的轉(zhuǎn)速和方向
sbit LOUT2 = P2^1;//LIN2 LIN4 IN3 IN4 電機(jī)2的轉(zhuǎn)速和方向
sbit ROUT1 = P2^2;//RIN1 RIN3
sbit ROUT2 = P2^3;//RIN2 RIN4
//#define Left_moto_go {LOUT1 = 0,LOUT2 = 1;} //左邊電機(jī)正轉(zhuǎn)
//#define Left_moto_back {LOUT1 = 1,LOUT2 = 0;} //左邊電機(jī)反轉(zhuǎn)
//#define Left_moto_Stop {LOUT1 = 0,LOUT2 = 0;} //左邊電機(jī)停轉(zhuǎn)
//#define Right_moto_go {ROUT1 = 1,ROUT2 = 0;} //右邊電機(jī)正轉(zhuǎn)
//#define Right_moto_back {ROUT1 = 0,ROUT2 = 1;} //右邊電機(jī)反轉(zhuǎn)
//#define Right_moto_Stop {ROUT1 = 0,ROUT2 = 0;} //右邊電機(jī)停轉(zhuǎn)
//void delay(unsigned int xms)
//{
// unsigned int i,j;
// for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
// for(j=112;j>0;j--);
//}
void CarGoAhead(void)//快進(jìn)(P1=0000 1010 P1=0x0A)
{
// Left_moto_go;
// Right_moto_go;
LOUT1 = 0 ;
LOUT2 = 1 ;
ROUT1 = 1 ;
ROUT2 = 0 ;
}
//void CarBack(void)//快退(P1=0000 0101 P1=0x05)
//{
// Left_moto_back;
// Right_moto_back;
//}
void CarTurnLeft_Low(void)//慢左拐(P1=0000 1000 P1=0x08)
{
// Left_moto_Stop;
// Right_moto_go;
LOUT1 = 0 ;
LOUT2 = 0 ;
ROUT1 = 1 ;
ROUT2 = 0 ;
}
void CarTurnLeft_High(void)//快左拐(P1=0000 1001 P1=0x09)
{
// Left_moto_back;
// Right_moto_go;
LOUT1 = 1 ;
LOUT2 = 0 ;
ROUT1 = 1 ;
ROUT2 = 0 ;
}
void CarTurnRight_Low(void)//慢右拐(P1=0000 0010 P1=0x02)
{
// Left_moto_go;
// Right_moto_Stop;
LOUT1 = 0 ;
LOUT2 = 1 ;
ROUT1 = 0 ;
ROUT2 = 0 ;
}
void CarTurnRight_High(void)//快右拐(P1=0000 0110 P1=0x06)
{
// Left_moto_go;
// Right_moto_back;
LOUT1 = 0 ;
LOUT2 = 1 ;
ROUT1 = 0 ;
ROUT2 = 1 ;
}
|
-
0.png
(87.85 KB, 下載次數(shù): 158)
下載附件
2019-1-25 03:22 上傳
-
0.png
(57.93 KB, 下載次數(shù): 136)
下載附件
2019-1-25 03:22 上傳
-
-
51循跡.pdf
2019-1-21 15:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
1.72 MB, 下載次數(shù): 46, 下載積分: 黑幣 -5
評分
-
查看全部評分
|