智能循迹避障小车完整程序亲测好使.docx

上传人:b****7 文档编号:25645914 上传时间:2023-06-11 格式:DOCX 页数:7 大小:15.39KB
下载 相关 举报
智能循迹避障小车完整程序亲测好使.docx_第1页
第1页 / 共7页
智能循迹避障小车完整程序亲测好使.docx_第2页
第2页 / 共7页
智能循迹避障小车完整程序亲测好使.docx_第3页
第3页 / 共7页
智能循迹避障小车完整程序亲测好使.docx_第4页
第4页 / 共7页
智能循迹避障小车完整程序亲测好使.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

智能循迹避障小车完整程序亲测好使.docx

《智能循迹避障小车完整程序亲测好使.docx》由会员分享,可在线阅读,更多相关《智能循迹避障小车完整程序亲测好使.docx(7页珍藏版)》请在冰豆网上搜索。

智能循迹避障小车完整程序亲测好使.docx

智能循迹避障小车完整程序亲测好使

/V^X

^yx^Tx^7^^|>

//利用51定时器产生PWM波来调节电机速度

//速度变化范围从0-100可调

//使用三路做寻迹使用,哪一路检测在黑线哪一路为

//高电平

〃没检测到黑线表示有反射对应输出低电平信号

K^f

^T>^7^

#include

#defineuintunsignedint

#defineucharunsignedchar

/*电机四个接口定义*/

sbitini二P0"0;

sbitin2二P(T1;

sbitin3二P0"2;

sbitin4二P0"3;

/*计时器*/

ucharj,k,i,a,Al,A2,second,minge,minshi;

sbitdula=P2^6;

sbitwela=P2^7;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

ucharcodetable2[]={0xbf,0x86,Oxdb,Oxcf,

0xe6,Oxed,Oxfd,0x87,

Oxff,Oxef,0xf7,Oxfc,

0xb9,Oxde,0xf9,Oxfl};

voiddelay(uchari)

{

for(j=i;j>0;j—)

for(k=110;k>0;k—);

}

voiddisplay(ucharsh_c,ucharg_c,ucharmin_ge,ucharmin_shi){

dula=l;

Portable[sh_c];

dula=0;

PO二Oxff;

wela=l;

PO二Oxfb;

wela=0;

delay(5);

dula=l;

Portable[g_c];

dula=O;

PO二Oxff;

wela=l;

PO二Oxf7;

wela=0;

delay(5);

dula=l;

Portable[min_shi];

dula=0;

PO二Oxff;

wela=l;

P0=0xfe;

wela=0;

delay(5);

dula=l;

P0=table2[min_ge];

dula=0;

PO二Oxff;

wela=l;

PO二Oxfd;

wela=0;

delay(5);

/*左、中、右三路循迹传感器接口定义*/sbitzuo二P1"O;

sbitzhong二Pl"1;

sbityou二Pl"2;

/*避障接口定义*/

sbitbz_zuo二P3/3;

sbitbz_zhong二P3/4;

sbitbz_you二P3/5;

ucharcount二0;

/*利用定时器0定时中断,产生PWM波*/

voidInit_timer()

{

THO=(65535-10)/256;

TLO=(65535-10)%256;

TMOD=0x01;

TRO二1;

ETO二1;

EA=1;

}

/*左轮速度调节程序*/

voidzuolun(ucharspeed)

 

辻(count<=speed)//count计数变量

ini=1;

in2=0;

}

else

{

ini=0;

in2=1;

}

//同上

}

voidyoulun(ucharspeed)

{

if(count<=speed)

{

in3=1;

in4=0;

}

else

in3二0;

in4=1;

}

voidInline()//检测黑线信号

{

uchartemp;

temp=P1;

switch(temp)

{

case0x01:

zuolun(0);youlun(90);break;//左侧循迹传感器压线,小车向左前修正

case0x02:

zuolun(100);youlun(100);break;//中间循迹传感器压线,保持直走此处两值使电机速度保持相同

case0x04:

zuolun(90);youlun(O);break;//右侧循迹传感器压线,小车向右前修正

case0x08:

zuolun(90);youlun(0);break;//左侧避障传感器有

信号小车右转

case0x10:

zuolun(90);youlun(0);break;//中间避障传感器有信号小车左转

case0x20:

zuolun(90);youlun(0);break;//右侧避障传感器有信号小车左转

/*

if(zuo==l)

zuolun(lO);

youlun(50);

}

elseif(zhong==l)

{

zuolun(99);

youlun(99);

}

elseif(you==l)

{

zuolun(50);

youlun(lO);

}*/

}

voidmain()//主函数

{

Init_timer();〃调用函数

while

(1)

Inline();

minge=O;

minshi=O;

second++;

if(second==60)

second二0,minge++;

Al=second/10;

A2=second%10;

if(minge==10)

minge=0,minshi++;

for(a=200;a>0;a--)

{

display(Al,A2,minge,minshi);

};

}

}

voidTimerO_int()interrupt1〃定时器中断计数

{

THO=(65535-10)/256;

TLO=(65535-10)%256;

count++;

if(count>=100)

count=0

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1