毕业设计论文+智能循迹避障小车设计 下载本文

内容发布更新时间 : 2024/11/8 13:50:00星期一 下面是文章的全部内容请认真阅读。

sbit S1State=P1^0; //定义S1状态标志位

sbit S2State=P1^1; //定义S2状态标志位

sbit B1State=P1^2; //定义B1状态标志位

sbit IRState=P1^3; //位

sbit RunStopState=P1^4; //志位

sbit FontIRState=P1^5; //标志位

sbit LeftIRState=P1^6; //标志位

sbit RightIRState=P1^7; RightIRState状态标志位

/*************完成状态指示灯定义*************/

sbit S1=P3^2; //sbit S2=P3^4; ///*************完成按键端口的定义*************/

sbit LeftLed=P2^0; //示灯端口

sbit RightLed=P0^7; //示灯端口

/*************完成前方指示灯端口定义*********/

sbit LeftIR=P3^5; //外探头

sbit RightIR=P3^6; //外探头

sbit FontIR=P3^7; //探头

/*************完成红外探头端口定义***********/

sbit M1A=P0^0; //...

定义IR状态标志定义运行停止标定义FontIR状态定义LeftIR状态 //定义定义S1按键端口 定义S2按键端口 定义前方左侧指定义前方右侧指定义前方左侧红定义前主右侧红定义正前方红外定义电机1正向

端口

sbit M1B=P0^1; //定义电机1反向端口

sbit M2A=P0^2; //定义电机2正向端口

sbit M2B=P0^3; //定义电机2反向端口

/*************完成电机端口定义***************/

sbit B1=P0^4; //定义话筒传感器端口

sbit RL1=P0^5; //定义光敏电阻端口

sbit SB1=P0^6; //定义蜂鸣端口 /*********完成话筒,光敏电阻,蜂鸣器.端口定义**/

sbit IR1=P3^3; //定义红外接收端口

/*********完成红外接收端口的定义*************/

void Delay() //定义延时子程序 { uint DelayTime=30000; //定义延时时间变量

while(DelayTime--); //开始进行延时循环

return; //子程序返回 }

void main(void) //主程序入口 {

while(1) {

LeftLed=LeftIR; //左边的指示灯状态为左边的红外探头

RightLed=RightIR; //右边的指示灯状态为右边的红外探头 Delay(); //延时

}

...

}

4.4避障模块 避障框图:

开始 后退一点,报警 后退 左转 前进 右转 N 前进 是否检测到黑线 Y 循迹

图4.4 避障框图

避障程序:

#include //包含51单片机相关的头文件

sbit LeftLed=P2^0; //定义前方左侧指示灯端口 sbit RightLed=P0^7; //定义前方右侧指示灯端口 sbit FontLled=P1^7;

sbit LeftIR=P3^5; //定义前方左侧红外探头端口 sbit RightIR=P3^6 //定义前方右侧红外探头端口

...

sbit FontIR=P3^7; //定义前方正前方红外探头端口 sbit M1A=P0^0; //定义左侧电机驱动A端 sbit M1B=P0^1; //定义左侧电机驱动B端 sbit M2A=P0^2; //定义右侧电机驱动 sbit M2B=P0^3; //定义右侧电机驱动B端

sbit B1=P0^4; //定义语音识识别传感器端口 sbit SB1=P0^6; //void tingzhi() {

M1A=0; // M1B=0; // M2A=0; // M2B=0; }

void qianjin() {

M1A=1; M1B=0; M2A=1; M2B=0; }

void houtui() {

M1A=0; M1B=1; M2A=0; M2B=1; }

void zuozhuan() {

M1A=1;

...

定义蜂鸣器端口 将M1电机A端初始化为0 将M1电机B端初始化为0 将M2电机A端初始化为0

M1B=0; M2A=0; M2B=1; }

void youzhuan() {

M1A=0; M1B=1; M2A=1; M2B=0; }

void delay_nus(unsigned int i) //延时:i>=12 ,i的最小延时单12 us {

i=i/10; while(--i); }

void delay_nms(unsigned int n) //延时n ms {

n=n+1;

while(--n)

delay_nus(900); //延时 1ms,同时进行补偿 }

void ControlCar(unsigned char ConType) //定义电机控制子程序 {

tingzhi();

switch(ConType) //判断用户设定电机形式 {

case 1: //前进 //判断用户是否选择形式1

...