智能循迹小车___设计报告

合集下载

智能寻迹小车设计报告

智能寻迹小车设计报告

目录1.项目设计目的 (1)2.项目设计正文 (3)2。

1.项目分析及方案制定 (3)2。

2.设计步骤及流程图 (4)2。

2.1.寻迹设计步骤 (4)2。

2。

2.流程图 (4)2.3.主要模块介绍 (4)2。

3。

1.LM393 (4)2。

3.1.1 LM393的主要特点 (4)2.3。

1。

2 LM393引脚图及内部框图 (5)2。

3。

1.3 LM393 功能简介 (5)2。

3。

2.89C2051 (5)2.3.2。

1 89C2051简介 (5)2.3.2.2 89C2051 主要性能参数 (5)2.3。

2.3 89C2051 功能特性概述 (6)2.4.电路设计及PCB绘制 (6)2。

4。

1.电源电路 (6)2.4。

2.红外收发电路 (6)2。

4.3.电机驱动电路 (7)2。

4。

4.单片机最小系统 (7)2。

4。

5. 整体电路 (8)2。

4.6。

PCB板的绘制 (8)2.5. 成品展示 (9)3.项目设计总结 (9)4.参考文献 (10)智能寻迹小车——CDIO三级项目王君杰(电子信息工程1501 150070116)一、项目设计目的在科技飞速发展的今天,智能化的概念已经渗入到各行各业,自动控制系统也出现在生活的方方面面,早到工厂的机械化生产,近到目前的自动驾驶.越来越多的领域涉及到电控制技术。

特别是使用单片机一类的MCU的控制,在生活中越来越常见。

因此,基于单片机控制的电路的学习和时间对于我们来说就显得尤为重要。

同时,对于单片机作为软件主控单元,结合模电数电的硬件电路支持的综合项目开发,也是作为大学生需要了解并且熟练运用的基础。

掌握了这些知识,对于我们以后的职业发展也有着莫大的帮助。

二、项目设计正文2.1、项目分析及方案制定首先对于“智能寻迹小车”这个标题而言,我们可以分为两个部分:小车和智能寻迹。

“小车"决定了硬件电路的大致构成:电源、电容、电阻、开关、电机、LED.而“智能”则决定了一些高级电路的选用:MCU、传感器、电机驱动、电位器及一些IC。

循迹小车设计开题报告

循迹小车设计开题报告

循迹小车设计开题报告循迹小车设计开题报告一、引言循迹小车是一种基于光电传感技术的智能机器人,其主要功能是通过感知地面的黑线来实现自动导航。

本文将探讨循迹小车的设计与实现,旨在提高小车的导航准确性和稳定性。

二、背景介绍循迹小车的设计灵感源于工业自动化领域中的自动导航技术。

传统的自动导航系统主要依赖于GPS或惯性导航系统,但这些技术在室内环境或复杂地形下的应用受限。

光电传感技术的出现为解决这一问题提供了新的思路。

三、设计目标本次设计的循迹小车旨在实现以下目标:1. 提高导航准确性:通过优化光电传感器的布局和算法,减少误差,提高小车对黑线的识别能力。

2. 提高导航稳定性:通过引入陀螺仪和加速度计等传感器,实时监测小车的姿态,提高导航的稳定性和鲁棒性。

3. 增加自主决策能力:引入人工智能技术,使小车能够根据环境变化做出合理的决策,如绕过障碍物或调整行进速度等。

四、设计方案1. 光电传感器布局优化:通过分析黑线的特征和小车的行进路径,确定最佳的传感器布局方式,以提高对黑线的识别率。

同时,考虑传感器的灵敏度和响应速度,选择合适的传感器型号。

2. 算法优化:设计高效的图像处理算法,对传感器获取的数据进行实时分析和处理,提取出黑线的位置和方向信息。

通过与预设的路径进行比对,实现小车的自动导航。

3. 传感器融合:结合陀螺仪和加速度计等传感器,实时监测小车的姿态和运动状态,提高导航的稳定性和准确性。

通过传感器融合算法,将多个传感器的数据进行融合,得到更精确的导航结果。

4. 人工智能引入:利用深度学习算法,训练小车识别和应对不同场景下的障碍物。

通过引入人工智能技术,使小车能够根据环境变化做出智能决策,提高自主导航的能力。

五、预期成果通过以上设计方案,我们预期实现以下成果:1. 提高循迹小车的导航准确性和稳定性,使其能够更精确地按照预设路径行进。

2. 增加小车的自主决策能力,使其能够根据环境变化做出智能决策,提高自主导航的能力。

智能循迹小车设计论文

智能循迹小车设计论文

摘要:循迹小车采用传感器来识别白色路面中央的黑色引导线,通过C8051F310单片机实现对转向舵机和驱动电机的PWM控制,利用检测器检测道路上的标志,使小车实现快速稳定地循线行驶。

分模块阐述了循迹小车的原理、软硬件设计及制作过程.针对路径特点对循迹小车的方向控制和速度控制提出了舵机分级转向、速度分段控制的解决方案。

实验表明,循迹小车能够较快速、平稳地完成对各种曲率引导线的循迹行驶任务。

关键词:单片机、电机、传感器、循迹。

Summary:Tracing car photoelectric sensor to identify the white road to guide the central black line through the C8051F310 microcontroller and drive to achieve the steering servo motor PWM control, the use of detector on the road signs to make the car look fast and stable line-line, down. Sub-module describes the principles of tracing the car, hardware and software design and production process.Path tracing for the characteristics of the car’s direction and speed control servo proposed classification steering, speed control sub-solutions. Experiments show that, tracing the car can be more rapid and smooth completion of the guide line of curvature of the driving task of tracing. Keywords:Microcontroller, motors, sensors, tracing.目录第一章引言一、设计目的 (4)二、设计方案 (4)三、报告内容安排 (4)四、技术方案概要 (5)第二章硬件部分一、单片机最小系统 (6)二、电源电路 (7)三、H桥电机驱动电路 (7)四、传感器输入电路 (8)五、硬件电路原理图 (9)第三章软件部分一、软件设计框架 (10)二、端口初始化 (10)三、PWM初始化 (11)四、功能函数 (12)第四章程序清单 (14)第五章总结 (19)参考文献 (20)附录 (21)第一章引言随着微电子技术的不断发展,微处理器芯片的集成度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统,这种技术促进机器人技术也有了突飞猛进的发展。

智能循迹避障小车报告书精选全文完整版

智能循迹避障小车报告书精选全文完整版

可编辑修改精选全文完整版电子科协竞赛项目报告书参赛作品:基于51单片机的智能寻迹避障小车小组成员:盛博专业班级:电信1205班报告提交日期: 2013年 4 月12日目录1设计要求与功能 (3)1.1设计基本要求 (3)2 硬件设计 ................................................. (3)2.1主控系统及所需主要元件 (3)2.2机械系统 (4)2.3电机驱动模块 (5)2.4 循迹模块 (6)2.5避障模块 (6)2.6电源模块 (7)2.7报警模块 (7)2.8远程操控模块 (8)3 软件设计 (8)3.1主程序及框图 (8)3.2电机驱动程序 (9)3.3循迹程序 (9)3.4避障程序 (10)3.5报警及远程操控程序 (10)4调试过程 (11)5总结 (11)附录总C程序 (11)一设计要求与功能设计并制作一个能自动循迹壁障的智能小车。

可沿不规则黑色轨迹行驶,遇到障碍可自动绕行,遇到黑色停止线自动停止,轨迹、通道、障碍现场如图。

1.基本要求(1)小车启动沿着轨迹行驶,遇到终点线停车;(2)小车遇到行驶轨迹范围内的障碍物应自动绕行,脱离轨迹后能自动寻找轨迹并形式到终点。

2.发挥部分(1)增加声、光报警功能,增加无线遥控启动、停止功能;(2)利用Protel或者Alitum Designer等软件进行PCB设计。

二硬件设计2.1主控系统及所需主要元件主控系统由STC89C52单片机负责,通过接收并分析信号模块传输过来的信号对各模块下达指令,使各模块能持续并稳定地共同工作,形成有机的整体,从而实现小车的各种功能。

所需主要元件:STC89C52单片机,减速电机,红外对管等。

各口功能:P0.0-P0.2是红外传感器信号输入口;P0.3-P0.6是四路红外对管信号输入口;P1.0-P1.1是无线信号输入口;P2.0-P2.7是四路减速电机控制信号输出口。

智能循迹小车报告

智能循迹小车报告

智能循迹小车队长:黎建峰队员:江福家章春金赛前辅导老师:吴桔生张荣刚林章文稿整理辅导老师:吴桔生摘要设计分为五个模块:单片机最小系统、电机驱动电源、电机驱动电路、红外循迹模块、显示模块。

电机驱动电路用于转向控制;红外循迹模块利用四个光电管,对黑色轨道进行循迹;电机驱动电源利用两个7805提供三路5v电压,一路供给最小系统,一路供给电机驱动电路,一路供给循迹模块。

本设计中为了简化电路,减少小车的负载,利用软件编程的方法控制电机的转速从而控制小车的行驶速度,这是本设计的一大特色。

一、方案论证与比较1、轨迹探测模块设计与比较方案一、使用简易光电传感器结合外围电路进行检测由于光电传感器对行驶过程中的稳定性要求非常高,而且容易受到光线环境和路面介质的影响,误测的几率非常大。

在使用中极易出现问题,给检测和调试造成很大的困难,容易因为检测的失误导致整个系统的不正常工作,所以最终并未采用此方案。

方案二、使用两只stl198光电管把两只光电管分别排列在黑色轨迹的两侧,根据其接收反射光的多少输出高低电平来控制小车的转向,以达到循迹的目的。

但是调试表明,如果两只开关的距离很小,则以约束了小车的速度来达到检测轨迹的目的,如果两只开关的距离太大,则同时传来同一电平信号的几率很大,容易使小车的行驶路线偏离轨道,达不到循迹的目的。

方案三、使用四只stl198光电管分左右两边各两只光电管一排排列,里面的两个距离靠的较远,外面的两个靠的比较近。

当小车脱离轨道时即里面的两个光电管中有一个或者两个都偏离了轨道,等待外面的那两个光电管的任何一个检测到黑线时,做出相应的转向调整。

直到中间的两个开关管的任何一个检测到黑线为止(即回到轨道上)再恢复正向行驶。

现场调试表明,小车在行驶中虽然出现摇摆(各个光电管间的距离达到1厘米),但是基本上能准确地达到循迹目的。

综合考虑实际中光电管的安装,考虑小车的行驶速度和循迹准确性,我们最终选择了方案三。

智能小车循迹报告

智能小车循迹报告

电工电子实习报告学院:专业班级:学生姓名:指导教师:完成时间:成绩:智能循迹小车设计报告一. 设计要求(1).通过理论学习掌握基本的焊接知识以及电子产品的生产流程。

(2).熟悉掌握手工焊接的方法与技巧。

(3).完成循迹智能小车的安装与调试二. 设计的作用、目的1.利用所学过的基础知识,通过本次电子实习培养独立解决实际问题的能力;2.巩固本课程所学的理论知识和实验技能;3.掌握常用电子电路的一般设计方法,提高设计能力和实验、动手能力,为今后从事电子电路的设计、研制电子产品打下基础。

三.设计的具体实现1. 系统概述智能机器人小车的设计中我们使用的是一体反射式红外对管,所谓一体就是发射管和接受管固定在一起,反射式的工作原理就是接收管接收到的信号是发射管发出的红外光经过反射物的反射后得到的,所以使用红外对管进行循迹时必须是白色地板红外寻迹是利用红外光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。

(为简化操作,本次实习只安装了两侧的探头)1)行驶直线的控制:利用红外传感器的左右最外端的探头检测黑线,如果全白则说明在道中间,没有偏离轨道,走直线;一旦右侧探头检测到黑线,说明小车外侧探头已跑出轨道,让车左拐;同理一旦左侧检测到黑线,说明左侧探头已经出线,执行右拐命令。

2)拐直角弯的控制:当车前探头检测到黑线,执行直走,让车中心探头去检测,一旦探头检测到黑线开始左拐,直到车位探头检测到跳出左拐命令,继续开始执行循迹,通过设置车中间探头与车尾探头的间距,便可以实现拐弯的角度,进而顺利入弯。

小车的硬件主要包括4大模块:即电源模块、电机驱动模块、红外循迹模块、简易控制模块。

系统工作框图如下:2.单元电路设计与分析1)电源模块电源模块电路板LM2596 开关电压调节器是降压型电源管理单片集成电路,能够输出3A 的驱动电流,同时具有很好的线性和负载调节特性。

智能循迹小车实验报告

智能循迹小车实验报告

摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。

本次设计采用STC公司的89C52单片机作为控制芯片,传感器模块采用红外光电对管和比较器实现,能够轻松识别黑白两色路面,同时具有抗环境干扰能力,电机模块由L298N芯片和两个直流电机构成,组成了智能车的动力系统,电源采用的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。

关键词智能小车 STC89C52单片机 L298N 红外光对管1绪论随着科学技术的发展,机器人的设计越来越精细,功能越来越复杂,智能小车作为其的一个分支,也在不断发展。

在近几年的电子设计大赛中,关于小车的智能化功能的实现也多种多样,因此本次我们也打算设计一智能小车,使其能自动识别预制道路,按照设计的道路自行寻迹。

2设计任务与要求采用MCS-51单片机为控制芯片(也可采用其他的芯片),红外对管为识别器件、步进电机为行进部件,设计出一个能够识别以白底为道路色,宽度10mm左右的黑色胶带制作的不规则的封闭曲线为引导轨迹并能沿该轨迹行进的智能寻迹机器小车。

3方案设计与方案选择3.1硬件部分可分为四个模块:单片机模块、传感器模块、电机驱动模块以及电源模块。

3.1.1单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。

由于以前自己开发板使用的是ATMEL公司的STC89C52,所以让然选择这个芯片作为控制核心部件。

STC89C52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

其程序和数据存储是分开的。

3.1.2传感器模块方案一:使用光敏电阻组成光敏探测器采集路面信息。

阻值经过比较器输出高低电平进行分析,但是光照影响很大,不能稳定工作。

方案二:使用光电传感器来采集路面信息。

使用红外光电对管,其结构简明,实现方便,成本低廉,没有复杂的图像处理工作,因此反应灵敏,响应时间少。

智能循迹小车开题报告免费

智能循迹小车开题报告免费

智能循迹小车开题报告免费智能循迹小车开题报告一、引言智能循迹小车是一种基于人工智能技术的创新产品,它能够通过内置的传感器和算法,准确地识别和跟踪指定路径,实现自主导航。

本文将介绍智能循迹小车的设计思路、关键技术和应用前景。

二、设计思路智能循迹小车的设计思路是模拟人类的视觉系统,通过感知环境中的标记物,从而准确地跟踪指定路径。

首先,我们需要选择合适的传感器,如摄像头或红外线传感器,用于捕捉环境中的标记物。

然后,通过图像处理或信号处理技术,提取出标记物的特征,并将其与预先设定的路径进行匹配。

最后,利用控制算法,将小车的行动与标记物的位置相对应,实现自主导航。

三、关键技术1. 传感器选择:不同的传感器对于循迹小车的效果有着重要影响。

摄像头能够提供更为精确的图像信息,但对于光线和角度的要求较高;而红外线传感器则能够在光线较差的情况下工作,但对于标记物的识别可能不够准确。

因此,在设计中需要根据实际需求选择合适的传感器组合。

2. 图像处理与模式识别:针对使用摄像头的循迹小车,图像处理和模式识别是关键技术。

通过对图像进行预处理、特征提取和分类,可以实现对标记物的准确识别和跟踪。

常用的算法包括边缘检测、颜色分割和模板匹配等。

3. 控制算法与路径规划:控制算法是实现循迹小车自主导航的核心。

根据传感器获取的标记物信息,控制算法能够实时调整小车的行动,保持在指定路径上。

同时,路径规划算法能够根据预设的路径和环境变化,动态调整小车的行进方向和速度。

四、应用前景智能循迹小车具有广泛的应用前景。

首先,它可以应用于物流行业,实现自动化的仓储和搬运,提高效率和减少人力成本。

其次,智能循迹小车可以用于室内导航和导览,为游客提供方便的导航服务。

此外,它还可以应用于农业领域,实现农作物的自动化种植和采摘。

总之,智能循迹小车在多个领域都有着广阔的应用前景。

五、总结智能循迹小车是一项基于人工智能技术的创新产品,通过传感器、图像处理和控制算法,实现了自主导航和循迹功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能循迹小车___设计报告智能循迹小车设计专业:自动化班级:自动化132姓名:罗植升莫柏源梁桂宾指导老师:2014年4月——2010年6月本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

小车系统以 STC89C52单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。

此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。

现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。

作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。

无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。

但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。

为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。

所以立“智能循迹小车”一题作为尝试。

此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

一、实验目的:通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。

进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

二、设计方案:该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L9110发出控制命令,控制电机的工作状态以实现对小车姿态的控制。

三、报告内容安排:本技术报告主要分为三个部分。

第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术原理的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。

技术方案概要说明本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。

工作原理:➢利用红外采集模块中的红外发射接收对管检测路面上的轨迹➢将轨迹信息送到单片机➢单片机采用模糊推理求出转向的角度和行走速度,然后去控制行走部分➢最终完成智能小车可以按照路面上的轨迹运行。

硬件电路的设计1、最小系统:小车采用STC89C52单片机作为控制芯片,图1是其最小系统电路。

主要包括:时钟电路、电源电路、复位电路。

其中各个部分的功能如下:1、时钟电路:给单片机提供一个外接的12MHz的石英晶振。

2、电源电路:给单片机提供5V电源。

3、复位电路:在电压达到正常值时给单片机一个复位信号。

图1 单片机最小系统原理图2、电源电路设计:模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。

在本设计中,51单片机使用5V电源,电机及舵机使用6V电源。

考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为 6.5-6.8V,所以单片机及传感器模块采用7805稳压后的5V电源供电,舵机及电机直接由电池供电。

3、传感器电路:光电寻线方案一般由多对TCRT5000红外收发管组成,通过检测接收到的反射光强,判断黑白线。

原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。

图2 赛道检测原理图:4、电机驱动电路:电机驱动芯片L9110,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。

L9110可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。

5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。

也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。

L9110的逻辑功能:表1 SHARP GP2D12实物图外形及封装:图3 L9110实物图L9110电路原理图:由于一片L298N可以直接驱动两个电机,但是为了加大驱动力,我们采用两路并联的方式来驱动电机。

图3.3 L9110电路图软件系统的实现小车循迹规则:若小车偏左的时候,车轮将向右偏转;若小车偏右,车轮将向左偏转;若没有偏移,小车将继续向前;若小车完全偏离黑色轨迹,小车后退以寻找黑色轨迹。

小车程序:#include <AT89X52.h> //调用51单片机的头文件#include <intrins.h>#include <math.h>#define uchar unsigned char//宏定义#define uint unsigned int//宏定义sbit you1=P1^3;//定义单片机控制右边电机的引脚sbit you2=P1^4;//定义单片机控制右边电机的引脚sbit zuo1=P1^5;//定义单片机控制左边电机的引脚sbit zuo2=P1^6;//定义单片机控制左边电机的引脚sbit z=P1^1;//定义单片机连接循迹板左边光电管的引脚sbit y=P1^0;//定义单片机连接循迹板右边光电管的引脚sbit q=P1^2;//定义单片机连接循迹板前边光电管的引脚sbit chongshua=P3^6;//定义单片机控制冲刷的引脚sbit tuodi=P3^7;//定义单片机控制拖地的引脚//---------------------------------------//1602液晶相关I/O设置sbit E=P2^3; //1602液晶的E脚接在P2.3口上sbit RW=P2^4; //1602液晶的RW脚接在P2.4口上sbit RS=P2^5; //1602液晶的RS脚接在P2.5口上//HC-SR04相关I/O设置sbit TIRG=P3^4; //定义IO口,具体可以去查看原理图sbit ECHO=P3^2; //定义IO口,具体可以去查看原理图bit flag =0;uchar k;uchar a=0;//定义一个变量a,用来读取串口的数据void delay(uint z)//一个带参数的延时程序{int i,j;//定义两个变量for(i=10;i>0;i--)for(j=z;j>0;j--);//将参数z赋值给j}void init()//初始化子程序{TMOD=0x20;//设置定时器T1为工作方式2TH1=0xfd;TL1=0xfd;//T1定时器装初值TR1=1;//启动定时器T1REN=1;//允许串口接收SM0=0;SM1=1;//设置串口工作方式1EA=1;//开总中断ES=1;//开串口中断}void qian()//左右轮协同前进子函数{you1=0;you2=1;zuo1=0;zuo2=1;delay(6);//pwm调速此为pwm有效值you1=1;you2=1;zuo1=1;zuo2=1;delay(4);}void zuo()//左右轮协同左转子函数{you1=0;you2=1;zuo1=1;zuo2=0;delay(9);//pwm调速此为pwm有效值you1=1;you2=1;zuo2=1;delay(1);}void mzuo()//左右轮协同左转子函数{you1=0;you2=1;zuo1=1;zuo2=0;delay(10);//pwm调速此为pwm有效值you1=1;you2=1;zuo1=1;zuo2=1;delay(5);}void you()//左右轮协同右转子函数{you1=1;you2=0;zuo1=0;delay(9);//pwm调速此为pwm有效值you1=1;you2=1;zuo1=1;zuo2=1;delay(1);}void myou()//左右轮协同右转子函数{you1=1;you2=0;zuo1=0;zuo2=1;delay(10);//pwm调速此为pwm有效值you1=1;you2=1;zuo1=1;zuo2=1;delay(5);}void hou()//左右轮协同前进子函数{you1=1;you2=0;zuo1=1;zuo2=0;delay(9);//pwm调速此为pwm有效值you1=1;you2=1;zuo1=1;zuo2=1;delay(1);}void ting()//左右轮都停止转动{you1=1;you2=1;zuo1=1;zuo2=1;}void Delay1602(unsigned int t){unsigned int k; //定义一个16位寄存器用来做延时用for(k=0;k<t;k++); //延时}void LCD1602_busy(void){P0_7=1; //将P0.7置1,为读状态做准备RS=0; //RS=0、RW=1、E=1时,忙信号输出到DB7,由P0.7读入RW=1; //RS=0、RW=1、E=1时,忙信号输出到DB7,由P0.7读入E=1; //RS=0、RW=1、E=1时,忙信号输出到DB7,由P0.7读入while(P0_7==1); //由P0.7读入1,表示1602液晶忙,需要等待 E=0; //读完以后,恢复E的电平}void LCD1602_Write_com(unsigned char combuf){RS=0; //选择指令寄存器RW=0; //选择写状态P0=combuf; //将命令字通过P0口送至DBE=1; //E高电平将命令字写入1602液晶 E=0; //写完以后,恢复E的电平}void LCD1602_Write_com_busy(unsigned char combuf){LCD1602_busy(); //调用忙检测函数LCD1602_Write_com(combuf); //调用忙检测函数}void LCD1602_Write_data_busy(unsigned char databuf){LCD1602_busy(); //调用忙检测函数RS=1; //选择数据寄存器RW=0; //选择写状态P0=databuf; //将命令字通过P0口送至DBE=1; //E高电平将命令字写入1602液晶E=0; //写完以后,恢复E的电平}void LCD1602_Write_address(unsigned char x,unsigned char y){x&=0x0f; //列地址限制在0-15间y&=0x01; //行地址限制在0-1间if(y==0) //如果是第一行LCD1602_Write_com_busy(x|0x80); //将列地址写入else //如果是第二行LCD1602_Write_com_busy((x+0x40)|0x80); //将列地址写入}void LCD1602_init(void){Delay1602(1500); //调用延时函数LCD1602_Write_com(0x38); //8位数据总线,两行显示模式,5*7点阵显示Delay1602(500); //调用延时函数LCD1602_Write_com(0x38); //8位数据总线,两行显示模式,5*7点阵显示Delay1602(500); //调用延时函数LCD1602_Write_com(0x38); //8位数据总线,两行显示模式,5*7点阵显示LCD1602_Write_com_busy(0x38); //8位数据总线,两行显示模式,5*7点阵显示LCD1602_Write_com_busy(0x08); //显示功能关,无光标LCD1602_Write_com_busy(0x01); //清屏LCD1602_Write_com_busy(0x06); //写入新的数据后,光标右移,显示屏不移动LCD1602_Write_com_busy(0x0C); //显示功能开,无光标}void LCD1602_Disp(unsigned char x,unsigned char y,unsigned char buf) {LCD1602_Write_address(x,y); //先将地址信息写入LCD1602_Write_data_busy(buf); //再写入要显示的数据}void Timer0(void) interrupt 1{flag=0;}void xunji(){qian();//调用前进子函数,使小车光电管不满足以下几个条件时都处于前进状态while((z==0)&&(y==1)&&(q==1))//判断当左边光电管遇到黑线,{ //右边和前边的光电管遇到白线时左转zuo();//调用左转函数zd=1;}while((z==1)&&(y==0)&&(q==1))//判断当右边光电管遇到黑线,{ //左边和前边的光电管遇到白线时右转you();//调用右转函数yd=1;}while((z==0)&&(y==0)&&(q==1))//判断当左边光电管遇到黑线,右边光电管也遇到黑线{ //前边的光电管遇到白线时停止ting();//调用停止函数hd=1;}while((z==0)&&(y==0)&&(q==0))//判断当左边、右边、前边光电管同时遇到黑线{ //即遇到十字路口,小车前进qian();//调用前进函数}}void csb(){long S;unsigned int i;unsigned int Timeout;LCD1602_init(); //调用1602液晶初始化函数//***定时器Timer0初始化***TMOD&=0xF0; //将TMOD的低4位定时器0控制部分清零TMOD|=0x01; //设置定时器0为方式1TMOD=0x01;TL0=0; //设置定时器0初值低8位TH0=0; //设置定时器0初值高8位TR0=0; //停止定时器0ET0=1; //Timer0中断允许//***开全局中断设置****//定时器Timer0设置了中断允许,此处要开全局中断EA=1; //开全局中断TIRG=1; //发一个脉冲触发信号i=4; //维持约17US,符合不低于10US的要求while(i>0) //维持约17US,符合不低于10US的要求 i--; //维持约17US,符合不低于10US的要求TIRG=0; //撤销触发信号TR0=0; //关闭定时器TL0=0; //设置定时器0初值低8位为0 TH0=0; //设置定时器0初值高8位为0k=0; //清除溢出标志flag=0;Timeout=0;while((ECHO==0)&&((Timeout++)<50000)); //等待回响高电平TR0=1; //回响高电平来后启动定时器Timeout=0;while((ECHO==1)&&((Timeout++)<50000)); //等待回响高电平结束后TR0=0; //关闭定时器S=((TH0*256+TL0)*1)/58;if(flag==1||S>400) //超出测量范围显示“-”{LCD1602_Disp(0, 0, '-'); //显示百位-LCD1602_Disp(1, 0, '-'); //显示十位-LCD1602_Disp(2, 0, '-'); //显示个位-LCD1602_Disp(3, 0, 'C'); //显示CLCD1602_Disp(4, 0, 'M'); //显示M}else{LCD1602_Disp(0, 0, S%1000/100+'0'); //显示百位LCD1602_Disp(1, 0, S%1000%100/10+'0'); //显示十位LCD1602_Disp(2, 0, S%1000%100%10+'0'); //显示个位LCD1602_Disp(3, 0, 'C'); //显示CLCD1602_Disp(4, 0, 'M'); //显示M}i=18000; //维持约77400US,符合不低于60MS的要求 while(i>0) //维持约77400US,符合不低于60MS的要求i--; //维持约77400US,符合不低于60MS的要求}void main()//主程序{init();//调用初始化子程序while(1)//死循环{switch(a)//判断a从串口读取到的数据{case 0x00://如果是0x1f就前进xunji();break;case 0x01://如果是0x2f就后退qian();break;case 0x02://如果是0x3f就左转break;case 0x03://如果是0x4f就右转mzuo();zd=1;break;case 0x04://如果是0x00就停止hou();break;case 0x05://如果是0xa0车灯打开myou();yd=1;break;case 0x06://如果是0xb0车灯关闭chongshua=1;break;case 0x07://如果是0xc0蜂鸣器鸣响hd=1;break;case 0x08://如果是0xc0蜂鸣器鸣响tuodi=1;break;}}}void chuan() interrupt 4//串口中断服务程序{RI=0;//软件清除串口响应a=SBUF;//读取单片机串口接受的蓝牙模块发送的数据}结论根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。

相关文档
最新文档