版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
唐山学院毕业设计设计题目:智能消防小车设计与实现系别:智能与信息工程学院班级:12电气工程及其自动化(2)班姓名:指导教师:2016年6月1日智能消防小车设计与实现摘要本智能消防小车采用STC89C52单片机为主控,由火焰传感器、避障传感器、3路寻线传感器和电机等器件组装而成。小车可以实现自动寻找火源、自动靠近火源和自动灭火等设计的核心功能。除此之外,小车还可以实现在指定区域内行驶,当遇到障碍物时,能避开障碍物等功能。3路寻线模块是由反射式光电传感器和比较器组成,当采集到信号时会传送给单片机进行数据处理;避障模块主要是由红外避障传感器构成,通过发射器发射红外光,当被接收器接收到时,证明前方有障碍物;灭火模块由升压电路和灭火风扇组成,再以L293D为核心的电机驱动模块作为电机驱动电路,完成灭火功能。程序设计采用的是C51编程,将各个模块组装在一起后,结合程序,通过单片机的控制,最终完成小车的设计。本设计详细地介绍了各传感器的原理和特点,以及STC公司所生产的STC89C52的性能和应用。并在分析智能消防小车灭火的基础上,进一步指出设计的不足,然后进行改进。关键词:单片机传感器避障灭火DesignandRealizationofintelligentfirecontrolcarAbstractTheintelligentfirecaradoptsSTC89C52single-chipmicrocomputerasthemaster,bytheflamesensor,obstacleavoidancesensor,3roadlinedevicessuchassensorsandmotorassembled.Carcanrealizeautomaticlookingforfire,automaticnearthefiresourceandthedesignofthecorefunctionssuchasautomaticfireextinguishing.Inaddition,thecarcanalsobeimplementedinthedesignatedarea,whenfacedwithobstacles,canavoidobstacles,andotherfunctions.3roadtrackingmoduleiscomposedofreflectiontypephotoelectricsensorandcomparator,whencollectedsignalstransmittedtothemicrocontrollerfordataprocessing;Obstacleavoidancemodulemainlyconsistsofinfraredsensorofobstacleavoidance,throughinfraredtransmitterlaunch,whenthereceiver,thenprovetheobstaclesahead;Fireextinguishingmoduleiscomposedofboostercircuitandfirefan,againwithacoreofL293Dmotordrivermoduleasamotordrivecircuit,completefunctionoffire.ProgrammingusingC51programming,aftervariousmodulesassembledtogether,combiningwiththeprogram,throughtheMCUcontrol,finallycompletedthedesignofthecar.Thisdesignwereintroducedindetail,theprinciplesandcharacteristicsofvarioussensors,aswellasonSTCcompanyproducesSTC89C52performanceandapplication.Andonthebasisoftheanalysisofintelligentfirecarfire,furtherpointsouttheshortcomingsofthedesign,andthentoimprove.Keywords:singlechipmircocomputer;sensor;obstacleavoidence;firefighting目录TOC\o"1-3"\h\u140581引言 引言1.1设计目的及意义在各种灾害中,对公共安全和社会发展危害最大的,且最常见、最普遍的,火灾毫无疑问是其中之一。无论是在农村还是在城市都会出现不同程度的火灾,尤其是在城市,随着中国城镇化速度的加快,火灾的类型和程度出现了变化。为了更好地解决这些问题,提高灭火工具的功能就成了不可回避的问题,而在灭火工具中能应对较大火灾非常有效工具无疑是消防车。消防车是人们用于灭火、辅助灭火或消防救援的机动消防装备,是按照不同施救对象和灭火战斗需要而设计制造的适于消防人员乘用、装备各类消防工具或灭火剂的专用车辆,已成为消防队的主要装备[2]。随着科技的飞速发展,自动化和智能化技术越来越普及,各类高科技也广泛应用于智能车辆和机器人制造领域。智能消防小车的发展主要集中在自动化控制领域,该智能车辆是一个将计算机、通信、自动控制和人工智能等领域的技术集于一身,综合了许多学科领域的知识,而且涉及到今天许多前沿的科学知识。现在,许多的院校和协会开设了各种形式的电子设计竞赛,这种竞赛既可以提高学生的动手能力,又可以使学生从实践中更加牢固地掌握理论知识,更重要的是使学生在未来的职场中脱颖而出。最近几年,以智能小车为题的设计出现的频率较高,因此,智能小车的设计受到许多老师和学生的青睐,越来越多的毕业生选择智能小车作为毕业设计题目。本设计是以STC89C52芯片为核心,利用光电传感器检测、火焰检测和电机驱动等技术,完成使小车自动寻找火源、避开障碍物以及自动灭火等功能[3]。除此之外,设计的本身更注重基础性和实用性,以本研究为基础可以进行不同的拓展和改进使之功能更加全面与使用。该智能车的模型不仅为未来的消防车发展提供了一种参考和思路,也是适应于我国智能车辆的发展。1.2国内外发展现状及前景我国智能消防车辆从改革开放时期的全部依靠进口,之后随着我国汽车工业整体技术水平的提升,消防车的生产取得了飞速的发展。但我国在智能车辆的研究领域与国外的发达国家仍有一定的差距,尤其是大型的智能车辆(如大型智能消防车)基本依靠进口,目前国内无法生独立生产。由于智能车辆的研究会促进汽车工业及其他相关产业的发展,所以其中蕴涵着巨大的市场潜力。我国科技部则于2002年正式启动了“十五”科技攻关计划重大项目[5],联合有关的研究机构、汽车厂商、高等院校等,发挥各自的长处,力争与发达国家进一步拉近在智能车辆系统领域的差距,尽快将这一潜在市场开发出来[6]。美、欧等西方发达国家十分重视智能车的研究和发展,亚洲的日本也对智能车的发展给予了较大的关注,他们都投入了大量的人力、物力和财力。美国开始组织实施智能车辆先导(intelligentvehicleinitiative,IVI)计划,欧洲提出公路安全行动计划(roadsafetyactionprogram,RSAP),日本提出超级智能车辆系统[7]。更值得注意的是,智能消防车的发展较为迅速,美欧等发达国家正将智能消防车朝着节水化、轻型化、智能化、多用化方向发展,依照这个趋势可预见未来智能车辆系统会有一个持续稳定的研究和开发前景。随着科技和交通系统的发展,世界各国都在将智能消防车作为重点研究方向,尤其在中国这个老龄化不断加剧的国家,为了人们在生活中更加方便,尽可能地减少火灾对人员的伤害,对智能消防车辆的各种安全要求会不断地提高。因此,作为对智能消防车辆的研究的基础,智能消防小车的研究会不断地得到重视,且具有极大的开发潜力。在可预见的未来,人们对智能消防车辆的研究将是一个重要的研究方向,而且是未来人类发展的必不可少的一部分,其也将继续推动着人类的进步。1.3研究内容及预期结果设计制作一个智能消防小车模型,能实现在指定区域内避障、灭火工作。用蜡烛模拟火源,随机分布在场地中。基本内容:(1)智能小车从起始点区域启动,不能超出指定的区域(由黑线围起)。(2)在指定区域场地(非起始位置)随机出现2个火源,小车能自动发现火源,并主动靠近火源。(3)能够并扑灭发现的2个火焰,灭火完毕后小车可以停留在指定区域。(4)如果小车在行进途中发现障碍物,小车能主动调整躲开。为实现主要目标及小车的功能,本设计重点研究以下几个方面:智能消防小车的探测系统:探测决定着是否能正常行进,正常行进决定着是否能成功实现灭火。小车如何在行驶过程中发现障碍物,并避开障碍物,以及如何准确检测火源和实现灭火。小车的驱动系统:小车要实现在指定区域行驶,并准确的达到火源位置,此外,还要实现电机驱动风扇灭火。小车的控制系统:在行驶过程中,小车要求不能超出指定区域,这需要小车的探测系统和驱动系统相配合,即在单片机的控制下完成该功能。2设计方案2.1设计方案选择2.1.1CPU芯片选择方案一:选择采用STC公司生产的STC12C5612AD做主控,其内部ROM为12K,引脚共28个,这款芯片具有高速、低功耗、超强抗干扰等特点。此外体积小、所占空间小、更节省材料,使小车更精致。但是,其通用I/O口较少,多功能端口也较少,无法满足对小车功能的实现,除此之外,其晶振频率范围为5.2MHz~6.8MHz,相比一般的单片机晶振较低。方案二:采用STC89C52做主控,其是STC公司生产的一款低功耗、高性能8位微控制器,带有8K在系统可编程Flash存储器,40个引脚,32个通用I/O口。其晶振工作频率为0~40MHz。STC89C52使用经典的MCS-51内核,通过对该芯片的改进使其具备了许多51单片机不具备的功能。在芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为许多嵌入式控制应用系统提供高灵活、超有效的解决方案。综合成本、参数、性能等条件考虑,采用方案二,选择使用STC89C52。2.1.2小车底盘选择小车的底盘包括主板,电机,车轮等,是智能小车的基本框架。因此,底盘的选择对小车制作的成功与否至关重要。方案一:主板采用强度高、韧性度好、使用方便的亚克力板材。电机采用黄色的TT马达,车轮采用两个橡胶轮加一个万向轮,三个车轮行驶。亚克力板韧性满足要求,且质量较轻,适合做小车主板。TT电机价格便宜,且精确度较高,能确保小车行驶在指定区域内,驱动能力也符合要求,三轮行驶更容易调整方向,使小车行驶更加灵活。方案二:主板采用承重量大的铝合金板,电机采用25mm直流减速电机,车轮有四个85轮子组成。该方案设计的车体虽然硬度大,承载力大,且电机的扭力大。但是车体过于笨重,电机步距精度不高,容易使小车使出指定区域,小车采用四轮驱动,不容易精确地调整方向。此外,车体大部分使用的是金属结构,使小车的成本较高。方案三:主板采用自制光滑的薄木板,电机采用可以采用步距精度为3%~5%的42步进电机,车轮采用履带式车轮。该方案相对节省成本,且电机精度较高。但是考虑到木板需要打孔,组装较为麻烦,车体比较粗糙,小车的平衡难以实现,履带式车轮不易改变方向等因素,因此,放弃这种方案。综合成本、简易程度、精度等因素,在上述三种方案中,方案一结构简单、更易安装。因此,选择方案一。2.1.3火焰传感器选择火焰传感器是智能消防小车专门用来搜寻火源的传感器,小车能否实现消防这一功能就取决与火焰传感器对火源的探寻。方案一:采用紫外火焰传感器,紫外火焰传感器能够探测出火源产生的400纳米以下的热辐射。它的体积很小,但敏感角度却很宽,并能快速准确地发现从火焰中发出的弱紫外线(能够探测5米或在稍远处发现香烟点大小的火焰)
。由于本设计场地较小,但火焰传感器检测的范围较为宽泛,故不适合。方案二:采用烟雾传感器,这是一种间接检测火焰的传感器。大部分物质燃烧都会产生烟雾,当烟雾达到一定浓度时传感器就会报警。用该传感器检测火焰有很大的弊端,有些物质燃烧时并不产生烟雾(如天然气、乙醇、甲醇等),并且检测距离较短,传感器必须在烟雾最浓的位置,可见当火焰发生到烟雾浓密时再报警,在有的场合可能为时已晚。考虑到本次设计火源用蜡烛代替,因此不会产生很大的烟雾,所以放弃使用这种方案。方案三:采用远红外火焰传感器,远红外火焰传感器能够探测到波长在700nm~1000nm范围内的红外光,探测角度为60,检测距离范围为0~1m,灵敏度高,适合本次设计所要求的场地范围。综合个方面条件考虑选择方案三。2.1.4避障探测器选择避开障碍物是此次设计的一个重要组成部分,它是小车能正常行驶且能准确的发现火源的保障,小车只有躲避障碍物才能实现后续工作。方案一:超声波避障传感器,超声波传感器应用起来十分简单,安装方便,成本低廉。但是大部分超声波传感器都存在一些缺点,比如,反射、噪音、交叉等问题。本次设计采用的是电机驱动,会使小车产生震动,而且周围也会有噪音。除此之外,由于超声波传感器是一个锥面,检测角度较小、方向性较差,很难根据反射波确定障碍物的高度和具体方位,需安装多个的传感器,因此也会产生信号发射与回收交叉问题。方案二:红外避障传感器,这是一种集发射和接受于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出,有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测到80cm的距离。当然由于红外光的特性,对于不同亮度、不同颜色的物体检测距离不同,白色等较亮的物体检测的距离较长,黑色等较暗的物体检测距离较短。检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。该传感器具有探测距离远、受可见光干扰较小、价格便宜、易于安装、使用方便等特点,比较适用于小车避障、流水线生产等场合。综合以上所述,选择方案二。2.1.5电源选择该设计需要电池供电,所以还需考虑位系统选择合适的电源。方案一:采用220V/12V直流稳压电源适配器,由此适配器得到的电压较为稳定,且负载对电源的影响较小。但是由于适配器需要电线对小车供电,这极大地影响了小车的灵活性,而且小车的避障模块容易将电线判断为障碍物,不利于小车的行驶。方案二:采用普通干电池,取四节干电池压降至5V后给单片机(主控板)供电,另取六节干电池给电机和传感器供电。这样,由电机带来的电压不稳对主控板的影响就可以消除。但是这电池的数量较多,太占用空间。此外,干电池供电时间不长,更换频率较高,且不利于环保。方案三:采用可充电的锂电池,锂电池体积小,可以反复充电,利用率高,节能环保,其性能符合本次设计的要求。综上考虑,采用方案三。2.2最终设计方案本次设计的基本各功能模块总框图如图2-1所示。图2-1系统的结构框图经过以上的分析与论证,得出了最终的设计方案:采用STC89C52作为主控,主板为亚克力板,电机为TT电机,以及采用红外避障传感器,远红外火焰传感器,可充电锂电池等。2.3小车灭火流程利用电机来驱动小车,使小车可以在一定的空间内运动。小车可以根据自身装有的传感器来检测地面上火院与障碍物,将检测到的信号放大和标准化后传送给STC89C52控制器,中央处理器根据接收到的信号来控制电机及控制器,使小车能够自动寻找火源。同时,红外避障传感器不断地发射光束,对小车行驶方向扫描,当接收到返回来的光束时,证明前方有障碍物,STC89C52控制器将会调用躲避障碍程序使小车绕过障碍物。最后通过火焰传感器完成对火源的寻找,并由STC89C52控制器调用灭火程序,实行灭火。消防小车的基本功能流程图如下图2-2所示。图2-2小车基本功能流程图3系统硬件模块设计3.1主控模块设计3.1.1STC89C52芯片STC89C52是STC公司推出的一款超强抗干扰、加密性强、可在线可编程、高速、低功耗CMOS8位单片机。片内含8KB的可反复擦写Flash只读程序存储器和256bytes的随机数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的STC89C52单片机适合于许多较为复杂控制应用场合。其实物图如图3-1所示。图3-1STC89C52的实物图3.1.2STC89C52的外部结构及特性其外形封装有两种方式:双列直插式40引脚封装(DIP)和方形44引脚封装(PLCC),直插式40引脚封装(DIP)和外部总线结构分别如图3-2和图3-3所示。图3-2STC89C52引脚排列图3-3外部总线STC89C52的40只引脚按其功能来分,可分为三类:电源及时钟引脚、控制引脚、I/O口引脚[8]。(1)电源及时钟引脚VCC(40引脚):接+5V电源;GND(20引脚):接地;XTAL1(19引脚):接外部晶体的一个引脚。CHMOS单片机采用外部时钟信号时,时钟信号由此引脚输入。XTAL2(18引脚):接外部晶体的一个引脚。HMOS单片机采用外部时钟信号时,外部时钟信号由此引脚输入。(2)控制引脚RST/VPD(9引脚):RST是复位信号输入端,接高电平时有效。VPD为本引脚的第二功能,当VCC掉电后,此引脚可接备用电源,低功耗条件下保持内部RAM中的数据。ALE/PROG(30引脚):ALE为地址锁存允许信号,当单片机访问外部存储器时,该引脚的输出信号ALE用于锁存P0口的低8位地址,ALE输出的频率为时钟振荡频率的1/6。PROG为这个引脚的第二功能,对片内EPROM编程时,编程脉冲由该引脚引入。PSEN(29引脚):程序存储器允许输出控制端。输出读外部程序存储器的选通信号。取指令操作期间,PSEN的频率为震荡频率的1/6;若此期间有访问外部数据存储器的操作,则有一个机器周期中的PSEN信号将不出现。EA/VPP(31引脚):EA功能为内外程序存储器选择控制端。当EA=1时,单片机访问内部存储器,当EA=0时,则只访问外部程序存储器。VPP为本引脚的第二功能,在8751单片机片内EPROM编程期间,此引脚引入12V编程电源。(3)I/O口引脚STC89C52的4个8位I/O口的功能说明如下:P0口:P0口是一个双向8位三态I/O口。此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。P0口可以作为输入/输出口,但在实际应用中,常作为地址/数据总线口。应注意,当P0口作为地址/数据总线口使用时,不能再作为输入/输出口使用。P1口:P1口是一个具有内部上拉电阻的8位准双向I/O口,P1口每一位都能作为可编程的输入输出口线,可驱动4个LS型TTL负载。与P0相同,当P1口作为输入口时,应先向其锁存器写入“1”,作输出口使用时,已能对外提供推拉电流负载,外电路无需再接上拉电阻。P2口:P2口是一个具有内部上拉电阻的8位准双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。应当注意,当P2口中的几位作为地址使用时,剩下的P2口不能作为I/O口使用。P3口:P3口是一个具有内部上拉电阻的8位准双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。P3口亦可作为STC89C52特殊功能(第二功能)使用,如下所示:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0输入口)P3.3INT1(外部中断1输入口)P3.4T0(定时器0外部计数输入)P3.5T1(定时器1外部计数输入)P3.6WR(外部数据存储器写选通信号)P3.7RD(外部数据存储器读选通信号)本次设计使用的I/O口较多,P1.0~P1.4是对火焰传感器控制引脚,此次使用了5个火焰传感器,目的是为了能够保证在检测到更广的范围内的火焰。此次设计使用了3路寻线传感器,分别由P1.5、P1.6、P1.7控制右、中、左的检测探头。单片机的P2.0控制左轮电机的正转,P2.1控制左轮电机的反转,P2.2控制右轮电机的正转,P2.3控制右轮电机的反转。电机的正反转是通过引脚输出电平的高低来控制的。避障是本次设计的突出亮点,共使用了4个避障传感器,中间两个,两侧各一个,分别由P3.1(控制右侧避障传感器)、P3.2(控制中间避障传感器)、P3.3(控制中间避障传感器)、P3.4(控制左侧传感器)3.1.3STC89C52内部组成STC89C52单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称MCU。该单片机内包含以下几个部件:一个8位的CPU;一个片内振荡器及时钟电路;8KBROM程序存储器;256字节RAM数据存储器;可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程I/O线(4个8位并行I/O端口);三个16位定时/计数器;一个可编程全双工串行口;8个中断源、2个优先级嵌套中断结构。STC89C52单片机的内部结构如图3-4所示。图3-4STC89C52单片机内部结构框图3.2电机驱动模块设计3.2.1电机的介绍电机是用来驱动小车和灭火风扇的,此次采用驱动小车的电机是TT减速电机(减速比为1:120),灭火风扇采用的是130直流电机。TT减速电机的3V空载转速为50r/min,该电机的特点是效率及可靠性高,工作寿命长,维护简便,应用广泛等。130直流电机是有刷直流电机,该电机的转速为2000~3000r/min,电机的扭力大、工作时间长等特点。这两种电机的实物图分别如图3-5和图3-6所示。图3-5TT减速电机图3-6130直流电机3.2.2驱动模块设计对直流电机进行控制或调速,需要经过直流电机的驱动电路,驱动电路实际上就是一个大功率的放大器。此次电机驱动采用的是L293D双路H桥驱动,L293D是一款单片集成的高电压、高电流、4通道电机驱动,设计用于连接标准DTL或TTL逻辑电平,驱动电感负载(诸如继电线圈、DC和步进电机)和开关功率晶体管等等。
加入多级驱动,COMS超高输入阻抗,对输入信号没有驱动要求,适合各类I/O口。本模块具有体积小,控制方便,过温保护的特点。所用芯片\t"/product/infomation/123460/_blank"L293是SGS公司生产的一种中小电流直流电机专用驱动芯片,属于H桥\t"/product/infomation/123460/_blank"集成电路。其输出电流为1000mA,最高电流2A,最高工作电压36V,可以驱动感性负载,适用于频率5kHz开关应用,共有16个引脚,其中有4个输出引脚,可同时驱动两部直流电机。L293D电机驱动模块电路原理图如图3-7所示。 图3-7L293D电机驱动电路原理图根据图3-7可知,电路图的左右两边分别控制着电机M1、M2,2、7引脚分别是电机M1的正反转控制端,14、10引脚分别是电机M2的正反转控制端,VS提供电机工作所需电压,VCC为5V控制电压。表3-1两台直流电机控制逻辑表电机工作状态正转控制端反转控制端电机M1正转10反转01停止0/10/1电机M2正转10反转01停止0/10/1注:1表示高电平;0表示低电平3.3火焰传感器模块设计火焰传感器是实现灭火功能的关键,所以火焰传感器的好坏对整个系统功能的实现十分重要。本次使用的是YL-38型号的火焰传感器,该传感器可以检测火焰或者波长在760纳米~1100纳米范围内的光源。可以探测的角度为左右,可以通过数字电位器来调节其灵敏度,设有较为固定的螺栓,安装比较方便。该模块使用时应注意:传感器与火源要保持一段距离,防止高温损坏传感器。所以此次设计是将传感器调整为25cm左右,小车开始灭火。此外考虑到小车的高度,火源高度约为10~15cm,设置合适的高度有利于将本次设计的效果发挥到最佳水平。本次设计的火焰传感器电路原理图如图3-8所示。图3-8火焰传感器的电路原理图本模块安装在小车的正面(4个),火焰传感器对火焰最敏感,对普通光也是有反应的,一般用做火焰报警等用途。但当火焰传感器接收到火焰光时,该模块将环境光信号和火焰光信号都转换成电信号,再通过以LM393
芯片为核心的比较器对两个电信号进行比较。检测到火源后输出高电平,触发单片机中断,使单片机调用灭火程序,开始执行灭火。触发中断后小车前方的火焰传感器开启,小车向检测到火源的方向转动,每转动一个角度就进行一次A/D转换,将每次的转换的值记录并取平均值,即为环境光的值,当检测到光线突增时,即正对火源。这种方法可以有效地避免阳光和反光物体的干扰,防止小车造成误判,提高灭火的精度。3.4避障传感器模块设计避障功能是本次设计的一大突出亮点,是实现小车能够准确的寻找和定位火源,以及实现灭火的一个重要环节。因此避障模块的设计要求必须正确、合理、规范。本次设计采用的是E18-D50NK红外避障传感器,该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管。先给发射器经过整流稳压、调制器,通过加调制的发射管发射红外线。当模块检测到前方障碍物信号时,红外线发射回来会被接收管接收,经过LM393比较器处理后,在经过接电源的整流稳压、解调器、时钟逻辑等,电路板上绿色指示灯会亮起(高电平信号),同时输出端口持续输出数字信号(低电平信号)。该模块检测距离2~50cm,检测角度40°,检测距离可以通过模块上的电位器进行调节,当顺时针调节电位器,检测距离增加;逆时针调节电位器,检测距离减少。传感器是进行主动红外线反射,因此障碍物的反射率和形状对探测距离影响较大。其中反射光线强、面积大的(比如黑色)探测距离长;反射光线弱、面积小的(比如白色)探测距离短。使用时应注意,在接线的时候,请避免出现电源和地接错的现象,该操作有可能造成传感器永久性损坏。在电路设计中可以再输出端黄线加上拉电阻10K到5V,再接入单片机检测,会比较稳定,单片机检测可以采用外部硬件中断INT0、INT1等来实现。E18-D50NK红外避障传感器的实物图和接受与发射的原理图分别如图3-9和图3-10所示。图3-9E18-D50NK红外避障传感器实物图 图3-10红外避障传感器发射与接受原理图3.5寻线模块设计该寻线模块是用于检测边界的,本次设计是在一定的区域(用黑色线围成的),小车的行驶不能超过这个区域,这是就要用到寻线模块。本次设计使用的是3路寻线模块(也可称为3路寻迹模块),用于检测黑线边沿。其利用红外光探测,抗干扰能力强,采用TCRT5000传感器,灵敏度可调,性能稳定。工作电压5V,做工精致,带有红色指示灯,设有固定螺栓,安装方便。当遇到白线(或颜色较浅)时输出低电平,遇到黑色时输出高电平。3路寻线模块相比于1路、2路寻线模块可提高小车的行进速度和探测精度。
本次设计使用的3路寻线模块的原理图如图3-11所示:图3-113路寻线模块电路原理图TCRT5000光电传感器模块是基于TCRT5000红外光电传感器设计的一款红外反射式光电开关。传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠。TCRT5000传感器发射光到白线上,光会反射到TCRT5000传感器的接收端,其就会导通,输出低电平,当TCRT5000传感器发出光到黑线上时,光会被全部吸收,TCRT5000传感器的接收端没有收到任何信号,则不导通,输出高电平。当检测到白线时,LM339比较器的5端口(正向输入)输出0V电压,4端口(反向输入)输出3V电压。当LM339比较器的正向输入端电压低于反向输入端的电压时输出低电平,LED不
亮,表示接收到反射光。当检测到黑线时,LM339比较器的5端口输出5V电压,4端口输出3V电压。此时LM339比较器的正向输入端电压高于反向输入端的电压,输出低电平,LED亮,表示没有接收到反射光。本次设计是当接收到反射光时输出高电平,即检测到白线继续行驶,当没接受到反射光时输出低电平,即检测到黑线停止前进。3.6串行口模块设计串口是实现STC89C52与上位机之间进行接受和发送数据的通信,实现单片机系统与上位机进行通信处理。现在最常使用的是COM1口,也就是常说的RS-232接口,该接口是9针D形连接器。这9针引脚分为两类:一类是基本数据引脚(TXD、RXD、GND),另一类是握手信号(RTS、CTS、DCD、DSR、DTR)。也有部分老式PC机使用的是COM2口,这种25针连接器已经被逐步淘汰。串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。串行口的传送方式有单工、半双工、全双工三种工作方式,有四种工作方式。这里采用的是MAX232芯片来完成接口电平的转换,可以实现TTL电平与RS-232电平双向转换。MAX232内有电压倍增电路和转换电路,仅需外接+5V电源,具体的RS-232电路接线图如图3-12所示:图3-12RS-232电路连接原理图由图可以看出,通过一个高电平VCC将16管脚拉高,使该芯片一直处于工作状态,如果系统需要处于低功耗状态,也可以通过单片机来控制该管脚。工作时将该管脚设置为低电平,需要处于低功耗时将该管脚设置为高电平这样很容易实现控制。在管脚C1+、C1-、C2+、C2-、V+和V-分别放置0.1uf电容实现充电作用,满足相应的充电电泵的要求,管脚T1OUT、TIN、R1OUT和RIN分别是232转换的输入/输出脚,实现单片机的TTL电平与上位机的接口电平的转换。考虑到减小电源的干扰,还需要在芯片的电源输入管脚加一个104pf的电容来实现滤波,以减小输入端受到的干扰。但应注意:无论是单片机之间还是单片机和PC之间,串行通信双方的波特率必须相同。3.7小车的整体硬件设计经过以上几部分的硬件设计,最终得出了小车的总体硬件设计结果,其主要有3路边沿寻线模块,火焰传感器及灭火模块,避障模块等。小车设计出来从车体上来看比较美观,小车的各方面性能也比较好,此次小车硬件设计比较接近理想设计目标。图3-13为本次设计的智能小车的整体外观图。图3-13小车整体外观设计图4系统软件设计4.1编程语言介绍计算机可以辨别和接受的语言叫做程序设计语言。程序设计语言分为三类:机器语言、汇编语言、高级语言。C语言是一种应用广泛,并且实现灵活的一种高级语言,用C语言编出来的程序,可以在很多平台上运行,可移植性强。例如,计算机操作系统等大型软件都可以用C语言来完成编写[13]。除此之外,我们今天所用的许多聊天工具也是用C语言来实现。C语言有以下特点:能完成低级语言的大多数功能;图形功能强;运算符和数据结构丰富;语法规则较为灵活,程序设计较为宽松;生成高质量目标代码,程序执行效率高。C语言既有高级语言的特点,又具有汇编语言的特点,集高级语言与低级语言的优点与一身;既是一个成功的系统设计语言,又是一个实用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序,是一种受欢迎、应用广泛的程序设计语言。本次设计采用的是C51语言,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,其功能与常用的C语言大体相同。与汇编相比,C51语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。建议在使用C语言编程时,先使用汇编语言编程,这样会对C语言编程有更深刻的理解。4.2所使用软件介绍4.2.1KeiluVision4软件概述KeiluVision4集成开发环境是Keil公司开发的Windows环境下专用于8051单片机程序编辑、编译与调试的集成开发环境。Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。如果使用C语言编程,那么Keil是众多编译器中最好的选择,即便是使用较为复杂的汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会使人感到效率很高。运行Keil软件需要在较为早前的操作系统中使用,Keil软件与这些系统兼容性较好,若在新操作系统下运行,需要考虑兼容性问题。KeiluVision4开发软件刚打开时截图如图4-1所示。图4-1KeiluVision4开发软件截图KeiluVision4集成开发环境大体上可以分为程序编辑、编译用户界面和程序调试界面。汇编语言和C语言程序均可在该环境下进行处理,极大的方便了用户,且其所带的调试界面节省了购买硬件仿真设备的费用。此外,KeiluVision4中还提供了文件查找、版本控制等使用工具。KeiluVision4的运行界面如图4-2所示。图4-2KeiluVision4软件运行界面4.2.2官方STC_ISP下载软件概述STC_ISP下载软件是STC公司研发的一款单片机下载编程烧录软件,可以适用于其公司生产的STC系列单片机型号的下载。该软件除了包含与下载有关的功能外,新增了波特率的计算、定时器、软件延迟计算器、头文件、STC仿真器设置等工具,极大地方便了编程。该软件不需要安装,可以直接在电脑上打开运行,使用简单,已被广泛采用。STC_ISP下载软件打开后的界面如图4-3所示。图4-3STC_ISP下载软件界面STC_ISP下载过程说明如下:第一步:芯片型号的选择。根据单片机的型号的标注,选择相对应的型号第二步:COM选择,版本不一的STC-ISP不能够自己扫描COM的,请打开电脑设备管理器--端口号进行查看,选择相对应的COM口。第三步:打开您所需要的下载到单片机的hex文件。第四步:点击下载。下载之前要检查各模块是否会占用下载端口,一定要排除各方面的干扰,只有在确保无误的情况下才能进行下载。同时应注意,在下载的同时禁止将单片机的正负极接反,这样容易将芯片烧坏。此外,给单片机烧录前,需要给单片机重新上电。4.3各模块程序设计4.3.1寻线模块子程序为了实现小车能够在指定区域内行驶,本设计采用黑色胶带作为边界,使用两个电机分别安装在小车的两个前轮处。当智能车需要转向时,由电机驱动两个车轮实现小车转弯;当小车在指定区域内行驶时,一直按直线行驶,触碰到边界线(黑色线围成的)调整方向。图4-4为边界寻线程序流程图。图4-4边界寻线程序流程图寻线模块采用的是3路寻线模块,此3路寻线模块能提高小车的行进速度,且精度高。当小车的左侧触碰黑线时最左侧的传感器将无法接收到其发出的信号,电平将会发生变化。小车的CPU中央处理器检测到这种变化时,立即作出判断是左侧触碰黑线,调用相应的程序,使小车先后退再向右调整方向,保证小车正常行驶。当小车的右侧触碰黑线时,则会做出与左侧碰线相反的调整,避免小车驶离指定区域。当CPU检测到3路传感器引发的电平变化相同时,则证明小车是从正面垂直触碰到边界线,此时小车先向后退,然后可向左或向右调整方向,保证小车能在指定的区域正常行驶。4.3.2躲避障碍物子程序本次使用的E18-D50NK红外避障传感器由接收器和发射器组成,在小车行驶的过程中,发射器不断地发出射出光束,在其监测范围内对小车形式的前方进行扫描,当小车接收到反射回回来的光束时,则说明小车的前方有障碍物。此时小车上的CPU将会调用相应的避障程序,使小车作出向右或向左的调整方式。当没有检测到障碍物时,CPU调用控制E18-D50NK红外避障传感器的程序,继续寻找障碍物;当小车遇到障碍物,小车就会调用相应的程序来进行调整方向,在调整方向时,小车会根据火源的所在位置及方向,进行转弯方向的调整,然后绕开障碍物。躲避障碍物的程序流程图如图4-5所示。图4-5小车避障程序流程图这部分程序设计主要是实现小车在行进过程中不触碰到障碍物,在程序设计时,会主要考虑到如何控制电机实现转弯和前进、后退等动作。在实现该动作的同时也会注意到使行进路程最优化,比如障碍物的左侧检测到火源,那么小车将转弯去左侧,而不是从右侧绕过去找火源。4.3.3小车灭火子程序灭火功能是这次设计的核心内容,当火焰传感器检测到火源时,火焰传感器模块会将模拟信号转换成数字信号发送到CPU,CPU调用相应驱动的程序,首先使电机驱动小车到达火源处,然后再调用灭火程序,驱动灭火风扇,进行灭火。如果在指定区域内出现多个火源,可根据火焰传感器检测到火源的先后顺序进行灭火处理,一般采用就近原则。离火源越近,探测的红外线越弱,CPU所接受到的数字信号数值就越大。反之,离火源越远,探测的红外线越强,CPU所接受到的数字信号数值就越小。通过依据检测火源距离来决定灭火次序,最总完成灭火任务。小车灭火的程序流程图如图4-6所示。图4-6小车灭火程序流程图在此次设计中,这部分程序主要是是执行灭火,在灭火过程中要注意实现灭火的顺序(通过距离判断优先级),逐个进行灭火。在灭火的过程中为了实现有效、准确的灭火,CPU会调用相应的程序控制电机的转速,进而控制风速,进行灭火。在整个设计中灭火是作为中心来研究,因此,灭火子程序也是所有程序的核心。5系统的调试与分析5.1小车的制作过程该智能小车制作大约经过了40天的时间,在此过程中需要用到各种的器件和实验设备,此外,还遇到了许多以前没遇过的问题。(1)准备工作。经过几天的准备,把所需要的器件都准备好,这些器件有些是自己买的,有些是从实验老师那借的,还有一部分是同学给的。(2)初步焊接。此次所使用的火焰传感器需要进行组合,因此就需要焊接一个将它们联合起来的电路,所需要的器材都是从实验老师借用的,而且还得到了实验老师的指导。(3)器件组合。本次设计用到了火焰传感器、避障传感器、3路边沿寻线传感器以及电机等。首先,将车轮、主板、电机等构成基本框架的搭建好。然后,再将实现小车功能的传感器安装上去,这小车的大体结构就已经构成了。最后,用杜邦线把各个模块与单片机连接起来,这样就完成了小车的全部硬件组装。(4)程序编写。程序是小车能够实现各项功能的核心,程序的编写是重中之重。此次程序编写,首先是从网上下载一些类似功能的程序,将这些程序中的某单一功能拿出来测试、修改,得到符合本次设计要求的程序。然后将这些符合要求的程序进行“组合”得到本次设计的所需要的程序。(5)功能测试。但所有的硬件和软件的设计都完成之后,就开始了小车的功能测试。小车的测试使用黑色胶带围城边界线,小车需要在其中完成寻线、避障、灭火等功能。5.2智能小车的调试5.2.1调试中问题的解决本次设计遇到了许多书本上和平时试验中没有遇到的问题,这里仅将一些主要的、具有代表性的问题列出来:(1)当对单片机STC89C52进行程序下载时,无法下载,总是出现故障。针对这种问题,首先要分析问题出现时的提示,然后根据提示再进一步对问题进行研究。提示是下载通道被占用,通过对各模块的与STC89C52连接出的测试。最后得出问题的原因,由于下载通道与外部3路边沿寻线传感器在工作时都占用同一个通道,故当下载时无法进行下载。(2)小车进行避障时,中间的障碍物有时无法感应到,导致碰撞障碍物。当出现这个问题时,刚开始想到的是避障传感器探测距离太短,小车没来得及反应。于是将传感器的探测距离进一步调大,但是发现小车依然无法躲避中间的障碍物,但是将传感器放到中间和两侧发现小车的避障效果不同。于是,便知道出现该问题的原因:小车的前方出现了盲区。同时也得到了解决方法:在中间增加一个避障传感器。(3)当小车进行灭火时,风扇不动,而当小车不进行灭火时,风扇也有时会转动。对于出现的这个问题,有些不知所措,但经过查阅资料、询问老师,得到了一些可能的原因,比如:程序编写的错误,电机等部件的问题,自然光的干扰,火光不够亮等。最后经过论证,排除了程序编写的错误,电机等部件的问题这两个原因。是由于自然光的干扰,于是我加了黑色的塑料管套在火焰传感器上,就极大的减少了自然光的干扰。但同时也减少了火光的进入,为解决新增问题,增加了火焰传感器的数量。(4)在小车行驶的时候,小车会出现“越界”现象。小车的“越界”是由于传感器对颜色分辨不清造成的,因为此次是黑色胶带为边界线,当地板的颜色较重或接近黑色时,传感器则较难分辨,于是就会出现“越界”现象。这个虽然比起前几个问题,较为常规,但是其主要在于有程序的复杂性和传感器的灵敏度的调节。这个问题的解决需要有较强的识程序、编程序的能力,经过对这部分程序反复的修改,最终解决从对传感器的程序编写得到了突破。在对传感器灵敏度的调节上,也进行了一番努力,一次次的进行调节、测试。最终解决了这个问题。5.2.2调试结果本次测试是在学校实验室内,场地是由黑色胶带围起的,该区域中有随机分布的障碍物,以及用蜡烛模拟的火源。首先对各部件进行仔细地检查。主板通电前检查:各模块安装完毕后,我们可以直观检查电路各部分连接线是否正确,检查电源、地线、信号线、元器件引脚之间有无短路,各器件之间有无接错现象。通电检查:给电机通电,观察电机是否工作正常。电机正常工作时,驱工作电流为320
mA,电压为5.4V;前驱电机工作电流为180mA,电压为5.41V。给主控板通电,观察电路各部分器件有无异常现象。当准备工作就绪后,小车可从任一个角落出发。首先,小车会通过3路边沿检测模块避开黑色胶带围成的边界;然后,当小车遇到障碍物时,小车上的红外避障传感器将检测到的信息传送到CPU,使CPU调用相应的避障程序,避开障碍物;当小车上的火焰传感器检测到火源时,CPU会接收到火焰传感器模块发过来的信号,通过对火焰的距离做出判断,进而得出最近的火源,再调用相应的程序驱动电机和灭火风扇,进行优先灭火。当该火源被扑灭后,寻找下一个火源,直到把所有火源都进行扑灭。通过测试,小车的已经满足预期目标。测试场地如图5-1所示。图5-1消防小车测试图5.2.3调试的分析与改进针对以上出现的问题,这里做一下简单的分析。这些问题的出现,起初是对这个题目了解不够深刻,然后准备工作不足以及设计时太过于依靠原有的研究结果。鉴于这些原因,作出以下改进和优化:(1)对待一个新的、未做过的是课题或设计时,首先要认真分析该题目的要求,理解题目的隐含的条件,然后对该题目进行剖析,发现其中能够联系到自己所学的知识以及曾经研究所得到的可以利用的结果。(2)在设计时,各部分是组成整体的基本元素,因此要对各部分的功能非常了解,这样在设计时不会感到无从下手。小车的设计更加突出其智能的特点,所以本次设计将会在传感器的使用和程序的编写上进一步优化,以体现出智能消防小车的智能化特点。(3)当出现问题时,尤其是以前未曾遇到的问题,要谨慎对待,首先要认真分析问题的根源,尽可能的找到解决方法,当自己实在无法解决时,要寻找老师或其他技术人员的帮助。最后,一定要把问题彻底解决并且理解,防止以后再出现类似问题后而不知所措。此次小车的设计,有许多问题就可以进行总结,为以后工作做铺垫。5.3小车的优缺点分析本次设计的智能消防小车,重点突出了小车的边沿寻线、避障、灭火等功能。同时小车也具有了许多突出优点。5.3.1小车的优点智能消防小车的优点:小车的样式美观、大方,车体适中。采用三个车轮,转向灵活。电源采用的是可充电的锂电池,该电池可重复使用,且使用时间长,利于环境保护。小车的车体采用零件组合的设计方法,小车上的许多部件是可以拆卸的,而且拆卸后的部件依然可以在其他方能面使用,这样器件的利用率就大大提高了。5.3.2小车的缺点虽然小车拥有许多的优点,但同时也存在缺点:采用的各种避障传感器、寻线传感器和火焰传感器,且数量较多,这样增加了小车的成本。此外,小车不能太阳光较强的环境下测试,即测试环境受到限制。结论根据本次设计的要求,我首先认真的阅读了许多相关的资料,并且系统的分析了题目的要求。然后,紧接着又学习了Protel99软件绘制原理图和51系列单片机的使用。最后,独立的完成了智能消防小车的设计。本学期的智能消防小车毕业设计是培养学生的动手能力和独立解决问题的能力,针对此次的毕设题目,一开始完全没有思路,脑海中没有相关的印象,无法把学到的知识和实践结合起来,感觉课本学到的知识是一个个独立的整体,没有办法有机的结合起来,使之成为一个完整的整体。后来在参考了相关的示范的论文之后,渐渐有了相关的印象,经过不断的探索,有了思路,而且经过努力通过毕设答辩。通过此次毕设我进一步掌握了Keil软件和STC_ISP下载软件的使用,并且更加熟练了Protel99绘制原理图的方法。在以后的学习中还需多加练习,熟练掌握,为以后的工作做准备。在设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。这次毕业设计让我学会了很多,让我更加注重理论与实践的结合。通过这次毕业设计知识上不但有了重要收获,精神上的丰收更加可喜,而且让我明白了学无止境的道理。最后的成功使自己很有成就感,锻炼了我的独立思考能力,培养了我敢于创新的思想。让我学会了团结同学、互帮互助、在讨论中提炼真知。本次毕业设计将理论与实践相结合,目的是考查了我们对知识的综合运用以及创新设计思维能力以及一个人的严谨态度。回顾这次毕业设计,从拿到题目到交给老师,从理论到实践,我懂得了课本的知识不能死记硬背,必须应用到实践中去。
在这次毕设当中,我做的题目是智能消防小车的设计与实现,涉及到的有程序的编写,传感器的使用,电子电路的设计和电机驱动等知识。从刚开始的懵懵懂懂到最后的深刻理解,我深刻地体会到自己的进步。 谢辞在这篇论文即将完成之际,回顾自己四年的大学生活,在此期间不仅学到很多科学理论,而且还掌握了许多专业技能。更重要的是感受到了唐山学院浓厚的学习氛围,老师的学识渊博,学生的勤奋努力。首先,我在此要衷心地感谢我的指导老师张国旭老师,张老师担任我们系的秘书一职,平时工作比较繁忙,在本学期开学到现在的三个多月里给予我非常多的帮助。在设计过程中先后经过的开题报告、中期审查、论文初审、论文查重、最后修改等环节,张老师都给我非常宝贵的建议。我的毕业设计要求出实物,当然也就要求演示,张老师总是不厌其烦的一次次帮助我在程序上进行修改和调试。张老师不仅担任教学工作,在科研方面也有很大的发展,张老师的敬业精神和在教学方面上的认真态度都值得我学习和敬佩。还有就是要感谢单片机实验老师杨金泉老师,在整个毕设期间杨老师在器件的选择和使用方面给了我很多有价值的建议,并且还赠于我一些智能小车方面的器件。还有往届的学长、学姐们,因为你们建议和帮助,使我更有信心完成自己的毕设,在此一并谢谢你们。在以后的学习生活中我将继续保持谦虚严谨的态度,使自己的学业更上一层,以后为社会、为国家做出更大贡献。 参考文献[1]徐国华.移动机器人的发展现状及其趋势[J].机器人技术与应用,2001(3)[2]马云峰.消防车的分类、定义及用途释义[J].商用汽车,2009,””(3)[3]范风强.单片机语言C51应用实战集锦[M].北京:电子工业出版社.2005[4]邬宽明.单片机外围器件实用手册数据传输接口器件分册[M].北京:航空航天大学出版社.1998[5]王笑京,沈鸿飞,汪
林.中国智能交通系统发展战略研究[J].
交通运输系统工程与信息,
2006,
6
[6]党宏社.智能车辆系统发展及其关键技术概述[J].公路交通科技,2002(4)[7]EuropeanCommission.Europeantransportpolicyfor2010:Timetodecide[EB/OL].[2001-09-12].[8]张毅刚.新编MCS-51单片机应用设计[M].3版.哈尔滨:哈尔滨工业大学出版社.2008[9]姚佳.
智能小车的蔽障及路径规划[D].东南大学硕士论文.2005[10]朱思敏.自循迹智能小车的控制系统的设计与实现[D].浙江工业大学.2013[11]董涛,刘进英,蒋苏.基于单片机的智能小车的设计与制作[J].计算机测量与控制.2009[12]刘少强.传感器设计与应用实例[M].中国电力出版社.2008[13]张天凡.完全手册-51单片机C语言开发详解[M].北京:电子工业出版社.2008[14]EDDickmanns,AZapp.Autonomoushighspeedroadvehicleguidance[J].
computer.1987
[15]Ramon
Pallas-Areny,John
G.
Webster(美).传感器和信号调节[M],第2版.张伦译.北京:清华大学出版社,2003[16]温志明.运动控制系统分析与应用[M].国防工业出版社.2008[17]陈铁军.智能控制理论及应用[M].清华大学出版社,2009.1附录一电路原理图附录二程序代码#include<reg52.h>#define ucharunsignedchar#defineuintunsignedintsbitfire1=P1^4;//从左到右火焰检测1sbitfire2=P1^3;//火焰检测2sbitfire3=P1^2;//火焰检测3sbitfire4=P1^1;//火焰检测4sbitfire5=P1^0;//火焰检测5sbitK1=P1^5;//寻线模块右探头检测sbitK2=P1^6;//寻线模块中探头检测sbitK3=P1^7;//寻线模块左探头检测sbitout1=P2^0;//左轮电机控制引脚1sbitout2=P2^1;//左轮电机控制引脚2sbitout3=P2^2;//右轮电机控制引脚1sbitout4=P2^3;//右轮电机控制引脚2sbitobject1=P3^1;//避障右检测探头sbitobject2=P3^2;//避障中检测探头sbitobject3=P3^3;//避障中检测探头sbitobject4=P3^4;//避障左检测探头sbitoutfire=P3^6;//灭火风扇控制引脚//sbitbeem=P3^7; //蜂鸣器控制引脚//bitfireflag;//1表示检测到火焰标志;0表示已经吹灭火焰ucharfireflagcount;//火焰标志位置计数。//*****************************************************////*函数名:delayms *////*功能:产生毫秒级延时 *////*****************************************************//voiddelayms(uintx){ unsignedchari,j; while(x--) { i=2; j=239; do { while(--j); }while(--i); }}/*****************************************************//*函数名:IO_init() *//*功能:IO口初始化 *//*****************************************************/voidIO_init(){ P0=0xFF; //定义定时器0工作模式 P1=0xFF; //赋初值高位 P2=0xFF; //赋初值低位P3=0xFF; //启动定时器}/*****************************************************//*函数名:leftrun() *//*功能:左转运行 *//*****************************************************/voidleftrun(){ out1=0; out2=1; out3=1; out4=0; delayms(1); out2=0; out3=0; delayms(2); out2=1; out3=1;}/*****************************************************//*函数名:rightrun() *//*功能:右转运行 *//*****************************************************/voidrightrun(){ out1=1; out2=0; out3=0; out4=1; delayms(1);out2=1; out3=1; delayms(2); out2=0; out3=0;}/*****************************************************//*函数名:backrun() *//*功能:后退运行 *//*****************************************************/voidbackrun(){ out2=1; out4=1; out1=0; out3=0;}/*****************************************************//*函数名:straightrun() *//*功能:直走运行 *//*****************************************************/voidstraightrun(){ out2=0; out4=0; out1=1; out3=1; delayms(1); out1=0; out3=0; delayms(1); out1=1; out3=1;}/*****************************************************//*函数名:stoprun() *//*功能:停止运行 *//*****************************************************/voidstoprun(){ out2=0; out4=0; out1=0; out3=0;}/*****************************************************//*函数名:blackscan() *//*功能:黑色边沿检测 *//*****************************************************/voidblackscan(){ P1=0XFF;//P1口全部置高 if(K3==0) { stoprun(); //停车30ms delayms(10); // backrun(); //后退30ms delayms(200); // rightrun(); //右转30ms delayms(200);// straightrun(); //直行 } /*当寻线模块左边检测到桌面边沿则小车后退一段距离然后右转一定距离,然后前进*/ elseif(K1==0) { stoprun(); //停车30ms delayms(30); // backrun(); //后退30ms delayms(200); // leftrun(); //左转30ms delayms(100); // straightrun();}//直行 /*当寻线模块右边检测到桌面边沿则小车后退一段距离然后左转一定距离,然后前进*/ elseif(K2==0) { stoprun(); //停车30ms delayms(30); backrun(); //后退30ms delayms(200); // rightrun(); //右转30ms delayms(300); straightrun(); //直行 } /*当寻线模块中路检测到桌面边沿则小车后退一段距离然后右转一定距离,然后前进*/ else{straightrun(); }}/*****************************************************//*函数名:firescan() *//*功能:火焰检测 *//*****************************************************/voidfirescan(){ if(fire3==0) //第三个火焰模块检测到火焰 { stoprun(); //停车 fireflagcount=3; //火焰位置计数为3 } elseif(fire4==0) //第四个火焰模块检测到火焰 { stoprun(); //停车 fireflagcount=4; //火焰位置计数为4 } elseif(fire5==0) //第五个火焰模块检测到火焰 { stoprun(); //停车 fireflagcount=5;//火焰位置计数为5 } elseif(fire1==0) //左边第一个火焰模块检测到火焰 { stoprun(); //停车 fireflagcount=1; //火焰位置计数为1 } elseif(fire2==0) //第二个火焰模块检测到火焰 { stoprun(); //停车 fireflagcount=2; //火焰位置计数为2 }}/*****************************************************//*函数名:objectscan() *//*功能:障碍物检测 *//*****************************************************/voidobjectscan(){ if((object2==0)||(object3==0))//中路障碍检测 { stoprun(); //停车 if(fire3==0) { delayms(100); if(fire3==0) { outfire=0; //启动灭火风扇5秒,吹灭火焰 delayms(3000); outfire=1; //关闭风扇。 fireflagcount=0; delayms(500); backrun(); delayms(200); // rightrun(); //右转30ms delayms(300); straightrun(); //直行 } } elseif(fire3==1) { leftrun(); //左转 while(object1==0){firescan();}//转弯时加入火焰检测 while(object1==1); delayms(100); straightrun(); //直行 } } if(object1==0)//右路障碍检测 { stoprun(); //停车 leftrun(); //左转 while(object1==0){firescan();}//转弯时加入火焰检测 straightrun(); //直行 } if(object4==0)//左路障碍检测 { stoprun(); //停车 rightrun(); //左转 while(object4==0){firescan();}//转弯时加入火焰检测 straightrun(); //直行 } }/*****************************************************//*函数名:putoutfire() *//*功能:灭火操作 *//*****************************************************/voidputoutfire(){ uinta; if(fireflagcount>0) //如果火焰标志计数大于0,则进入灭火过程 { if(fireflagcount==3)//中心火焰检测模块检测到火焰,则直行 { while((fire2==1)&&(fire4==1)&&(objec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省湖州市2023年初中学业水平考试数学真题(含答案)
- 2026年贵州省兴义市高二生物下册期末考试测试卷附答案【综合卷】
- 2025年江苏省高邮市高二生物下册期末考试考试卷【必考】附答案
- 2025年河南省荥阳市高二生物下册期末考试测试卷附参考答案(综合题)
- 2025年黑龙江省肇东市高二生物下册期末考试检测卷(B卷)附答案
- 2026年山东省蓬莱市高二生物下册期末考试试卷及参考答案【巩固】
- 2025年辽宁省新民市高二生物下册期末考试考试卷及答案(夺冠)
- 2026年湖北省潜江市高二生物下册期末考试测试卷【有一套】附答案
- 2026年江苏省泰兴市高二生物下册期末考试考试卷(A卷)附答案
- 2026年云南省蒙自市高二生物下册期末考试考试卷含完整答案【历年真题】
- 浙江省杭州市上城区2023-2024学年八年级下学期期末考试英语试题(含答案)
- 2026年药品采购专员高频面试题包含详细解答
- 2026年宁都技师学院招聘编外教师44人笔试备考试题及答案解析
- 2026年湖北省宜昌市地理生物会考考试试题及答案
- 心理中心档案工作制度
- 2026年八年级道德与法治下册课本问题栏目和导行、单元思考答案
- 米业安全生产责任制度
- 2026年深圳中考历史创新题型特训试卷(附答案可下载)
- 花样机安全操作培训课件
- 机关单位工会内控制度
- 病理学练习题库
评论
0/150
提交评论