本科毕业论文-智能机器车设计_第1页
本科毕业论文-智能机器车设计_第2页
本科毕业论文-智能机器车设计_第3页
本科毕业论文-智能机器车设计_第4页
本科毕业论文-智能机器车设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号编号3108012010本科毕业论文(设计)智能机器车CreateRobotCar摘要智能,是在计算机中人为预置已经设计好的程序,通过机器人对外部世界信息的收集和处理,计算机按程序运行做出相应的动作,从而使机器人能对外部世界做出有效的反应。本次课题设计的智能机器车以Atmel公司的89S52单片机为主要控制核心,通过遥控智能机器车使其具有前进、后退、停止的功能,同时,配合红外避障与红外寻迹系统,实现该智能机器车的自动避障与自动寻迹功能。智能机器车主要由单片机控制模块、无线遥控模块、红外对管寻迹模块、红外避障模块、电机驱动模块组成。通过单独对各个模块的安装、调试,保证各个子模块的正常工作,得到正确的信号输出。然后把各个模块组合起来,对89S52单片机写入程序,将各模块整合成一个完整的系统,完成本次课题设计。关键词:智能;单片机;自动避障;自动寻迹;无线遥控ABSTRACTIntelligenceispresetwelldesignedprocedureinthecomputer,throughcollectingandprocessinginformationfromtheoutsideworld,computeroperationaccordingtotheprogramandmakestheappropriateaction,sothattherobotcanmakeeffectiveresponsetotheoutsideworld.Thistopicisthedesignofintelligentrobotvehicle,thedesignoftheoreticalscheme,analysismethodandcharacteristicandinnovationcanprovidereferencetothoserobotswithsocialapplicationsuchasarchaeologicalrobot,householdrobot,andminingrobotandsoon.Meanwhile,asahightechnologywiththecharacteristicsofhighaddedvalue,technicalrequirementsofprecision,wideapplicationrange,mostofthecountriestrytheirbesttodevelopintelligentrobots.Withthedevelopmentofournationaleconomy,theupgradeofindustrialstructure,tomaintainourcountryinfutureinternationalcompetitionadvantage,itisnecessarytopayattentiontothedevelopmentoftheintelligentrobotandgiveappropriatepolicysupporttoimproveourcountry'slevelofdevelopmentoftheintelligentrobot.Intelligentvehicleuses89S52MCUasthemaincontrolcore,throughwirelesscontrol,theintelligentvehiclehasthefunctionsofforward,backwardandstop.Atthesametime,withtheinfraredobstacleavoidanceandinfraredtrackingsystem,automaticobstacleavoidanceandautomatictracingcanberealized.Thedesignusesmethodsofcontrastselection,moduleindependence,integratetreatment.Bycombiningtheprofessionalknowledgeaswellasmakingfulluseofrelatedliteratureanddataresources,thedesignanalysisdifferentsolutionsandchoosethebestschemetodesignbasedonitspracticalsituations.Intelligentrobotvehicleismainlycomposedofasingle-chipcontrolmodule,wirelessremotecontrolmodule,infraredtubetracingmodule,infraredobstacleavoidancemodule,motordrivemodule.Byinstallinganddebuggingeachmoduleindividually,wegetcorrectsignaloutputwiththenormalworkofeachsubmodule.Atlast,wefinishthedesignbycombiningeachsubmodulesintegratedintoacompletesystem.KeyWords:intelligence;MCU;automaticobstacleavoidance;automatictracing.目录引言························································1总体设计···················································2各模块分析选择·········································22.1.1主控单元方案比较与选择·····························22.1.2避障单元方案比较与选择·····························22.1.3寻迹单元方案比较与选择·····························32.1.4遥控单元方案比较与选择······························32.2总体设计框图···········································33硬件设计···················································53.1单片机控制模块·········································53.1.1晶振电路··········································63.1.2复位电路··········································73.1.3接口电路··········································73.2红外无线遥控模块·······································83.2.1无线遥控工作原理···································83.2.2TC9012遥控发射器··································83.2.3LT0038芯片遥控接收器······························103.3光敏电阻寻迹模块·······································113.3.1光敏电阻的工作原理·································113.3.2寻迹电路···········································123.4红外避障模块···········································153.4.1红外避障模块工作原理·······························153.4.2红外避障模块电路···································153.4.3555时基芯片········································164软件设计····················································184.1软件设计框图··········································184.2各模块源程序··········································194.2.1自动寻迹模块源程序································194.2.2红外避障模块源程序································214.2.3红外遥控模块源程序································275制作与调试··················································305.1使用的仪器仪表与软件··································305.2软件的调试············································305.3各模块的调试··········································315.3.1自动寻迹模块的调试································315.3.2红外避障模块的调试································325.3.3红外遥控模块的调试································335.4联合调试··············································346结论与展望··················································35致谢·························································36参考文献·······················································371引言智能,是在计算机中人为预置已经设计好的程序,通过机器人对外部世界信息的收集和处理,计算机按程序运行做出相应的动作,从而使机器人能对外部世界做出有效的反应。在这个过程中,无需人为的操作,机器人便能实现自动化的运行。智能技术是当今科学界研究的热点之一。由于智能化技术具有多学科融合和多技术集成的特点,涉及众多学科领域的尖端技术,其发展水平能够反映出一个国家或地区信息与自动化技术的综合实力,因此,发达国家都投入大量的资源进行智能技术的研究工作,争夺行业的制高点。在我国,1986年3月出台的国家高技术研究发展计划(即“863”计划)中明确把智能机器人主题列入自动化技术领域中去,这从国家层面肯定了智能化技术的重要性,从此我国的智能化研究工作进入了快车道。本次课题设计以全面普及简要智能化技术为目的,整个开发过程简单易懂,电子元器件与平台的选择适当、合理,无须花费太多的时间与精力便能实能智能机器车的自动寻迹、自动避障和遥控的功能,是电子与工程等相关学科的初学者学习相关知识、巩固所学知识的理想教育工具。同时也适用于高校毕业生作为课题设计而开展。本次课题设计的是智能机器车,该设计过程中的理论方案、分析方法以及特点与创新等方面可以为考古机器人、家用机器人、采矿机器人等有社会应用价值前景的机器人的生产与发展提供一定的设计、制作的参考意义。同时,智能机器人作为一门高新科技,具有附加值高、技术要求精、应用范围广等一系列特点,是世界各个国家争相发展的热点。随着我国经济的发展,产业结构的升级,为保持我国在未来国际竞争中的优势,有必要重视智能机器人的发展并适当给予政策支持,以提高我国智能机器人的发展水平。本设计以简易智能机器人为主要开发平台,选择Atmel公司的89S52单片机为主要的控制核心,融合电机模型、传感器技术、红外无线通信技术、程序设计等一系列知识以实现智能机器车的各种功能。设计完成以由无线电遥控、光敏电阻的自动寻迹、红外线自动避障组成的硬件模块结合软件设计组成多功能智能小车,使得小车具有前进、倒退、转向行驶,自动根据地面黑线寻迹导航,检测障碍物后停止等功能,实现智能控制,达到设计目标。2总体设计本次课题主要是组装、制作一辆能够对外界信号进行智能判断并做出相应反应的智能机器小车。智能小车主要能够实现以下的几个功能:无线遥控功能、自动避障功能、自动寻迹功能。作品以两直流电机作为驱动,利用不同宽度的脉冲产生脉宽调制来对直流电机进行调速,同时电机驱动电路采用高电压,高电流,四通道驱动集成芯片L293D。光敏传感器是能够探测地面的情况,发光二极管发射光线,遇到浅色地面光线被反射回,遇到深色地面光线被吸收,根据不同的地面情况,智能机器车可以探测地面的线路迹象从而实现自动寻迹功能。同时,位于机器车前方的两只红外发射管和一只红外接收模块构成红外传感避障系统,主要用于检测前方的障碍物,红外光线当遇到浅色物体时被反射,遇到深色物体时光线被吸收,通过单片机的判断控制,实现转向,从而达到避障的功能。遥控系统由发射部分和接收芯片LT0038这两部分组成。最后由控制单元89S52处理数据后通过汇编程序有序合理的将各模块信号整合在一起并完成相应动作,实现了智能控制。2.1各模块分析选择通过对比分析选择各个模块,结合课题设计的实际情况,选择适合于本次课题设计的各个模块元件,进而得出设计方案。2.1.1主控单元方案比较与选择方案一:采用分立的数字电路对传感器收集的信号进行分析与处理。对自动寻迹电路、自动避障电路和遥控电路收集的外界信号作为数字电路的输入,由数字电路作控制单元,分析处理后输出,控制智能机器车的动作。这种方案在设计逻辑上各模块分工清晰,但电路较为复杂,灵活性不高,不利于发挥智能机器车的扩展功能。方案二:采用89S52单片机作为整机的控制核心。自动寻迹电路采用光敏传感器对路况进行连续的探测,信号送到单片机进行分析处理。自动避障电路的红外线探头采用市面上通用的发射管与及接收头,经过比较芯片调制处理后由控制系统接收。遥控电路芯片把接收信号送单片机处理。这种设计的优点是灵活方便,采用软硬件结合的方法解决了方案一中的不足,使整个电路的扩展性大大提高,同时,硬件的复杂程度降低,电路简洁清晰,易于达到既定的目标。通过比较以上两种方案,决定采用方案二,首先方案二灵活性高,能够充分发挥智能机器车的扩展功能;其次,方案二采用软硬件相结合的方法,减低了硬件的复杂程度,有利于课题目标的实现。2.1.2避障单元方案比较与选择方案一:利用超声波对障碍物进行探测。超声波是频率高于20000Hz的声波,它具有穿透力强、方向性好的特点,但超声波的缺点也很明显,例如超声波受环境影响较大,易受周围环境的影响,所产生声波的电路较为复杂。方案二:采用红外线避障。红外线是波长介于微波与可见光之间的电磁波,波长在760纳米到1毫米之间,是非可见光。设计采用2只位于前方的红处发射管(970nm)和1只红外接收模块构成红外传感避障系统,用来检测前方、左前方和右前方的障碍物。利用单片机产生38KHz信号红外线发射管进行调制发射,当红外线遇到障碍物时反射回来,红外接收管对反射回来的信号进行解调,输出比较电平。根据线外线的特性,可以知道红外线受外界可见光的影响较大,因此通过调制信号产生38KHz的载波来减少外界的一些干扰。红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器和输出放大电路,灵敏度很高。方案二的优点在于可操作性强,总体价格便宜,整个系统对障碍物的识别率高,且实用性强,设计制作简单易行。综合比较方案一与方案二,本设计采用方案二作为智能机器车避障系统的设计。2.1.3寻迹单元方案比较与选择方案一:采用红外发射管和接收管作为寻迹传感器。红外发射管发射红外线,当红外线遇到浅色物体时被反射,红外接收管进行接收,经芯片处理后输出低电平;当红外线遇到深色物体时大部分的光线被吸收,接收管接收不了反射的信号,芯片因而输出高电平。这种方案的缺点在于整个系统工作过程不够稳定,且红外线易受到外界光线的影响,使信号的发射与接收出现不同程度的失真,造成信号被误判。方案二:采用光敏传感器组成寻迹电路的形式。光敏传感器由五个光敏电阻和发光二极管组成,它能够探测地面情况,发光二极管发射光线,遇到浅色地面光线被反射,遇到深色地面光线被吸收。当智能机器车的遇到黑带时,光线被吸收,可以检测到输入电平为高电平,当遇到非黑带时,光线被反射,输入电平为低电平,再通过单片机采用查询方式,程序控制机器车的轮子来实现转向,达到寻迹的功能。本设计采用方案二作为寻迹系统的电路设计。2.1.4遥控单元方案比较与选择方案一:由发射和接收两大部分组成红外遥控系统,应用编/解码专用集成电路芯片来进行控制操作,发射部分包括LED红外发送器、编码调制、键盘矩阵部件;接收部分包括光、电转换放大器、解调、解码电路等,而且使用的时候必须将遥控器前的红外发射孔对准接收管。商业化的发射器与接收器体积小,密封性好,灵敏度高,且价格低廉,能够满足本次课题设计的基本要求。方案二:超声波遥控是利用超声波来传送指令的遥控,可以应用于需要遥控、遥测的场合。采用AX5326与AX5327等构成的遥控系统具有体积小、功耗低、功能强大、抗干扰能力强等优点。但由于超声波遥控价格较为昂贵,不是最理想的选择。综合比较方案一与方案二的设计,决定采用方案一的。2.2总体设计框图本次课题设计的系统以89S52单片机为控制核心,通过自动寻迹模块、避障模块和无线遥控模块对外部环境的探测,经芯片处理后以高低电平的形式送到52单片机进行处理,最后单片机把处理结果送电机,控制智能机器车的运行,实现其相应的功能。总体设计框图如图2-1避障模块避障模块直流电机寻迹模块单片机直流电机寻迹模块单片机无线遥控无线遥控模块 图2-1总体设计框图3硬件设计本系统硬件模块主要由五部分组成,分别是单片机控制模块、自动寻迹模块、自动避障模块、无线遥控模块和电机控制模块。以下对每个模块作较为详细的说明。3.1单片机控制模块单片机控制模块采用Atmel公司生产的89S52单片机作为核心处理器。单片机控制系统基本由最小系统和外围信号I/O口组成,其中最小系统包括电源(地),CPU时序电路(一般使用11.0592M或者12M和30P电容组成),复位电路。有了以上三块,单片机就能够正常工作。89S52是一种低功耗、高性能COMS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、高效的解决方案。利用89S52的I/O端口对传感器信号进行实时判断监控来控制直流电机做出相应的反应。图3-1是89S52单片机的引脚图。图3-1AT89S52单片机引脚图3.1.1晶振电路AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。这个放大器与作为反馈元件的片外晶体谐振器构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振回路,接在放大器的反馈回路中。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,图3-2说明内部振荡电路的连接图。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。图3-3说明了外部振荡电路的连接图。石英晶振C1,C2=30PF±石英晶振C1,C2=30PF±10PF陶瓷谐振器C1,C2=40PF±10PF图3-2内部振荡电路连接图图3-3外部振荡电路连接图3.1.2复位电路复位电路的基本功能原理是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。单片机复位电路参数的选定须在振荡稳定后保证复位高电平持续时间大于2个机器周期。图3-4是复位电路的连接图。图3-4复位电路的连接图复位电路通常采用上电自动复位和按钮复位两种方式。所谓上电复位,是指计算机加电瞬间,要在RST引脚出现大于10MS的正脉冲,使单片机进入复位状态。按钮复位是指用户按下“复位”按钮,使单片机进入复位状态。如图3-4,上电时,通过电阻R37提供高电平给RESET端,此时为上电复位,同时给电容E1充电。按钮复位时,按下按钮S3,电容E1放电,给RESET提供高电平,此为按钮复位。3.1.3接口电路RST置高电平,然后向单片机串行发送编程命令。P1.7(SCK)输入移位脉冲,P1.6(MISO)串行输出,P1.5(MOSI)串行输入。被烧写的单片机必须已经接上电源、晶振,可以运作,即具备了最小系统的单片机。接口电路如图3-5所示。图3-5接口电路3.2红外无线遥控模块红外无线遥控模块通过红外遥控发射、红外遥控接收两部分的配合,实现对智能机器车的无线遥控功能,从而控制小车的停启、转向等动作。3.2.1无线遥控的工作原理通用红外遥控系统由发射和接收两在部分组成,此次课题设计应用的是编、解码专用集成电路芯片来进行控制操作。发射部分的构成包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光电转换放大器、解调、解码电路等主要的部分。整个红外遥控系统的系统框图如图3-6所示。LED编码调制键盘LED编码调制键盘解码解调光、电放大器解码解调光、电放大器图3-6红外遥控系统框图3.2.2TC9012遥控发射器遥控发射器专用芯片根据编码格式的不同,可以分成两大类,分别是脉冲宽度调制和脉冲相位调制,其中由于脉冲宽度调制解码比较容易,集成度较高,价格便宜等特点,使得脉冲宽度调制的运用较脉冲相位调制来得广泛。本课题采用的遥控发射器是TC9012。TC9012是一块用于东芝系列红外遥控系统中的专用发射集成电路,采用COMS工艺制造。它可外接32按键,提供8种用户编码,另外还具有3种双重按键功能。其结构框图、管脚图、管脚图说明分别如图3-7、3-8、3-9所示。图3-7TC9012结构框图图3-8TC9012管脚图图3-9TC9012管脚说明3.2.3LT0038遥控接收电路LT0038是用于红外遥控接收的小型一体化接收设备,集成红外线的接收、放大、调解功能,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,且其体积和普通的三极管大小差不多,适合于各种红外遥控和红外数据传输,中心频率为38.0KHz。接收器对外只有3个引脚,分别为OUT、GND、VCC,与单片机接口非常方便。LT0038的示意图如图3-10所示。图3-10LT0038示意图在红外接收模块电路中,OUT接单片机的P3.3接口,作为红外接收模块的输出,由单片机做出判断,从而控制电机的停止或转向。如图3-11所示。3-11红外接收模块电路3.3光敏电阻寻迹模块光敏电阻寻迹模块作为智能机器车系统的重要组成部分,担负着机器车自动沿黑线行驶的重要功能。本模块采用的光敏传感器由五个光敏电阻和发光二极管组成,它能够探测地面情况,发光二极管发射光线,遇到浅色地面光线被反射,遇到深色地面光线被吸收。当智能机器车的遇到黑带时,光线被吸收,可以检测到输入电平为高电平,当遇到非黑带时,光线被反射,输入电平为低电平,再通过单片机采用查询方式,程序控制机器车的轮子来实现转向,达到寻迹的功能。图3-12为光敏电阻的实物图。图3-12光敏电阻3.3.1光敏电阻的工作原理光敏电阻又名光敏传感器、光导管。常用的制作材料为硫化镉,此外,硒、硫化铝、硫化铅和硫化铋等也可以作为其材料。这些制作材料在特定波长的光照射下,具有其阻值迅速减小的特性。这是由于光照的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,使得光敏电阻的阻值迅速下降。由硫化物制作而成的半导体封装在具有透光镜的密封壳体内,在黑暗的环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带上,并在价带中产生一个带正电的荷的空穴,通过增加电子-空穴对的方式提高了半导体中载流子的数目,从而把半导体的导电率增高,电阻率下降,最终使得半导体的光敏电阻阻值降低。阻值降低的幅度与光照的强度成正比,即光强越强,电阻值越低。同时,在光敏电阻的两端的金属电极加上电压,其中便有电流通过,当有不同波长的光线照射时光敏电阻时,电流就会随不同的波长的光线变化而变化,实现光电转换。图3-13是光敏电阻的结构简图。图3-13光敏电阻结构简图3.3.2寻迹电路寻迹电路是实现智能机器车自动寻迹的重要部分,它由底板寻迹电路板和主板寻迹电路组成。现分别说明。图3-14是寻迹底板电路示意图,其中R6~R10是光敏电阻的接收部分,它们分别与R1~R5并联,电阻R1R5接GVCC端,光敏电阻接收部分接地端。U1A至U1E是74HC14芯片(图3-15),该芯片是一款使用5.0V电源电压的、具有14个管脚的高速CMOS器件,能够实现6路施密特触发反相器,可将缓慢变化的从光敏电阻收集到的输入信号转换成清晰、无抖动的输出信号,图3-16是74HC14的内部逻辑结构图。图3-14寻迹底板电路图3-1574HC14芯片图3-1674HC14内部逻辑结构从74HC14输出的各路信号分别作为U2B-U2F的各路信号输入具有6路反相器的芯片4069,从4069输出的信号具有稳定的逻辑电平,进而通过CON5进入主板寻迹电路74HC245中进行信号功率放大。图3-17所示为4069的引脚分布图。图3-174069引脚图主板寻迹电路如图3-18所示。74HC245是带有使能功能的八位双向总线驱动器,这种八位总线收发器是为数据总线间时行异步两路通信而设计的。采用控制功能可以尽量减少外部定时电路的要求。同时,该电路可以将数据从A总线传送到B总线,也可以将数据从B总线传送到A总线,具体传送方向要看方向控制(DIR)输入的逻辑电平而决定,可以使用使能输入来禁止这种电路,使总线之间能有效地隔离。图3-18中DB0-DB7接74HC573锁存器(图3-19)和单片机P0.0-P0.7口。图3-18主板寻迹电路图3-1974HC573锁存器电路图3.4红外避障模块红外避障模块的主要功能是实现小车对障碍物的智能处理,当小车检测到前方有障碍物时,由89S52单片机输出信号对电机进行控制,实现转向、停止的功能。本次课题采用红外线避障的设计。3.4.1红外避障模块工作原理智能机器采用2只红外发射管(图3-20)和1只红外接收模块(图3-21)构成作为发射38KHz红外信号和接收模块,主要用来检测前方、左前方和右前方的障碍,检测距离范围大约为10-80cm。用户可以通过调节两个电位器来调节左右两个红外的检测距离。同时,在发射管上套上黑色环,使其侧面不能透出红外线,提高精度,防止小车产生误动作。主板中的芯片555为时基芯片,通过调节精密可调电位器使其线外发射的调制频率固化在38KHz左右,这就是红外接收模块中带通滤波器的中心频率。图3-20红外发射管图3-21红外接收模块3.4.2红外避障模块电路红外避障模块电路由38KHz发生电路和红外传感避障接收电路组成,共同完成发射红外线、接收反射回来的红外信号的功能,在红外避障系统中处于核心的位置。38KHz发生电路如图3-22所示。该电路主要由555时基芯片构成。通过调节电容C10的大小,可以调整输出方波的频率,随着电容C10的增大,输出频率会降低。通过调节电阻R16,可以对方波的占空比进行调整,随着电阻R16的增大,占空比提高,但同时也会使输出频率降低。通过对电容C10和电阻R16R合适调整,可以使得555时基芯片输出38KHz的方波。3-2238KHz发生电路红外传感避障接收电路如图3-23所示。红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器、整前电路和输出放大电路,灵敏度很高。有时从红外发射管侧面和后面漏出的红外光也会被接收模块探测到,因此,为了防止因这种情况导致小车出现误动作,两个红外发射管是先装了套管的,红外接收模块也是采用金属屏蔽的。图3-23红外传感避障接收电路3.4.3555时基芯片NE555是一个能产生精确定时脉冲的高稳度控制器,其输出驱动电流可达200MV。它主要有两种工作方式:多谐振荡器工作方式和单稳态工作方式时。在多谐振荡器工作方式时,其输出的脉冲占空比由两个外接电阻和一个外接电容确定;在单稳态工作方式时,它的延时时间通过调节一个外接电阻和一个外接电容确定,使得NE555具有很宽的延时时间调节范围,从数微秒到数个小时都可以实现。图3-24是NE555时基芯片的内部框架图。图3-24NE555内部框架图4软件设计软件设计是本次课题的重点之一,也是智能机器车能够现实智能运作的核心所在。软件设计能够把从光敏电阻传感器、红外避障接收电路等各个传感器上收集到的信号数据输入89S52单片机进行处理,并产生相应的反应动作,控制电机的运作,从面实现智能机器车的智能化运作。4.1软件设计框图系统启动后,小车一直处于自动寻迹和寻找障碍信号的状态中,当避障信号和遥控信号任何一个信号的传感器收集到外界信息时,通过单片机的处理后输出信号给电机,完成相应的动作。其主程序流程图如4-1所示。该主程序包括了红外避障模块、遥控模块和自动寻迹模块这三大模块的主要程序框图。开始开始各端口的初始化对按键进行查询向前键按下?NY进行寻迹行驶程序是否进行遥控控制?方向行驶避障控制?避障控制?停止结束YYYNNN图4-1主程序框图4.2各模块源程序各模块源程序附上了自动寻迹模块源程序、红外避障模块源程序和红外遥控模块源程序。这些程序与系统的硬件相配合,完整的构成了智能机器车的主体功能。4.2.1自动寻迹模块源程序该程序实现的是智能机器车的自动寻迹功能。#include"main.h"voiddelay(uintn){while(n)n--;}voidlight_control(ucharop)//转向灯控制子程序{P1|=0X04;P0=op;P1&=0XFB;}voidcontrol(ucharn,ucharstate,ucharlight){uchari;light_control(light);//转向指示灯P2=state;//行使方向改变for(i=n;i>0;i--){delay(2000);}P2=state5;delay(1000);light_control(light_off);//关闭P2=state1;delay(2000);}/*********************************光敏电阻分布接口车身从左到右的应的IO为p03,p04,p05,p06,p07;*********************************/voidscanf_obj(void)//寻迹和测障碍物程序{uchartemp=0,temp1=0,temp3=0;cs_245=0;temp1=P2;temp=P0;cs_245=1;if((temp&0x70)!=0x70){if((temp&0x30)==0x30){control(1,state3,left_light);}//左外边检测到黑线,左转elseif((temp&0x60)==0x60){control(1,state2,right_light);}//右外边检测到黑线,右转elseif((temp&0x08)==0x08){control(2,state3,left_light);}//左内边检测到黑线,左转elseif((temp&0x80)==0x80){control(2,state2,right_light);}//右内边检测到黑线,右转}P2=temp1;}main(){delay(40000);P2&=0x0f;light_control(light_off);control(3,state1,light_off);*********************************/voidscanf_obj(void)//寻迹和测障碍物程序{uchartemp=0,temp1=0,temp3=0;cs_245=0;temp1=P2;temp=P0;cs_245=1;if((temp&0x70)!=0x70){if((temp&0x30)==0x30){control(1,state3,left_light);}//左外边检测到黑线,左转elseif((temp&0x60)==0x60){control(1,state2,right_light);}//右外边检测到黑线,右转elseif((temp&0x08)==0x08){control(2,state3,left_light);}//左内边检测到黑线,左转elseif((temp&0x80)==0x80){control(2,state2,right_light);}//右内边检测到黑线,右转}P2=temp1;}main(){delay(40000);P2&=0x0f;light_control(light_off);control(3,state1,light_off);while(1){P2=state1;delay(1000);scanf_obj();if(!run)break;}}#include"reg52.h"#defineucharunsignedchar#defineuintunsignedint#definestate10X5F//前进#definestate20X4F//右转#definestate30X1F//左转#definestate40X0F//后退#definestate50XfF//停车#definelight_off0x0f//关转向灯#defineleft_light0X1F//左转向灯#defineright_light0X2F//右转向灯#defineback_light0XcF//刹车灯#definefront_light0x3f//前灯#definelight_on0xff//开所有灯sbitcs_245=P1^1;//5路光敏信号读入sbitcs_573=P1^2;//转向灯控制bitbdatarun=1;uchardatac=0;4.2.2红外避障模块源程序该程序实现的是智能机器的红外避障功能。/************************************程序名称:小车避障程序程序说明:硬件原理,小车左右两个红外二极管发射38KHz载波的信号(P02,P03),一个一体化的红外接收头接收载波信号(p32)。/****************************红外线接收子程序****************************/#include"main.h"voidinfrared_ray()interrupt0using3{flage=0x01;display_flage=1;IE&=0Xfe;//EX0=0;}//延时子程序voiddelay(uintn){while(--n);}voidInit0(void){IE|=0X80;//EA=1;TCON|=0x01;//IT0=1;}voidseng_wave(uchartimer,bitn)//timer->通过载波发射信号的时间,n->左右发射管的选择{uchari;P1|=0X04;//ledcs=1;IE|=0X01;//EX0=1;P0|=0x04;for(i=timer;i>0;i--){if(n)P0^=0x08;//右发射管通过载波发射信号elseP0^=0x04;//左发射管通过载波发射信号delay(10000);}P1&=0Xfb;//ledcs=0;IE&=0Xfe;//EX0=0;}voidlight_control(ucharop)//转向灯控制子程序{P1|=0X04;P0=op;P1&=0XFB;}Voidcontrol(ucharn,ucharstate,ucharlight){uchari;light_control(light);//转向指示灯P2=state;//行使方向改变for(i=n;i>0;i--){delay(5000);}P2=state5;delay(2000);light_control(light_off);//关闭P2=state1;}voidmove_car(void){uchartemp=0x00;/*检测程序段*///左边红外管发射seng_wave(2,left_infrare);if(flage==0x01){temp|=0x01;flage=0x00;}//右边红外管发射seng_wave(2,right_infrare);if(flage==0x01){temp|=0x02;flage=0x00;}/*控制程序段*///左边有障碍物,右转if(temp==0x01){control(5,state2,right_light);}//右边有障碍物,左转elseif(temp==0x02){control(5,state3,left_light);}//两个方向都有障碍物,后退,右转elseif(temp==0x03){control(10,state4,back_light);control(5,state2,right_light);}temp=0x00;}voidmain(void){uchardis_flage=0x00;Init0();P1|=0X04;//ledcs=1;P0=0xFf;P1&=0XFB;LCMInit();//LCM初始化DisplayListChar(0,0,14,Product,true);P0=0xFf;P1&=0XFB;LCMInit();//LCM初始化DisplayListChar(0,0,14,Product,true);DisplayListChar(0,1,15,webcom,false);delay(50000);WriteCommandLCM(0x01,1);//显示清屏delay(100);DisplayListChar(0,0,14,talk1,false);DisplayListChar(0,1,13,talk2,false);while(1){move_car();if((display_flage==0x01)&&(dis_flage==0x00)){P1|=0X04;//ledcs=1;P0=0x0f;P1&=0XFB;dis_flage=0x01;WriteCommandLCM(0x01,1);//显示清屏delay(100);DisplayListChar(0,0,10,talk3,false);DisplayListChar(0,1,11,talk4,false);}delay(20000);}}#include"reg52.h"#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineleft_infrare0#defineright_infrare1ucharflage=0x00;uchardisplay_flage=0x00;#definestate10X5F//前进#definestate20X4F//右转#definestate30X1F//左转#definestate40X0F//后退#definestate50XfF//停车#definelight_off0x0f//关转向灯#defineleft_light0X1F//左转向灯#defineright_light0X2F//右转向灯#defineback_light0XcF//刹车灯#definefront_light0x3f//前灯#definelight_on0xff//开所有灯#definetrue1#definefalse0ucharcodeProduct[]={"Create-RBcar"};ucharcodewebcom[]={"www.create.cc"};ucharcodetalk1[]={"Mastor:please"};//14charactersucharcodetalk2[]={"touchmyhead"};//12charactersucharcodetalk3[]={"thankyou!"};//10charactersucharcodetalk4[]={"I'mrunning"};//11charactersexternvoidLCMInit(void);externvoidWriteCommandLCM(unsignedcharWCLCM,BuysC);//BuysC为0时忽略忙检测externvoidDisplayListChar(ucharX,ucharY,ucharListLength,uchar*DData,ucharn);/***************************************sbitledcs=P1^2;//74H573的片选信号sbitleft_led=P0^2;//左红外发射管sbitright_led=P0^3;//右红外发射管#include<REG52.h>sbitLCM_RS=P1^5;//定义引脚sbitLCM_RW=P1^6;sbitLCM_E=P1^7;#defineLCM_DataP0#defineBusy0x80//用于检测LCM状态字中的Busy标识#defineucharunsignedchar#definetrue1#definefalse0#defineled_on(){ledCS=1;P0=0xff;ledCS=0;}#defineled_off(){ledCS=1;P0=0x00;ledCS=0;}ucharcodeuctech[]={"Create-RBcar"};ucharcodenet[]={"www.create.cc"};sbitledCS=P1^2;voidDelay5Ms(void);voidDelay400Ms(void);//读状态unsignedcharReadStatusLCM(void){LCM_Data=0xFF;LCM_RS=0;LCM_RW=1;LCM_E=0;LCM_E=0;LCM_E=1;while(LCM_Data&Busy);//检测忙信号return(LCM_Data);}//写数据voidWriteDataLCM(unsignedcharWDLCM){ReadStatusLCM();//检测忙LCM_Data=WDLCM;LCM_RS=1;LCM_RW=0;LCM_E=0;//若晶振速度太高可以在这后加小的延时LCM_E=0;//延时LCM_E=0;//延时LCM_E=1;}//写指令voidWriteCommandLCM(unsignedcharWCLCM,BuysC)//BuysC为0时忽略忙检测{if(BuysC)ReadStatusLCM();//根据需要检测忙LCM_Data=WCLCM;LCM_RS=0;LCM_RW=0;LCM_E=0;LCM_E=0;LCM_E=0;//延时LCM_E=1;}//读数据/*unsignedcharReadDataLCM(void){LCM_RS=1;LCM_RW=1;LCM_E=0;LCM_E=0;LCM_E=1;return(LCM_Data);}*/voidLCMInit(void)//LCM初始化{Delay400Ms();LCM_Data=0;WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,1);//显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1);//关闭显示WriteCommandLCM(0x01,1);//显示清屏WriteCommandLCM(0x06,1);//显示光标移动设置WriteCommandLCM(0x0C,1);//显示开及光标设置}//按指定位置显示一个字符voidDisplayOneChar(ucharX,ucharY,ucharDData){Y&=0x1;X&=0xF;//限制X不能大于15,Y不能大于1if(Y)X|=0x40;//当要显示第二行时地址码+0x40;X|=0x80;//算出指令码WriteCommandLCM(X,0);//这里不检测忙信号,发送地址码WriteDataLCM(DData);}//按指定位置显示一串字符(只能写一行);voidDisplayListChar(ucharX,ucharY,ucharListLength,uchar*DData,ucharn){uchari;Y&=0x1;X&=0xF;//限制X不能大于15,Y不能大于1for(i=0;i<ListLength;i++){if(X<=0xF)//X坐标应小于0xF{DisplayOneChar(X,Y,DData[i]);//显示单个字符if(n==true)Delay400Ms();X++;}}}//5ms延时voidDelay5Ms(void){unsignedintTempCyc=5552;while(TempCyc--);}//400ms延时voidDelay400Ms(void){ucharTempCycA=5;unsignedintTempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);};}voidmain(){Delay400Ms();led_off();LCMInit();//LCM初始化DisplayListChar(0,0,14,uctech,true);DisplayListChar(0,1,15,net,false);while(1);4.3.2红外遥控源程序红外遥控源程序实现TC9012对智能机器车的红外遥控功能。此部分源程序如下。/*************************************程序说明:该程序为遥控器键值测试程序当单片机接收到正确的键值,通过LCD显示,显示的键值为十进制**************************************/#include"main.h"voiddelay(uintn){while(--n);}voidaccept(void)interrupt2using3{uchari=0;uchark=0;uchardatacode_L=0;uchardatacode_H=0;EX1=0;for(i=0;i<4;i++)//重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序{DELAY_1();//调用882微秒延时子程序if(input)//延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序{gotoreti;}}//以上完成对遥控信号的9000微秒的初始低电平信号的识别。do{;}while(!input);//等待高电平避开9毫秒低电平引导脉冲DELAY_2();//延时4.74毫秒避开4.5毫秒的结果码for(i=0;i<16;i++)//忽略前16位系统识别码{do{;}while(!input);//等待地址码第一位的高电平信号DELAY_1();//高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态if(input){DELAY_3();}//检测到高电平1的话,延时1毫秒等待脉冲高电平结束}for(k=0;k<8;k++)//接收一字节的原码{do{;}while(!input);//等待地址码第一位的高电平信号DELAY_1();if(input){DELAY_3();//为1延时code_L^=0x80;}else{code_L&=0x7f;}if(k<7)code_L>>=1;}for(i=0;i<8;i++)//接收一字节的反码{do{;}while(!input);//等待地址码第一位的高电平信号DELAY_1();if(input){DELAY_3();//为1延时code_H^=0x80;}else{code_H&=0x7f;}if(i<7)code_H>>=1;}if(code_H==(~code_L))//如果不等表示接收数据发生错误,放弃{yk_code=code_L;yk_ok=1;}reti:EX1=1;}voidInit_T(void){EA=1;EX1=1;IT1=1;}voidDisdata_switch(ucharDat){if(Dat>0x30){dis_data[1]='f';dis_data[0]='f';}else{dis_data[0]=(Dat/10)|0x30;dis_data[1]=(Dat%10)|0x30;}}voidmain(){Init_T();led_off();LCMInit();DisplayListChar(0,0,13,testname,true);DisplayListChar(0,1,8,temp,false);//while(1);while(1){if(yk_ok){Disdata_switch(yk_code);yk_ok=0;}delay(255);DisplayListChar(8,1,2,dis_data,false);}}5制作与调试在对硬件选择和软件设计的步骤完成后,本次课题设计进入制作与调试的阶段。制作与调试是对智能机器车的制作与测试阶段,在这个阶段,采用的是分模块制作、调试的方法,即分别对自动寻迹模块、避障模块和遥控模块进行制作与调试,再整合系统的方法。5.1使用的仪器仪表和软件本部分需要使用到的仪器仪表和软件包括有:数字万用表单片机仿真器烧写器直流稳压稳流电源编译软件数字万用表用于测量电压、电阻等数值;单片机仿真器用于对编写好的程序进行上机调试,验证程序的可行性、正确性和执行性;烧写器与编译软件把经上机调试的程序下载到89S52单片机上,本课题采用的是具有可在线编程功能的ISP下载线和EASY51PRO软件作为下载工具。直流稳压稳流电源用于给智能机器车进行充电。5.2软件的调试软件的调试是利用单片机仿真器在计算机上实现已编程序的各项功能,检测各个程序能否达到预定的目标。在本次设计中,由于各个模块存在独立性,因此采用各个模块先进行单独调试,如果各个程序功能都能实现后,再进行综合调试的方法。例如,在自动寻迹模块的调试过程中,先对其进行单独的调试,当该程序能达到各项既定的功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论