模拟红外传感器进行检测循迹,具体模式如图所示,使用超声波进行避障,避障距离可以进行调整,预设为200cm,可以代码进行修改。适合二次开发。非常好的毕业设计资料参考,包括仿真图+程序+pdf原理图+元器件清单+简要说明+程序详细注释。
/*=====================车轮与避障控制====================*/
void left0() /* 左转 */
{
left_go = 0; /* 左轮停止 */
left_re = 0;
reght_go = 1; /* 右轮前进 */
reght_re = 0;
soud( 1, 10 );
xml( 0xc0 );
/* xsj(" zuo zhuang ",16); */
xsj( " Turn Left ", 16 );
}
void left1() /* 左急转 */
{
left_go = 0; /* 左轮后退 */
left_re = 1;
reght_go = 1; /* 右轮前进 */
reght_re = 0;
soud( 2, 10 );
xml( 0xc0 );
xsj( " Turn Left(JI) ", 16 );
}
#include <reg51.h>
#include <intrins.h>
/* #include "ultrasonic_wave.h"//超声波头函数 */
#define unchar unsigned char
#define uint unsigned int
#define ULint unsigned long int
sbit left_go = P0 ^ 0; /* 左轮前进,1有效 */
sbit left_re = P0 ^ 1; /* 左轮后退 */
sbit reght_go = P0 ^ 2; /* 右轮前进 */
sbit reght_re = P0 ^ 3; /* 右轮后退 */
sbit mh = P0 ^ 4; /* 避障 */
sbit rs = P0 ^ 5; /* lcd RE端 */
sbit rw = P0 ^ 6; /* lcd R/W端 */
sbit e = P0 ^ 7; /* lcd E端 */
sbit sou = P1 ^ 6; /* 蜂鸣输出 */
unchar seconds = 60, s = 0; minutes = 59;
char code number[] = { "0123456789" };
char flag = 0;
/* 超声波 */
char flags = 0;
/* 超声波距离 */
char flag1s = 0;
/* 计算定时间 */
uint time = 0;
/* 计算距离 */
ULint L_ = 0;
/* 数值有误 */
unchar FW = 0;
unchar p1zt = 0xff, moshi = 0x00; /* p1zt存p1口寻迹状态,moshi存控制模式 */
/* =====================延时函数==================*/
void delay() /* 延时100us */
{
unchar i;
for ( i = 0; i < 100; i++ )
;
}
void delay_50ms() /* 延时50ms */
{
unchar ms;
for ( ms = 0; ms < 50; ms++ )
{
delay();
}
}
void seg( unchar i ) /* 可选秒延时i=1表示1s */
{
unchar a;
for (; i > 0; i-- )
{
for ( a = 0; a < 20; a++ )
delay_50ms();
}
}
/* ===============lcd屏控制=============== */
void xsj( unchar dat[16], w ) /* 写数据函数,dat[16]要显的字符串,w字符个数,w<16 */
{
文章转自电设屋,资料百度网盘下载地址 https://www.aiesst.cn/share.html