智能寻迹灭火小车
智能灭火小车的设计与实现

随着社会经济和科学技术的快速发展,化工行业危险化学品和放射性物质泄漏、燃烧及爆炸等事故的隐患逐渐增加,一旦发生火灾,往往会带来巨大的人员伤亡和财产损失,因此开发一款智能设备用于实时监测火灾隐患并代替人工进行灭火,具有重要的现实意义[1]。
1总体方案设计笔者设计了一个智能灭火小车,其总体方案设计如图1所示。
发生火情后,火源检测模块发送信号给单片机,单片机判断后驱动电机前往火源处,途中遇到障碍物后会及时躲避,到达火源后驱动风扇进行灭火。
图1智能灭火小车总体方案设计2系统硬件部分2.1电源电路电源电路(图2)设计选用7805芯片。
7805智能灭火小车的设计与实现张博1,2邓治岗3巨永锋1吕建新2(1.长安大学电子与控制工程学院;2.西安思源学院工学院;3.西安航天动力试验技术研究所)摘要设计了一个以单片机为核心的智能灭火小车,利用红外接收二极管实现对火源的检测,利用红外传感器实现避障。
给出了智能灭火小车系统的软硬件部分和具体的调试过程。
实验结果表明,该小车通过检测火源,将采集到的数据传给单片机,驱动小车寻找火源并进行相应的避障,最后完成了灭火工作并返回。
关键词灭火小车单片机红外接收二极管红外传感器避障中图分类号TH862文献标识码A文章编号1000⁃3932(2020)04⁃0341⁃05作者简介:张博(1994⁃),硕士研究生,从事嵌入式系统的研究。
通讯作者:巨永锋(1962⁃),教授,从事自动控制、智能测控技术的研究,************.cn。
图2电源电路芯片有3个引脚,分别为终端输入端、输出端和地面接地端[2]。
通常情况下,该芯片可提供的最大电流为1.5A,输入电压可以为9、12、15V,输出电压为5V,且误差不超过±0.2V[3]。
综合考虑后, 7805芯片采用电池供电,选择9V的输入电压。
2.2电机驱动电路电机驱动电路(图3)采用L298电机驱动芯片。
电机调速采用PWM调速原理,电机的速度与占空比成正比关系[4],利用该比例关系可以控制电机的转速从而达到灭火的目的。
智能灭火小车的设计与实现

智能灭火小车的设计与实现一、智能灭火小车的设计需求与目标智能灭火小车的设计旨在能够自主感知火灾环境、准确识别火源位置,并迅速采取有效的灭火措施。
其主要需求包括:具备可靠的火源探测能力、灵活的移动性能、精准的定位系统以及高效的灭火装置。
设计目标是在火灾发生的初期,能够快速响应,自主导航至火源位置,进行灭火操作,最大程度地控制火势蔓延。
二、硬件系统设计(一)车体结构智能灭火小车的车体采用坚固且轻巧的材料制作,以保证在复杂环境中的稳定性和灵活性。
车轮采用防滑、耐磨的材质,并具备良好的悬挂系统,适应不同的地形。
(二)驱动系统选择高性能的电机作为驱动装置,通过精确的电机控制算法,实现小车的前进、后退、转弯等动作,确保小车能够在火灾现场灵活移动。
(三)火源探测系统采用多种传感器组合来探测火源,如温度传感器、烟雾传感器和红外传感器等。
这些传感器能够实时感知环境中的温度变化、烟雾浓度和红外辐射,从而准确判断火源的位置和范围。
(四)定位系统利用 GPS 定位模块和惯性导航系统,实现小车在室内外环境中的精准定位,为导航和灭火操作提供准确的位置信息。
(五)灭火装置搭载适合的灭火设备,如干粉灭火器或二氧化碳灭火器。
灭火装置的控制通过电磁阀和喷头实现,能够根据火源的情况调整灭火剂量和喷射方向。
三、软件系统设计(一)数据采集与处理通过传感器采集到的环境数据,经过滤波、放大和模数转换等处理,得到准确、可靠的信息。
(二)火源识别算法运用先进的图像处理和模式识别技术,对采集到的温度、烟雾和红外图像进行分析,识别出火源的特征和位置。
(三)路径规划与导航算法根据火源位置和环境信息,规划出最优的行驶路径。
导航算法结合定位系统的数据,实时调整小车的行驶方向和速度,确保小车能够准确、快速地到达火源位置。
(四)灭火控制算法根据火源的大小、类型和距离等因素,计算出合适的灭火剂量和喷射时间,控制灭火装置进行有效的灭火操作。
四、系统集成与测试在完成硬件和软件的设计后,进行系统集成和测试。
循迹灭火智能小车

自己设计制造小车主体结构,能够按照布局设计思路来完成小车主体结构的调整,保证电路部分和机械部分的全面协调。可以合理地安放传感器,同时也可以锻炼自己的动手设计能力,兼有成本低廉的优势。但是自己设计的小车难免会外表粗糙,费时费力。
综合考虑各种利弊,兼顾小车的成本和质量问题,选择了自己设计小车主体结构。
经过感器作为信息采集元件。
2.3
火焰检测有温度传感器、烟雾传感器、红外传感器、紫外传感器以及
(
紫外线传感器只对
(
红外火焰传感器可以用来探测火源或其它一些波长在
综合考虑,采用红外传感器识别火焰,并采取相应措施排除干扰。
2.4
(
水可以很好的将蜡烛浇灭。但是不管是挤压喷水还是使用水泵喷水,在喷水的远近和广度难以控制,并且使用大电流电机对电源的冲击相当大,难以保证系统的稳定性。
4.3显示模块8
4.4循迹模块与测速模块9
4.5寻火模块10
4.6灭火模块11
附录二:实物图20
答辩小组签名的答辩决议书22
前
随着机械自动化的不断发展,人们在工作、生活的各个方面都希望能够利用自动化的操作来提高工作效率,使生产发展能够得到不断的提高。在实际应用中,具有智能化的机器人在人们无法触及的工作场合下更是大显身手,如各种军事机器人、勘探机器人等。和我们日常生活更为接近的有各种医疗机器人、汽车自动泊位系统、自动驾驶系统等等。任何一个机器人想要实现智能化就必须能够实现对外部环境的自我感知判断并作出相应反应,最终完成人们布置的任务。
2.6
方案
方案
虽然霍耳传感器具有众多优点,但是由于模型车较小,比较细小的磁铁不易寻找。而且利用光电开关更加容易安装使用,所以采用光电开光进行测速计程。
智能循迹小车ppt文档全文预览

REPORTING
THANKS
感谢观看
别和跟踪。
优化控制算法
采用PID控制、模糊控制等算法, 提高小车行驶的稳定性和准确性。
完善硬件设计
优化电路设计、电机驱动、电源 管理等硬件模块,提升小车性能。
拓展应用场景
将智能循迹小车应用于仓储物流、 智能家居等领域,验证其实用性
和可靠性。
未来研究方向探讨
多传感器融合技术
研究如何将多种传感器信息进行融合, 提高小车的环境感知能力和适应性。
调试技巧和优化策略
调试技巧
在调试过程中,可以采用分模块调试的方法,逐个验证每个模块的功能是否正常;同时,可以利用串口通信等手 段,实时输出调试信息,帮助定位问题。
优化策略
针对循迹算法的优化,可以采用动态阈值调整的方法,提高轨迹检测的准确性;针对电机控制的优化,可以采用 PID控制算法,提高小车的行驶稳定性和速度控制精度。此外,还可以通过硬件升级、算法改进等手段,进一步 提高智能循迹小车的性能。
深度学习技术应用
探索深度学习在智能循迹小车中的应 用,如通过神经网络实现更复杂的路 径规划和决策。
多车协同控制技术
研究多辆智能循迹小车之间的协同控 制策略,实现更高效、灵活的群体协 作。
智能化与自主化
进一步提升小车的智能化水平,如实 现自主导航、避障、路径规划等功能, 使其更加适应复杂环境。
2023
2023
REPORTING
智能循迹小车ppt文档 全文预览
2023
目录
• 智能循迹小车概述 • 智能循迹小车硬件设计 • 软件编程与算法实现 • 性能测试与结果分析 • 挑战与解决方案探讨 • 总结与展望
2023
PART 01
远程控制的灭火小车原理

远程控制的灭火小车原理
远程控制灭火小车的工作原理通常包括以下要点:
1. 采用遥控器发送控制信号,小车上的接收设备收到信号后解码执行。
2. 控制信号可以是无线电波、摄像头图像或无线网络等。
3. 小车安装摄像头,将作业环境的图像传回控制端,实现远程监视。
4. 小车装有灭火装置,如水泵连接软管的水炮装置。
5. 水泵由电机驱动,可以向软管打出高压水流。
6. 软管和水炮由舵机控制,可以灵活转动和调整方向。
7. 小车上安装电池供电,保证舵机、电机和其他部件工作。
8. 根据控制指令,小车可驶向目标位置,水炮瞄准后打开泵打水灭火。
9. 灭火小车结构小巧,可以进入一些人员难以进入的灾害环境执行灭火任务。
10. 操控灵活,可以实现遥控精确灭火。
智能寻迹小车

引言概述:智能寻迹小车是一种结合了人工智能和机械工程的创新产品。
它能够根据预设的轨迹自动行驶并进行导航,具有很高的便捷性和灵活性,适用于各种环境和任务。
在本文中,将对智能寻迹小车的设计原理、工作模式、技术优势和应用前景进行详细阐述。
正文内容:一、设计原理1.1 感知模块的设计智能寻迹小车的感知模块采用多种传感器进行环境感知,包括视觉传感器、红外线传感器和超声波传感器。
视觉传感器用于识别道路标志和障碍物,红外线传感器用于进行物体跟踪,超声波传感器用于进行距离测量。
1.2 控制模块的设计智能寻迹小车的控制模块采用嵌入式系统,实现对感知模块的数据处理和运动控制。
通过运用机器学习算法,控制模块能够学习和记忆不同轨迹的特征,从而实现自主导航和寻迹功能。
二、工作模式2.1 自主导航模式智能寻迹小车在自主导航模式下,可以根据预设的轨迹进行自动行驶,不需要人工干预。
它能够通过感知模块实时获得周围环境的信息,并根据这些信息做出相应的决策和控制。
2.2 手动遥控模式智能寻迹小车还可以切换到手动遥控模式,由人工遥控进行操作。
在这种模式下,小车的控制将完全依赖于操作者的指令,可以实时控制小车的速度和方向。
三、技术优势3.1 高精度的轨迹识别智能寻迹小车的感知模块采用先进的图像处理算法和目标识别技术,能够准确地识别出道路标志,并对轨迹进行跟踪,从而实现高精度的轨迹识别和导航。
3.2 自动避障和防碰撞智能寻迹小车的感知模块不仅可以识别道路标志,还能够探测到前方的障碍物,并实时进行避障和防碰撞。
这种智能寻迹小车能够确保行驶的安全性和可靠性。
3.3 强大的自学习能力智能寻迹小车的控制模块具有强大的自学习能力,可以通过机器学习算法不断学习和适应不同的环境和任务,提高智能寻迹小车的导航精度和性能。
四、应用前景4.1 物流领域智能寻迹小车在物流领域有着广阔的应用前景。
它能够自动化完成货物运输和仓储管理任务,提高物流效率和准确性。
4.2 安防领域智能寻迹小车可以在安防领域进行侦查和监控,通过自主导航和环境感知功能,实现对重要区域的巡逻和监测。
智能循迹小车精讲PPT课件

可量化性
评估指标应具备可量化 性,方便进行客观、准
确的性能评估。
可比性
评估指标应具有可比性, 以便对不同循迹小车或 不同改进方案进行性能
对比。
实际意义
评估指标应具有实际意 义,能够反映循迹小车 在实际应用中的性能表
现。
结果分析与改进建议
结果分析
根据测试结果,对循迹小车的性能进行全面分析,找出存在的问题 和不足。
应用拓展 智能循迹小车将在更多领域得到应用,如仓储物流、智能 家居、医疗服务等,推动相关产业的智能化升级。
多车协同 未来智能循迹小车将实现多车协同作业,提高整体工作效 率,同时降低单个车辆的制造成本。
未来研究方向探讨
复杂环境适应性
人机交互优化
研究如何在复杂多变的环境中实现智能循迹 小车的稳定导航和定位,提高其环境适应性。
调试技巧与经验分享
调试技巧
使用仿真工具进行前期验证,可以大大缩短开发周期;在实际调试过程中,可以采用分模块调试的方法, 逐一验证各个模块的功能和性能。
经验分享
在开发过程中要注重代码的可读性和可维护性,以便后期进行功能扩展和性能优化;同时要注意传感器的 选型和布局对循迹效果的影响,合理选择和布局传感器可以提高小车的循迹精度和稳定性。
循迹算法原理及实现方法
循迹算法原理
通过检测小车与路径之间的相对位置关系,控制小车的运动方向和速度,使小 车能够沿着预定路径行驶。常见的循迹算法有PID控制算法、模糊控制算法等。
实现方法
通过传感器(如红外传感器、超声波传感器等)检测路径信息,将检测到的路 径信息输入到控制器中,控制器根据预设的循迹算法计算出控制量,控制小车 的电机转动,实现小车的循迹行驶。
智能循迹小车精讲 PPT课件
智能循迹避障灭火小车

也 需要 注意 ,更 重要的是 需要对小车 避障传感 器的感应距 离进
行相应调节。
2种情况对小 车进 行转 向控制 ,若没有被任何 一个 探头检测到 ,
则 继续直 行 。避 障原理 与循迹原 理十分相 似 ,就 是将原来 探测
看 小车在执 行循迹 的时候一旦车 速过快有 可能会冲 出轨道 ,需
要仔 细调试 不断修 改小车前进速 度。小车在避 障 的时候 的速度
业级 )0摄 氏度 到 7 5摄 氏度 ( 商业级 )。本 次设计采用 了 K e i l
u V i s i o n 4开 发环境 ,主要采用 的是红外循迹 原理,黑色赛道 会 根据 小车 的运 行情况 呗某 一探头所 检测到 ,则两个探 头分为
有 大左转 ,中间有则停 车打开风 扇进行 灭火 ,在进行 判断 中间 是否 有火焰 ,无火焰则 灭火成功 ,有 火焰则 继续灭火直 至灭火 成功 。小车进 行左转寻 找下一个火 源重复 以上过程 ,直至任务
结束 。
制各路 传感器 的距 离位置 了,在调节 电位器 的同时观 察外挂 的 四个 二极 管。可 以检测火 焰或 波长在 7 6 0纳米 l 1 0 0纳米 范 围
综合
智能循迹避 障灭火小车
陈迪 沈 阳工学 院
摘要: 本文通过对智能小车的研 究和 分析,设计 了 一个智能循迹避障灭火小车,该小车主要研究单片机如何控制小车 自动循迹、 避障、灭火,详细的阐述 了S T C 8 9 C 5 2的各个管脚功能的实现 ,利 用了S T C 8 9 C 5 2芯片的强大功能,使小车在无人操控 的情况下 按照程序进行 自动寻迹避障 ,感应火源做 出灭火动作等功能外加一个火焰传 感器,对火焰进行感应传递信号给芯片再由芯 片
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能寻迹灭火小车摘要:本设计为使小车在轨道上按要求准确运行采用了单片机AT89C51最小系统作为电动车的检测和控制系统。
通过红外发射接收一体探头检测路面黑色寻迹线,使小车按预定轨道行驶,通过步进电机进行扫描,根据火焰传感器检测火焰。
再加上基于AT89C51单片机的键盘,构成了整个系统的硬件总电路。
最后通过软件设计,实现了按预定轨道行驶、蔽障、检测火焰、灭火等功能。
关键词:寻迹线蔽障火焰传感器红外发射接收一体探头灭火1·系统方案设计、比较与论证根据题目的基本要求,设计任务主要完成小车在规定的时间内按规定路径进行扫描,寻迹,蔽障,灭火等功能。
为完成相应的功能,系统可以分为以下几个基本模块:电机驱动模块,电机扫描模块,风扇驱动模块,寻迹线探测模块,蔽障模块,火焰检测模块,电源模块,风扇模块。
图一1.1 寻迹线探测模块探测路面黑色寻迹线的原理:光线照射到路面并反射,由于黑线和白纸的反射系数不同,可根据接受到反射光强弱由传感器产生高低电平并最终通过单片机判断是否到达黑线偏离跑道。
方案一:由可见光发光二极管与光敏二极管组成的发射-接收电路。
该方案成本较低,易于制作,但其缺点在于周围环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;如果采用超高亮发光管和高灵敏度光敏管可以降低一定的干扰,但又将增加额外的功率损耗。
方案二:自制红外探头电路。
此种方法简单,价格便宜,灵敏度可调,但易受到周围环境影响,特别是较强光照对检测信号的影响,会造成系统不稳定。
再加上时间有限,制作分立电路较繁琐。
方案三:集成式红外探头。
可以采用集成断续式光电开关探测器,它具有集成度高、工作性能可靠的优点,只须调节探头上的一个旋钮即可以控制探头的灵敏度。
此种探头还能有效地防止普通光源(如日光灯等)的干扰。
基于上述考虑,为了提高系统信号采集检测的精度,我们采用方案三。
1.2电动机及其驱动模块的选择在选用驱动模块方面由以下两种方案:采用专用驱动芯片。
该芯片集成度高,占用空间小,主要应用于电机调速场合。
采用分立三极管驱动电路。
经分析此电动车所要求的功能比较简单,不需复杂的调速,用电动机专用集成驱动电路可以达到预期的目标。
故我们最后决定用后方案。
1.3 电源选择方案一:所有器件采用单一电源(5节五号电池)。
这样供电比较简单,但是由于电动机启动瞬间电流很大,会造成电压不稳、有毛刺等干扰,严重时可能会造成单片机系统掉电,使之不能完成预定行程。
方案二:双电源供电。
电动机驱动电源采用5节五号电池,单片机及其外围电路电源采用5V钮扣电池供电,两路电源完全分开,这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统稳定性。
我们认为本设计的稳定可靠性更为重要,故拟采用方案二。
1.4灭火装置模块可燃物的燃烧的条件有两个:一是有助燃物,二是可燃物的温度达到着火点以上。
因此灭火也就有两种方案:一是将助燃物与可燃物隔离开,二是降低可燃物的温度至着火点以下。
我们小车采用第二种方案,即降低温度至着火点以下。
方案1:干冰灭火干冰升华时,吸收大量的热,降低可燃物温度,同时二氧化碳气体会覆盖在可燃物上,将助燃物和可燃物隔离开。
对于我们的课题此方案的劣势太多。
方案2:喷水灭火利用微型水泵喷出适量的水来灭掉火源。
喷水灭火是现实生活中灭火的最主要的方式,但是对于我们的只能灭火小车,有两个致命的缺点:一是几乎买不到小型可控的喷水装置,二是装上大量水后,小车的负载过大。
方案3:风扇灭火利用一个不减速的直流小电机带动一个小扇叶进行简单的灭火。
这种方案有三个子方案;(1)电源直接供电这种方案是最简单的,但是小车驱动电机和各种芯片的额定工作电流和电压都受到很大的限制,且干电池的输出电压和电流也不可能达到很大,所以灭火电机的电压和电流较小无法达到预期效果。
(2)芯片控制灭火风扇电机的转速和转向都不需要控制,只要在一定范围内转的越开越好。
因此采用这种方案有点麻烦,而且还会浪费时间和精力。
(3)三极管放大电路直接利用三极管驱动。
将电机放在三极管的射极,然后在基极加上一个限流电阻即可驱动电机正常工作,这种方案不仅电路简单、易实现,会减少很多电路上不必要的麻烦,而且驱动效率也大大提高,不仅如此其维修性也很强,出现故障能及时快速维修。
同时为了保证电路稳定性,我们采用多个三极管并联供电的方式。
鉴于以上各种方案的比较,我们选择方案3中子方案(3)1.5 探测装置模块在进行这个项目之前,我们三个就从未接触过类似的项目课题,一时真的不知该如何着手解决这个棘手的问题。
不过有一点我们几个都清楚地知道我们的检测方法肯定是得利用火源发出的光和温度的性质来将这一特殊的“目标物”与周围环境物区别开来。
考虑到实际情况即蜡烛发出的光中不仅仅只有可见光,红外和紫外都占有一定比例,蜡烛发光的过程中肯定还伴随着烟雾等附带物的释放,而且周围环境的温度也会发生不同程度的变化,但是这种变化较小。
以上这些都可以作为检测蜡烛位置的依据,所以我们常见的有红外传感器、紫外传感器、火焰传感器、烟雾传感器,温度传感器等。
方案1:以两个热敏电阻为核心的传感器实验中发现在一定距离范围内,空气温度变化非常小,热敏电阻几乎不发生任何变化。
方案2:以两个光敏电阻为核心的传感器利用光敏电阻对不同距离及不同强度的光照均有较好的光敏特性来将外界光信号转换成电信号,提供给单片机进行相关判断操作。
实验中我们发现这种方案有很大的缺点,抗干扰能力极差,而且误差偏大,不能准确测定火源位置。
方案3:为了更准确的保证小车能够在距离火源3—5cm的范围内停下来,我们在方案2的基础上增加了光电对管进行短距离测距。
但是实验中发现光电对管是不起任何作用的。
原因是蜡烛是圆柱形,对广电对管发射的光信号是漫反射的不是镜面反射,光电对管几乎接收不到反射回来的信号。
光电对管几乎起不到任何作用。
方案4:用缠有黑色胶布的塑料管将光敏电阻四周包围起来。
这样只有垂直于光敏电阻表明的光才能作用到光敏电阻,改变光敏电阻的阻值,进而改变电流和电压值,通过判断电压和电流的变化就可以准确测定光源的方向,然后小车水平直线前进。
通过实验我们发现这种方案较好,他抗干扰能力强,探测距离远(可达3米左右),探测火源位置准确。
方案5: 以方案2为基础,采用多个光敏电阻共同探测火源位置。
他们的信号通过或门传递给mega16单片机。
但是在实际情况中我们发现这种方案实际效果不大,而且电路较为麻烦。
鉴于以上5种方案的比较,我们选择方案4。
小结:经过一番仔细的论证与比较,我们决定了系统各个主要模块的最终方案如下:1、小车基本模型模块用电路板为底座自己动手做一个小车,采用两轮驱动,一个万向轮支撑来保证小车的平稳和转向灵活快捷。
2、电机驱动模块利用L298芯片控制两个驱动电机的旋转时间、方向和快慢,进而控制小车的前进和转向。
3、灭火装置模块多个三极管放大电路供电控制灭火风扇电机,进行风扇灭火。
4、探测装置模块用缠有黑色胶布的塑料管将光敏电阻四周包围起来,绕后通过两只光敏电阻来探测火源的位置。
当火源位于小车正前方的时候,蜡烛与小车中线在同一直线上,即蜡烛在两只光敏电阻连线的垂直平分线上,这样两只光敏电阻所受光照条件大致相同,因而其阻值也相差不大,从而使两个电路电压电流之差在一个很小的范围内这一性质来确定火源位置。
5,电源:双电源供电二系统的具体设计与实现系统的组成及其原理图如下所示。
以下分为硬件与软件两个方面进行具体分析。
1 系统的硬件设计电动机的驱动设计与实现用L298N作为电机驱动芯片。
L298N是一个具有高压大电流的全桥驱动芯片,他相应频率高,一片L298N可以控制两个直流电机,而且还有控制使能端。
驱动电路的设计原理图路面黑线检测模块电路的设计与实现2.1寻迹线探测电路采用型号为红外线传感器,该探头输出端只有三根线(电源线、地线、信号线),只要将信号线接在单片机的I/O口,然后不停地对该I/O口进行扫描检测,当其为高电平时则检测到白纸,当为低电平时则检测到黑线区域。
小车前进(倒退)时,始终保持黑线在车头(车尾)两个传感器之间,当小车偏离黑线时,探测器一旦探测到有黑线,单片机就会按照预先编定的程序发送指令给小车的控制系统,控制系统再对小车路径予以纠正。
当小车回到了轨道上时,车头(车尾)两个探测器都只检测到白纸,则小车继续直线行走,否则小车会持续进行方向调整操作,直到小车恢复正常。
系统的软件设计三实际测试1 测试设备模拟跑道:2 测试结果附录软件程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intunsigned char temp;unsigned char signal;unsigned int s;unsigned char j;unsigned char k;unsigned char l;unsigned char m;sbit f=P1^5;sbit in4=P3^3;sbit in3=P3^2;sbit in2=P3^1;sbit in1=P3^0;sbit y=P1^3;void delay300(void) // 300ms{unsigned char a,b,c;for(c=123;c>0;c--)for(b=116;b>0;b--)for(a=9;a>0;a--);}void delay200(void) //误差 0us{unsigned char a,b,c;for(c=4;c>0;c--)for(b=116;b>0;b--)for(a=214;a>0;a--);_nop_(); //if Keil,require use intrins.h }void delay(){unsigned int i,j;for(i=30;i>0;i--)for(j=30;j>0;j--);}void delay1(){unsigned int i,j;for(i=20;i>0;i--)for(j=20;j>0;j--);}void delay2() //误差 0us{unsigned char a,b,c;for(c=189;c>0;c--)for(b=230;b>0;b--)for(a=33;a>0;a--);}void delay3(uchar t) //误差 0us {unsigned char a,b,c;while(t--)for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);}//return_A()//{}//return_B()//{}//return_C()//{}//return_D()//{}void forward(){P2=0xfa;delay();}//void back()//{//P0=0xf5;// delay();//}void stop(){P2=0xff;delay300();delay300();s++;}void left_quick(){//unsigned char i;// for(i=20;i>0;i--)// {P2=0xf8;delay1(); //delay1();delay1();delay1();delay1();delay1(); //}}void left(){P2=0xf9;delay();}void rignt_quick(){//unsigned char i;// for(i=20;i>0;i--)//{P2=0xf2;delay1(); //delay1();delay1();delay1();delay1();delay1();//}}void rignt(){P2=0xf6;delay();}void saomiao(){uchar i;for(i=0;i<129;i++) //正转90°,扫描左半部{ in1=0;in2=1;in3=1;in4=1;delay3(11);in1=1;in2=0;in3=1;in4=1;delay3(11);in1=1;in2=1;in3=0;in4=1;delay3(11);in1=1;in2=1;in3=1;in4=0;delay3(11);if(f==0) f=0;}for(i=0;i<129;i++) //转回原点,停止扫描{ in1=1;in2=1;in3=1;in4=0;delay3(11);in1=1;in2=1;in3=0;in4=1;delay3(11);in1=1;in2=0;in3=1;in4=1;delay3(11);in1=0;in2=1;in3=1;in4=1;delay3(11);}}void main(){forward();forward();forward();forward();while(1){// forward();//back();temp=P1;signal=temp&0xff;// l=signal;if(s==4){//uchar f=1;stop();delay300();saomiao();if(f==0) {left();delay300();delay300();m=1;f=1;} //没延时else { rignt();delay300();delay300();m=0;}//没延时 }if(s==6){ //uchar f=1;stop();delay300();saomiao();if(f==0) {left();delay300();delay200();k=1;f=1;}//左拐延时没给else { rignt();delay300();delay200();k=0;}//右拐延时没给forward();delay300();delay300();stop();delay300();delay300();left();delay300();delay300();delay300();delay200();forward();delay300();delay300();if(k==1){rignt();delay300();delay200();}else{left();delay300();delay200();}}if(s==9){stop();delay300();if(m==0){rignt();delay300();delay300();}if(m==1){left();delay300();delay300();}}// if(j==0&&k==0) return_A();// if(j==0&&k==1) return_B();// if(j==1&&k==0) return_C();// if(j==1&&k==1) return_D();switch(signal){/* case 0xf9: //2、3检测到黑线forward();break;case 0xfb: //左快,3检测到白线,2检测到黑线11111011left_quick();break;case 0xf7: //直角弯,左拐,1检测到黑线,11110111 left();break;case 0xf3://左慢11110011left_quick();break;case 0xfc: //右慢,3、4检测到黑线11111100rignt_quick();break;case 0xfd: //右快,2检测到白线,3检测到黑线11111101rignt_quick();break;case 0xfe: //11111110rignt();break;case 0xf8:rignt();case 0xff:forward();break;//case 0xf0:// stop();// break;*/case 0xff:forward();break;case 0xfe:rignt();break;case 0xfd:rignt_quick();break;case 0xfc:rignt();break;case 0xfb:left_quick();break;case 0xf9:forward();break;case 0xf8:rignt();break;case 0xf7:left();break;case 0xf3:left();break;case 0xf1:left();break;case 0xf0:stop();default:forward();break;}}}。