收藏 分销(赏)

智能循迹小车-毕业设计.ppt

上传人:精**** 文档编号:12613232 上传时间:2025-11-11 格式:PPT 页数:15 大小:743KB 下载积分:8 金币
下载 相关 举报
智能循迹小车-毕业设计.ppt_第1页
第1页 / 共15页
智能循迹小车-毕业设计.ppt_第2页
第2页 / 共15页


点击查看更多>>
资源描述
,LOGO,COMPANY LOGOTYPE INSERT,*,LOGO,COMPANY LOGOTYPE INSERT,*,LOGO,COMPANY LOGOTYPE INSERT,*,*,*,LOGO,COMPANY LOGOTYPE INSERT,*,LOGO,COMPANY LOGOTYPE INSERT,*,*,*,智能循迹小车-毕业设计,控制程序设计,选题背景,电路焊接组装,结构设计,工作原理,控制电路设计,目录,自第一台工业机器人诞生以来,制造能代替人工作的机器一直是梦想。,随着汽车工业的迅速发展,关于汽车的研究也越来越受人关注。,中国自1987年把“智能模拟”作为国家科学技术发展规划的主要课题,开始着力研究智能化。,随着智能化的发展,创造了无人驾驶汽车,无人工仓库,服务机器人。,智能化作为现代化社会的新产物,也是以后的发展方向。,选题背景,第一,PPT,模板网:,结构设计,材料,现在各种快餐店打包都提供一次性筷子,只使用一次就扔掉实在太不环保!减少树木的砍伐,维护人类与自然的和谐共处。那身边已经有很多一次性筷子怎么办呢,可以将它们收集起来,洗干净后可以搞些制作,比如我们这次设计中利用到。,这次我们的设计整车车架主要材料就是,经过一次性使用后回收的筷子。,造型,小车的车头主要,参考铲车的车头设计,为了保证小车车头灯的正常运作,参考收割机的护刃器设计,制作了属于小车的“护刃器”保护车头。,结构设计,多根车头的横樑仿佛一个巨大的散热器大力十足,车身分两部分,前部分为主电路板与控制显示电路,后部分为载物仓可以搭载一定数量的货物,仿佛就像一台皮卡,动力,载物,的实用。,第一,PPT,模板网:,控制电路设计,信号检测模,块,采用,三对,红外,发射管与红外接收,管,。,一对红外管,用以,小车遇到前方有障碍物时信号的检测。,另外两对管用以,小车循迹时跟自动行走时,,对黑线进行检测,与遇到悬空“路段”时的检测,。,端口P3.5、P3.6、P3.7分别接三组红外管。,端口P3.3为红外遥控接收管信号传输。,(信号检测模块),主要有,四,大模块包括,信号检测模块,、,主控电路模块,、,电机驱动模块,、,串口烧录模块,。,第一,PPT,模板网:,控制电路设计,(信号检测模块),主控电路模块,控制处理器,采用宏晶公司的8051核心的STC89C52单片机作为控制,处理,主芯片。,主控电路包括显示电路,显示电路分两种显示,一种为LED灯显示,另一种为LED数码管显示。,端口P1.0P1.7连接LED1LED8,端口P2.1P2.7连接LED数码管,端口P2.0与P0.7连接LED车头灯,X1X2端口连接震荡电路,VCC,RESET,EA/VP分别接电源与复位电路组成控制系统。,主要有,四,大模块包括,信号检测模块,、,主控电路模块,、,电机驱动模块,、,串口烧录模块,。,第一,PPT,模板网:,控制电路设计,(,电机驱动模块,),电机驱动模块,采用的是LG9110电机驱动芯片,专用于电机驱动,单片机控制与传统分立原件电路相比,使整个系统有很好的稳定性可靠性强。信号检测模块将采集到的路况信号传入STC89C52单片机,经单片机处理后对LG9110发出指令尽心相应的调整。,单片机P0.0、P0.1、P0.2、P0.3端口分别接两个组模块的IB跟LA端口进行数据控制。,主要有,四,大模块包括,信号检测模块,、,主控电路模块,、,电机驱动模块,、,串口烧录模块,。,第一,PPT,模板网:,控制电路设计,(串口烧录,模块,),串口烧录,模块,采用的是MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。,主要有,四,大模块包括,信号检测模块,、,主控电路模块,、,电机驱动模块,、,串口烧录模块,。,串口烧录模块连接单片机的 RXD(P3.0)、TXD(P3.1)端口进行对单片机的数据传输。,第一,PPT,模板网:,电路焊接组装,控制程序设计,第一,PPT,模板网:,使用C语言进行程序编写,#include /包含51单片机相关的头文件,#define uint unsigned int /重定义无符号整数类型,#define uchar unsigned char /重定义无符号字符类型,uchar code LedShowData=0 x03,0 x9F,0 x25,0 x0D,0 x99,/定义数码管显示数据,0 x49,0 x41,0 x1F,0 x01,0 x19;/0,1,2,3,4,5,6,7,8,9,uchar code RecvData=0 x07,0 x0A,0 x1B,0 x1F,0 x0C,0 x0D,0 x0E,0 x00,0 x0F,0 x19;,uchar IRCOM7;/接收数据缓冲区,static unsigned int LedFlash;/定义闪动频率计数变量,unsigned char RunFlag=0;/定义运行标志,bit EnableLight=0;/定义指示灯使能位,/*完成基本数据变量定义*/,sbit S1State=P10;/定义S1状态标志位,sbit S2State=P11;/定义S2状态标志位,sbit B1State=P12;/定义B1状态标志位,sbit IRState=P13;/定义IR状态标志位,sbit RunStopState=P14;/定义运行停止标志位,sbit FontIRState=P15;/定义FontIR状态标志位,sbit LeftIRState=P16;/定义LeftIR状态标志位,sbit RightIRState=P17;/定义RightIRState状态标志位,/*完成状态指示灯定义*/,sbit S1=P32;/定义S1按键端口,sbit S2=P34;/定义S2按键端口,/*完成按键端口的定义*/,sbit LeftLed=P20;/定义前方左侧指示灯端口,sbit RightLed=P07;/定义前方右侧指示灯端口,/*完成前方指示灯端口定义*/,sbit LeftIR=P35;/定义前方左侧红外探头,sbit RightIR=P36;/定义前主右侧红外探头,sbit FontIR=P37;/定义正前方红外探头,/*完成红外探头端口定义*/,sbit M1A=P00;/定义电机1正向端口,sbit M1B=P01;/定义电机1反向端口,sbit M2A=P02;/定义电机2正向端口,sbit M2B=P03;/定义电机2反向端口,/*完成电机端口定义*/,sbit B1=P04;/定义话筒传感器端口,sbit RL1=P05;/定义光敏电阻端口,sbit SB1=P06;/定义蜂鸣端口,/*完成话筒,光敏电阻,蜂鸣器.端口定义*/,sbit IRIN=P33;/定义红外接收端口,/*完成红外接收端口的定义*/,#define ShowPort P2 /定义数码管显示端口,extern void ControlCar(uchar CarType);,/声明小车控制子程序,void delay(unsigned char x)/0.14mS延时程序,unsigned char i;/定义临时变量,while(x-)/延时时间循环,for(i=0;i13;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=LedShowData1;/数码管显示前进状态,break;/退出判断,case 2:/后退/判断是否是后退,M1B=1;/将电机1反向端口置高,M2B=1;/将电机2反向端口置高,ShowPort=LedShowData2;/数码管显示后退状态,RightLed=0;/将前方右侧指示灯置低(亮),LeftLed=0;/将前方左侧指示灯置低(亮),break;/退出判断,case 3:/左转/判断是否是左转,M1B=1;/将电机1反向端口置高,M2A=1;/将电机2正向端口置高,ShowPort=LedShowData3;/数码管显示左转状态,控制程序设计,第一,PPT,模板网:,使用C语言进行程序编写,LeftLed=0;/将前方左侧指示灯置低(亮),break;/退出判断,case 4:/右转/判断是否是右转,M1A=1;/将电机1正向端口置高,M2B=1;/将电机2反向端口置高,ShowPort=LedShowData4;/数码管显示右转状态,RightLed=0;/将前方右侧指示灯置低(亮),break;/退出判断,default:/默认情况下的判断,break;/直接退出判断,void ComBreak()interrupt 4 /定义串口通信子程序,unsigned char RecvData;/定义串口数据接收变量,if(RI=1)/判断是否接收数据,RecvData=SBUF/将接收到的数据放入暂时变量,if(RecvData10)/判断接收到的数据是否小于10,ShowPort=LedShowDataRecvData;,/将接收到的数据通过数码管显示出来,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;j4;j+)/采集红外遥控器数据,for(k=0;k=30)/判断计数器累加值,EX1=1;/打开外部中断功能,return;/返回,IRCOMj=IRCOMj 1;,/进行数据位移操作并自动补零,if(N=8)/判断数据长度,IRCOMj=IRCOMj|0 x80;/数据最高位补1,N=0;/清零位数计录器,if(IRCOM2!=IRCOM3)/判断地址码是否相同,EX1=1;/打开外部中断,return;/返回,for(j=0;j10;j+)/循环进行键码解析,if(IRCOM2=RecvDataj)/进行键位对应,P2=LedShowDataj;/数码管显示相应数码,switch(IRCOM2),case 0 x1A:/前进,ControlCar(1);/小车前进,case 0 x05:/后退,ControlCar(2);/小车后退,case 0 x01:/左转,ControlCar(3);/小车左转,case 0 x03:/右转,ControlCar(4);/小车右转,case 0 x12:/电源,ControlCar(5);/停止,EX1=1;/外部中断开,void main(void)/主程序入口,bit ExeFlag=0;/定义可执行位变量,LedFlash=3000;/对闪灯数据进行初始化,TMOD=0 x01;/选择定时器0为两个16位定时器,TH0=0 xFF;/对定时器进行计数值进行初始化,TL0=0 x49;/同上,时间大约为25uS,TR0=1;/同意开始定时器0,EX1=1;/同意开启外部中断1,IT1=1;/设定外部中断1为低边缘触发类型,ET0=0;,SCON=80;/设置串口模式为8位数据,控制程序设计,第一,PPT,模板网:,使用C语言进行程序编写,TMOD=33;/设置定时/计数器模式,TH1=0 xFD;/给定时器1高八位初始化初值,TL1=0 xFD;/给定时器1低八位初始化初值,TR1=1;/开启定时器1,ES=1;/开启串口通信功能,REN=1;/开启接收中断标志,EA=1;/总中断开启,ControlCar(1);/将小车置于前进状态,ShowPort=LedShowData0;/数码管显示数字0,while(1)/程序主循环,while(LedFlash-)/闪灯总延时,if(RL1=0)/判断光敏电阻的状态,RightLed=1;/将前方右侧指示灯点亮,LeftLed=1;/将前方左侧指示灯点亮,else/在光敏电阻为不通的状态下,RightLed=0;/将前方右侧指示灯熄灭,LeftLed=0;/将前方左侧指示灯熄灭,if(IRIN=0)/判断延时期间是否有红外信号输入,ExeFlag=1;/将可执行标志位置1,if(S1=0)/判断是否有S1按下,ControlCar(8);/将小车置于停止状态,RunFlag=1;/改变小车运行状态标志位,S1State=!S1State;/改变S1按键标志位,goto NextRun;/跳转到NextRun标签,if(S2=0)/判断是否有S2按下,ControlCar(1);/将小车置于前进状态,RunFlag=0;/改变小车运行状态标志位,S2State=!S2State;/改变S2按键标志位,goto NextRun;/跳转到NextRun标签,FontIRState=FontIR;,/前方红外指示灯显示正前方红外探头,状态,LeftIRState=LeftIR;,/左侧红外指示灯显示前方左侧红外探头状态,RightIRState=RightIR;,/右侧红外指示灯显示前主右侧红外探头状态,if(FontIR=0/*|LeftIR=1|RightIR=1*/),/判断正前方,前左侧,前右侧红外探头状态,ControlCar(2);/改变小车状态为后退,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,ControlCar(3);/改变小车左转状态,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,Delay();/调用延时子程序,SB1=!SB1;/将蜂鸣器取反,ControlCar(1);/改变小车为前进状态,SB1=1;/关闭蜂鸣器声音,if(B1=0)/判断是否有话筒信号输入,if(RunFlag=0)/判断小车当前的运行标志位,ControlCar(8);/将小车置于停止状态,RunFlag=1;/改变小车运行标志位,ControlCar(1);/将小车置于前进状态,RunFlag=0;/改变小车运行标志位,B1State=!B1State;/将话筒信号指示灯取反,NextRun:/跳转标签,RunStopState=!RunStopState;/改变小车运行停止状态标志位,照片预览,SOURCE 07,谢谢!,SOURCE 08,第一,PPT,模板网:,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服