智能循迹小车-毕业设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能循迹小车
项目编号:工程X组-AXX 项目负责:XXX 指导老师:XX、XXX
XX市XX技师学院
目录
选题背景
电路焊接组装
结构设计
控制程序设计
控制电路设计
工作原理
选题背景
• 自第一台工业机器人诞生以来,制造能代替人工作的机器一直是梦想。
• 随着汽车工业的迅速发展,关于汽车的研究也越来越受人关注。
第一PPT模板网:www.1ppt.com
控制程序设计
使用C语言进行程序编写
LeftLed=0; //将前方左侧指示灯置低(亮) break; //退出判断 case 4: //右转 //判断是否是右转 { M1A=1; //将电机1正向端口置高 M2B=1; //将电机2反向端口置高 ShowPort=LedShowData[4]; //数码管显示右转状态 RightLed=0; //将前方右侧指示灯置低(亮) break; //退出判断 default: //默认情况下的判断 break; //直接退出判断 void ComBreak() interrupt 4 //定义串口通信子程序 {unsigned char RecvData; //定义串口数据接收变量 if(RI==1) //判断是否接收数据 { RecvData=SBUF //将接收到的数据放入暂时变量 if(RecvData<10) //判断接收到的数据是否小于10 ShowPort=LedShowData[RecvData]; //将接收到的数据通过数码管显示出来 ControlCar(RecvData); //将串口数据置于小于状态 SBUF=RecvData; //向电脑返回当前接收到的数据 RI=0; //清除接收中断标志位 if(TI==1) //判断是否是发送中断 TI=0; //清除发送中断标志位 void IR_IN() interrupt 2 using 0 //定义INT2外部中断函数 unsigned char j,k,N=0; //定义临时接收变量 EX1 = 0; //关闭外部中断,防止再有信号到达 delay(15); //延时时间,进行红外消抖 if (IRIN==1) //判断红外信号是否消失 EX1 =1;//外部中断开 return;//返回 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 delay(1);//延时等待 for (j=0;j<4;j++)//采集红外遥控器数据 for (k=0;k<8;k++) //分次采集8位数据 while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 delay(1);//延时等待 while (!IRIN)//等 IR 变为高电平 delay(1); //延时等待 while (IRIN)//计算IR高电平时长 delay(1);//延时等待 N++; //计数器加加 if (N>=30)//判断计数器累加值 EX1=1;//打开外部中断功能 return;//返回 IRCOM[j]=IRCOM[j] >> 1; //进行数据位移操作并自动补零 if (N>=8) //判断数据长度 IRCOM[j] = IRCOM[j] | 0x80;//数据最高位补1 N=0;//清零位数计录器 if (IRCOM[2]!=~IRCOM[3])//判断地址码是否相同 EX1=1;//打开外部中断 return;//返回 for(j=0;j<10;j++)//循环进行键码解析 if(IRCOM[2]==RecvData[j])//进行键位对应 P2=LedShowData[j];//数码管显示相应数码 switch(IRCOM[2]) case 0x1A://前进 ControlCar(1); //小车前进 case 0x05://后退 ControlCar(2); //小车后退 case 0x01://左转 ControlCar(3); //小车左转 case 0x03: //右转 ControlCar(4);//小车右转 case 0x12://电源 ControlCar(5);//停止 EX1 = 1; //外部中断开 void main(void) //主程序入口 bit ExeFlag=0;//定义可执行位变量 LedFlash=3000;//对闪灯数据进行初始化 TMOD=0x01; //选择定时器0为两个16位定时器 TH0=0xFF; //对定时器进行计数值进行初始化 TL0=0x49;//同上,时间大约为25uS TR0=1;//同意开始定时器0 EX1=1; //同意开启外部中断1 IT1=1; //设定外部中断1为低边缘触发类型 ET0=0; SCON=80;//设置串口模式为8位数据
第一PPT模板网:www.1ppt.com
(信号检测模块)
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
电机驱动模块采用的是
LG9110电机驱动芯片,专用于电机驱 动,单片机控制与传统分立原件电路 相比,使整个系统有很好的稳定性可 靠性强。信号检测模块将采集到的路 况信号传入STC89C52单片机,经单片 机处理后对LG9110发出指令尽心相应 的调整。 单片机P0.0、P0.1、P0.2、P0.3端口 分别接两个组模块的IB跟LA端口进行 数据控制。
第一PPT模板网:www.1ppt.com
(电机驱动模块)
ຫໍສະໝຸດ Baidu
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
串口烧录模块采用的是
MAX232芯片是美信(MAXIM)公司专 为RS-232标准串口设计的单电源电平 转换芯片,使用+5v单电源供电。
(串口烧录模块)
串口烧录模块连接单片机的 RXD(P3.0)、 TXD(P3.1)端口进行对单片机的数据传 输。
(信号检测模块)
第一PPT模板网:www.1ppt.com
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
主控电路模块控
制处理器采用宏晶公司的8051 核心的STC89C52单片机作为控 制处理主芯片。 主控电路包括显示电路,显示 电路分两种显示,一种为LED灯 显示,另一种为LED数码管显示。 端口P1.0~P1.7连接LED1~LED8 端口P2.1~P2.7连接LED数码管 端口P2.0与P0.7连接LED车头灯 X1X2端口连接震荡电路 VCC,RESET,EA/VP分别接电源 与复位电路组成控制系统。
结构设计 造型
小车的车头主要,参考铲车的 车头设计,为了保证小车车头 灯的正常运作,参考收割机的 护刃器设计,制作了属于小车 的“护刃器”保护车头。
多根车头的横樑仿佛一个巨大的 散热器大力十足,车身分两部分, 前部分为主电路板与控制显示电 路,后部分为载物仓可以搭载一 定数量的货物,仿佛就像一台皮 卡,动力,载物,的实用。
第一PPT模板网:www.1ppt.com
电路焊接组装
第一PPT模板网:www.1ppt.com
控制程序设计
使用C语言进行程序编写
#include <reg52.h> //包含51单片机相关的头文件 #define uint unsigned int //重定义无符号整数类型 #define uchar unsigned char //重定义无符号字符类型 uchar code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, //定义数码管显示数据 0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9 uchar code RecvData[]={0x07,0x0A,0x1B,0x1F,0x0C,0x0D,0x0E,0x00,0x0F,0x19}; uchar IRCOM[7]; //接收数据缓冲区 static unsigned int LedFlash; //定义闪动频率计数变量 unsigned char RunFlag=0; //定义运行标志 bit EnableLight=0; //定义指示灯使能位 /***********完成基本数据变量定义**************/ sbit S1State=P1^0; //定义S1状态标志位 sbit S2State=P1^1; //定义S2状态标志位 sbit B1State=P1^2; //定义B1状态标志位 sbit IRState=P1^3; //定义IR状态标志位 sbit RunStopState=P1^4; //定义运行停止标志位 sbit FontIRState=P1^5; //定义FontIR状态标志位 sbit LeftIRState=P1^6; //定义LeftIR状态标志位 sbit RightIRState=P1^7; //定义RightIRState状态标志位 /*************完成状态指示灯定义*************/ sbit S1=P3^2; //定义S1按键端口 sbit S2=P3^4; //定义S2按键端口 /*************完成按键端口的定义*************/ sbit LeftLed=P2^0; //定义前方左侧指示灯端口 sbit RightLed=P0^7; //定义前方右侧指示灯端口 /*************完成前方指示灯端口定义*********/ sbit LeftIR=P3^5; //定义前方左侧红外探头 sbit RightIR=P3^6; //定义前主右侧红外探头 sbit FontIR=P3^7; //定义正前方红外探头 /*************完成红外探头端口定义***********/ sbit M1A=P0^0; //定义电机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 IRIN=P3^3; //定义红外接收端口 /*********完成红外接收端口的定义*************/ #define ShowPort P2 //定义数码管显示端口 extern void ControlCar(uchar CarType); //声明小车控制子程序 void delay(unsigned char x) //0.14mS延时程序 { unsigned char i; //定义临时变量 while(x--) //延时时间循环 {for (i = 0; i<13; i++) {} //14mS延时 }}void Delay() //定义延时子程序 { uint DelayTime=30000; //定义延时时间变量 while(DelayTime--); //开始进行延时循环 return; //子程序返回 void ControlCar(uchar CarType) //定义小车控制子程序 M1A=0; //将电机1正向电平置低 M1B=0; //将电机1反向电平置低 M2A=0; //将电机2正向电平置低 M2B=0; //将电机2反向电平置低 LeftLed=1; //关闭前方左侧指示灯 RightLed=1; //关闭前方右侧指示灯 Delay(); //将此状态延时一段时间 switch(CarType) //判断小车控制指令类型 { case 1: //前进 //判断是否是前进 { M1A=1; //将电机1正向端口置高 M2A=1; //将电机2正向端口置高 ShowPort=LedShowData[1]; //数码管显示前进状态 break; //退出判断 case 2: //后退 //判断是否是后退 { M1B=1; //将电机1反向端口置高 M2B=1; //将电机2反向端口置高 ShowPort=LedShowData[2]; //数码管显示后退状态 RightLed=0; //将前方右侧指示灯置低(亮) LeftLed=0; //将前方左侧指示灯置低(亮) break; //退出判断 case 3: //左转 /判断是否是左转 { M1B=1; //将电机1反向端口置高 M2A=1; //将电机2正向端口置高 ShowPort=LedShowData[3]; //数码管显示左转状态
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
信号检测模块采用三对红
外发射管与红外接收管。 一对红外管用以小车遇到前方有障碍物 时信号的检测。 另外两对管用以,小车循迹时跟自动行 走时,对黑线进行检测与遇到悬空“路 段”时的检测。
端口P3.5、P3.6、P3.7分别接三组红外 管。 端口P3.3为红外遥控接收管信号传输。
• 中国自1987年把“智能模拟”作为国家科学技术发展规划的主要课 题,开始着力研究智能化。
• 随着智能化的发展,创造了无人驾驶汽车,无人工仓库,服务机器人。
• 智能化作为现代化社会的新产物,也是以后的发展方向。
第一PPT模板网:www.1ppt.com
结构设计
材料
现在各种快餐店打包都提供一次性筷子, 只使用一次就扔掉实在太不环保!减少树 木的砍伐,维护人类与自然的和谐共处。 那身边已经有很多一次性筷子怎么办呢, 可以将它们收集起来,洗干净后可以搞些 制作,比如我们这次设计中利用到。 这次我们的设计整车车架主要材料就是, 经过一次性使用后回收的筷子。
项目编号:工程X组-AXX 项目负责:XXX 指导老师:XX、XXX
XX市XX技师学院
目录
选题背景
电路焊接组装
结构设计
控制程序设计
控制电路设计
工作原理
选题背景
• 自第一台工业机器人诞生以来,制造能代替人工作的机器一直是梦想。
• 随着汽车工业的迅速发展,关于汽车的研究也越来越受人关注。
第一PPT模板网:www.1ppt.com
控制程序设计
使用C语言进行程序编写
LeftLed=0; //将前方左侧指示灯置低(亮) break; //退出判断 case 4: //右转 //判断是否是右转 { M1A=1; //将电机1正向端口置高 M2B=1; //将电机2反向端口置高 ShowPort=LedShowData[4]; //数码管显示右转状态 RightLed=0; //将前方右侧指示灯置低(亮) break; //退出判断 default: //默认情况下的判断 break; //直接退出判断 void ComBreak() interrupt 4 //定义串口通信子程序 {unsigned char RecvData; //定义串口数据接收变量 if(RI==1) //判断是否接收数据 { RecvData=SBUF //将接收到的数据放入暂时变量 if(RecvData<10) //判断接收到的数据是否小于10 ShowPort=LedShowData[RecvData]; //将接收到的数据通过数码管显示出来 ControlCar(RecvData); //将串口数据置于小于状态 SBUF=RecvData; //向电脑返回当前接收到的数据 RI=0; //清除接收中断标志位 if(TI==1) //判断是否是发送中断 TI=0; //清除发送中断标志位 void IR_IN() interrupt 2 using 0 //定义INT2外部中断函数 unsigned char j,k,N=0; //定义临时接收变量 EX1 = 0; //关闭外部中断,防止再有信号到达 delay(15); //延时时间,进行红外消抖 if (IRIN==1) //判断红外信号是否消失 EX1 =1;//外部中断开 return;//返回 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 delay(1);//延时等待 for (j=0;j<4;j++)//采集红外遥控器数据 for (k=0;k<8;k++) //分次采集8位数据 while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 delay(1);//延时等待 while (!IRIN)//等 IR 变为高电平 delay(1); //延时等待 while (IRIN)//计算IR高电平时长 delay(1);//延时等待 N++; //计数器加加 if (N>=30)//判断计数器累加值 EX1=1;//打开外部中断功能 return;//返回 IRCOM[j]=IRCOM[j] >> 1; //进行数据位移操作并自动补零 if (N>=8) //判断数据长度 IRCOM[j] = IRCOM[j] | 0x80;//数据最高位补1 N=0;//清零位数计录器 if (IRCOM[2]!=~IRCOM[3])//判断地址码是否相同 EX1=1;//打开外部中断 return;//返回 for(j=0;j<10;j++)//循环进行键码解析 if(IRCOM[2]==RecvData[j])//进行键位对应 P2=LedShowData[j];//数码管显示相应数码 switch(IRCOM[2]) case 0x1A://前进 ControlCar(1); //小车前进 case 0x05://后退 ControlCar(2); //小车后退 case 0x01://左转 ControlCar(3); //小车左转 case 0x03: //右转 ControlCar(4);//小车右转 case 0x12://电源 ControlCar(5);//停止 EX1 = 1; //外部中断开 void main(void) //主程序入口 bit ExeFlag=0;//定义可执行位变量 LedFlash=3000;//对闪灯数据进行初始化 TMOD=0x01; //选择定时器0为两个16位定时器 TH0=0xFF; //对定时器进行计数值进行初始化 TL0=0x49;//同上,时间大约为25uS TR0=1;//同意开始定时器0 EX1=1; //同意开启外部中断1 IT1=1; //设定外部中断1为低边缘触发类型 ET0=0; SCON=80;//设置串口模式为8位数据
第一PPT模板网:www.1ppt.com
(信号检测模块)
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
电机驱动模块采用的是
LG9110电机驱动芯片,专用于电机驱 动,单片机控制与传统分立原件电路 相比,使整个系统有很好的稳定性可 靠性强。信号检测模块将采集到的路 况信号传入STC89C52单片机,经单片 机处理后对LG9110发出指令尽心相应 的调整。 单片机P0.0、P0.1、P0.2、P0.3端口 分别接两个组模块的IB跟LA端口进行 数据控制。
第一PPT模板网:www.1ppt.com
(电机驱动模块)
ຫໍສະໝຸດ Baidu
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
串口烧录模块采用的是
MAX232芯片是美信(MAXIM)公司专 为RS-232标准串口设计的单电源电平 转换芯片,使用+5v单电源供电。
(串口烧录模块)
串口烧录模块连接单片机的 RXD(P3.0)、 TXD(P3.1)端口进行对单片机的数据传 输。
(信号检测模块)
第一PPT模板网:www.1ppt.com
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
主控电路模块控
制处理器采用宏晶公司的8051 核心的STC89C52单片机作为控 制处理主芯片。 主控电路包括显示电路,显示 电路分两种显示,一种为LED灯 显示,另一种为LED数码管显示。 端口P1.0~P1.7连接LED1~LED8 端口P2.1~P2.7连接LED数码管 端口P2.0与P0.7连接LED车头灯 X1X2端口连接震荡电路 VCC,RESET,EA/VP分别接电源 与复位电路组成控制系统。
结构设计 造型
小车的车头主要,参考铲车的 车头设计,为了保证小车车头 灯的正常运作,参考收割机的 护刃器设计,制作了属于小车 的“护刃器”保护车头。
多根车头的横樑仿佛一个巨大的 散热器大力十足,车身分两部分, 前部分为主电路板与控制显示电 路,后部分为载物仓可以搭载一 定数量的货物,仿佛就像一台皮 卡,动力,载物,的实用。
第一PPT模板网:www.1ppt.com
电路焊接组装
第一PPT模板网:www.1ppt.com
控制程序设计
使用C语言进行程序编写
#include <reg52.h> //包含51单片机相关的头文件 #define uint unsigned int //重定义无符号整数类型 #define uchar unsigned char //重定义无符号字符类型 uchar code LedShowData[]={0x03,0x9F,0x25,0x0D,0x99, //定义数码管显示数据 0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9 uchar code RecvData[]={0x07,0x0A,0x1B,0x1F,0x0C,0x0D,0x0E,0x00,0x0F,0x19}; uchar IRCOM[7]; //接收数据缓冲区 static unsigned int LedFlash; //定义闪动频率计数变量 unsigned char RunFlag=0; //定义运行标志 bit EnableLight=0; //定义指示灯使能位 /***********完成基本数据变量定义**************/ sbit S1State=P1^0; //定义S1状态标志位 sbit S2State=P1^1; //定义S2状态标志位 sbit B1State=P1^2; //定义B1状态标志位 sbit IRState=P1^3; //定义IR状态标志位 sbit RunStopState=P1^4; //定义运行停止标志位 sbit FontIRState=P1^5; //定义FontIR状态标志位 sbit LeftIRState=P1^6; //定义LeftIR状态标志位 sbit RightIRState=P1^7; //定义RightIRState状态标志位 /*************完成状态指示灯定义*************/ sbit S1=P3^2; //定义S1按键端口 sbit S2=P3^4; //定义S2按键端口 /*************完成按键端口的定义*************/ sbit LeftLed=P2^0; //定义前方左侧指示灯端口 sbit RightLed=P0^7; //定义前方右侧指示灯端口 /*************完成前方指示灯端口定义*********/ sbit LeftIR=P3^5; //定义前方左侧红外探头 sbit RightIR=P3^6; //定义前主右侧红外探头 sbit FontIR=P3^7; //定义正前方红外探头 /*************完成红外探头端口定义***********/ sbit M1A=P0^0; //定义电机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 IRIN=P3^3; //定义红外接收端口 /*********完成红外接收端口的定义*************/ #define ShowPort P2 //定义数码管显示端口 extern void ControlCar(uchar CarType); //声明小车控制子程序 void delay(unsigned char x) //0.14mS延时程序 { unsigned char i; //定义临时变量 while(x--) //延时时间循环 {for (i = 0; i<13; i++) {} //14mS延时 }}void Delay() //定义延时子程序 { uint DelayTime=30000; //定义延时时间变量 while(DelayTime--); //开始进行延时循环 return; //子程序返回 void ControlCar(uchar CarType) //定义小车控制子程序 M1A=0; //将电机1正向电平置低 M1B=0; //将电机1反向电平置低 M2A=0; //将电机2正向电平置低 M2B=0; //将电机2反向电平置低 LeftLed=1; //关闭前方左侧指示灯 RightLed=1; //关闭前方右侧指示灯 Delay(); //将此状态延时一段时间 switch(CarType) //判断小车控制指令类型 { case 1: //前进 //判断是否是前进 { M1A=1; //将电机1正向端口置高 M2A=1; //将电机2正向端口置高 ShowPort=LedShowData[1]; //数码管显示前进状态 break; //退出判断 case 2: //后退 //判断是否是后退 { M1B=1; //将电机1反向端口置高 M2B=1; //将电机2反向端口置高 ShowPort=LedShowData[2]; //数码管显示后退状态 RightLed=0; //将前方右侧指示灯置低(亮) LeftLed=0; //将前方左侧指示灯置低(亮) break; //退出判断 case 3: //左转 /判断是否是左转 { M1B=1; //将电机1反向端口置高 M2A=1; //将电机2正向端口置高 ShowPort=LedShowData[3]; //数码管显示左转状态
控制电路设计
主要有四大模块包括信号检测模块、主控电路模块、电机驱动模块、串口烧录模块。
信号检测模块采用三对红
外发射管与红外接收管。 一对红外管用以小车遇到前方有障碍物 时信号的检测。 另外两对管用以,小车循迹时跟自动行 走时,对黑线进行检测与遇到悬空“路 段”时的检测。
端口P3.5、P3.6、P3.7分别接三组红外 管。 端口P3.3为红外遥控接收管信号传输。
• 中国自1987年把“智能模拟”作为国家科学技术发展规划的主要课 题,开始着力研究智能化。
• 随着智能化的发展,创造了无人驾驶汽车,无人工仓库,服务机器人。
• 智能化作为现代化社会的新产物,也是以后的发展方向。
第一PPT模板网:www.1ppt.com
结构设计
材料
现在各种快餐店打包都提供一次性筷子, 只使用一次就扔掉实在太不环保!减少树 木的砍伐,维护人类与自然的和谐共处。 那身边已经有很多一次性筷子怎么办呢, 可以将它们收集起来,洗干净后可以搞些 制作,比如我们这次设计中利用到。 这次我们的设计整车车架主要材料就是, 经过一次性使用后回收的筷子。