小车寻线程序
- 格式:docx
- 大小:17.12 KB
- 文档页数:7
第二届“飞思卡尔”杯全国大学生智能汽车邀请赛技术报告目录第一章引言 (1)1.1 智能车制作概述 (1)1.2 参考文献综述 (1)1.3 技术报告内容与结构 (1)第二章设计方案概述 (3)2.1 总体设计 (3)2.2 具体方案 (3)2.2.1 道路识别模块 (3)2.2.2 速度检测模块 (4)第三章模型车整体设计 (5)3.1 机械部分的调整 (5)3.2 传感器设计与安装 (5)3.2.1 光电管安装: (5)3.2.2 摄像头安装: (6)3.2.3 测速装置 (7)第四章硬件电路设计 (9)4.1 整体介绍 (9)4.2 各模块电路介绍 (10)第五章控制算法实现 (15)5.1 总体软件设计 (15)5.2 路径识别算法 (16)5.2.2 基于光电管的模糊控制算法 (16)5.2.2 基于CMOS的算法 (18)5.2.3 两者的结合 (20)5.3 速度控制算法 (20)第六章调试及主要问题解决 (23)6.1 调试工具 (23)6.2 调试过程 (24)6.3 主要技术参数说明 (25)第七章结论 (27)附录A 参考书目 (I)附录B 部分程序...................................................................................... I I第一章引言1.1 智能车制作概述本队在小车制作过程中,先对比赛内容,要求与规则进行了详细分析,然后按照要求制订了几种设计方案,并对几种方案进行比较敲定最后方案。
根据方案完成小车的总体设计和详细设计(包括底层硬件设计和总体软件设计),在完成了车模组装和改造后,完成了各个模块的硬件电路设计与安装,并进行了控制算法的设计和软件实现,最后进行了整车的调试和优化。
1.2 参考文献综述方案设计过程中参考了一些相关文献,如参考文献所列。
例如文献 1 与 2 单片机嵌入式系统在线开发方法。
目录智能寻迹灭火小车系统功能概述 (2)1系统硬件设计 (3)1.1AT89C52主控芯片介绍 (4)1.2寻迹系统方案设计 (4)1.3电源系统方案设计 (5)1.4驱动电机系统方案设计 (5)1.5显示系统设计 (6)1.6温度系统设计 (6)1.7、风扇模块设计 (6)2系统软件设计 (7)2.1寻迹模块程序流程图 (7)2.2驱动电机模块程序流程图 (8)2.3显示模块程序流程图 (9)2.4温度模块程序流程图 (10)3程序设计 (11)3.1寻迹模块主程序 (11)3.2驱动电机模块主程序 (12)3.3显示模块主程序 (13)3.4温度模块主程序 (13)3.5风扇模块主程序 (15)3.6延时子程序 (15)附录1系统硬件原理图 (16)附录2部分程序代码 (17)智能寻迹灭火小车系统功能概述系统各个功能模块简介:寻迹模块:主要用来给小车做导航前进用。
电源模块:主要用来分别区分给单片机与电机驱动模块供电。
温度模块:主要用来对温度传感器给单片机传值的功能。
显示模块:主要用来显示单片机传过来的温度值。
电机驱动模块:主要用来驱动两个减速直流电机,实现小车的前进、后退、前左转、前右转、后左转、后右转、停车等功能。
风扇模块:主要是用来控制风扇是否吹风,来实现小车灭火功能。
系统工作原理在智能寻迹灭火小车控制系统的设计中,工作原理:首先通过18B20检测传回来的温度,实时显示。
当温度达到上限时,开始启动报警,并驱动小车沿着黑线寻迹前进。
到达指定地点时,小车停止,启动风扇,开始吹风。
当温度降回原先的区间。
小车开始寻迹返回。
再一次运行。
1系统硬件设计本控制系统硬件设计框图1-1如下所示:图1-1 硬件设计框图在智能寻迹灭火小车控制系统的设计中,以A T89C52为核心,用了两片L298N,一片用于驱动两个减速电机,一片用于驱动风扇。
12V电源单独给电机供电,再用7805把12V电源降压至5V给单片机供电。
本文设计了基于图像识别的智能送药小车。
运行过程中视觉识别模块对边缘线和中心线进行探测,并在对数字字模进行捕捉识别后通过串口传输给单片机。
信号通过单片机分析与处理后,输出周期性的PWM 波,控制全桥驱动芯片L298P 驱动4个直流减速电机来控制智能小车的转速和转向,将药品运送至对应病房。
本文采用卷积神经网络(CNN)对数字字模进行识别。
CNN 在图像识别的应用十分广泛,有着较好的鲁棒性,可以应对病房牌号被污染、遮挡的情况。
前言智能送药小车是一种低速、无人操控的自动化药物运送车辆。
其智能配送系统需要实现的主要功能为:从药房领取所需药品,沿预设定路线配送给各个病房,并在运送完成后实现自主返回药房。
通过这种送药方式,医护人员可以避免与病人的直接接触,从而减小被传染性疾病感染的风险。
由于病房多以数字表示不同的房间,小车对数字识别的准确度直接决定智能配送系统能否实现。
但在实际的工作环境下,小车所采集到的病房数字图像,可能会出现旋转、形变、投影畸变等情况;此外,病房数字牌也常常存在着被污染、遮挡的情况。
这些因素都将影响图像识别结果的准确度。
而卷积神经网络作为一种在深度学习中广泛应用的网络结构,最早由Fukushima 等人提出并实现[1],之后LeCun 等人设计并训练了CNN,该模型被称为LeNet-5,后来一系列基于该模型的网络结构在模式识别领域中取得了较好的分类效果[2]。
卷积神经网络结构可以有效降低网络的复杂度,减少训练参数的数目,使基于图像识别的智能送药小车夏宇 文晨昱(南京理工大学,江苏 南京,210000)之对平移、扭曲等具有一定程度的不变性,并具有较强的强鲁棒性和容错能力[3],基于这些优越的特性,它在各种信号和图像处理任务中展现的性能优于标准的全连接神经网络,并被广泛应用于图像识别领域[4],例如,数字识别。
系统方案的设计与论证本文中智能小车的硬件组成部分主要有:以STM32作为核心的主控器部分,视觉识别部分,显示部分,电机驱动部分以及红外巡线部分。
沈阳理工大学课程名称:基于单片机智能循迹小车姓名:魏玉柱指导教师:程磊催宁海摘要本文论述了基于单片机的智能循迹小车的控制过程。
智能循迹是基于自动引导机器人系统,用以实现小车自动识别路线,以及选择正确的路线。
智能循迹小车是一个运用传感器、单片机、电机驱动及自动控制等技术来实现按照预先设定的模式下,不受人为管理时能够自动实现循迹导航的高新科技。
该技术已经应用于无人驾驶机动车,无人工厂,仓库,服务机器人等多种领域。
本设计采用STC89C52单片机作为小车的控制核心;采用TCRT5000红外反射式开关传感器作为小车的循迹模块来识别白色路面中央的黑色引导线,采集信号并将信号转换为能被单片机识别的数字信号;采用驱动芯片L298N构成双H桥控制直流电机,其中软件系统采用C程序,本设计的电路结构简单,容易实现,可靠性高。
关键词:STC89C52 智能循迹小车TCRT5000传感器电机驱动目录1引言 (4)2 需求分析 (4)2.2 循迹小车的发展历程回顾 (5)2.3智能循迹小车的应用 (5)2.4 智能循迹小车研究中的关键技术 (8)3系统设计 (9)4详细设计 (8)4.1 硬件设计 (8)4.1.1电路原理图 (9)4.1.2 器件选择 (10)4.1.2.1 智能循迹小车的主控芯片的选择 (10)4.1.2.2 智能循迹小车电源模块的选择 (10)4.1.2.3 智能循迹小车电机驱动电路的选择 (11)4.1.2.4 智能小车循迹模块的选择 (11)4.1.3 模块设计 (12)4.1.3.1电机驱动模块电路 (12)4.1.3.2光电传感器模块 (12)4.2 软件设计 (14)4.2.1程序流程图 (14)4.2.2实现主要代码 (14)5 实验结果 (16)5.1设计实现 (16)5.2出现的问题和解决的方法 (17)6 结束语 (18)7.参考文献 (19)1引言随着控制技术及计算机技术的发展,寻迹小车系统将在未来工业生产和日常生活中扮演重要的角色。
循迹小车黑线检测一、背景自动导引车(Automated Guided Vehicle,AGV)是一种以电池为动力,装有非接触导向装置和独立寻址系统,无人驾驶并能完成一系列预定工作的自动化车辆。
它能在计算机的监控下按指令自主驾驶。
自动沿着规定的导引路径行驶,到达指定地点后完成一系列作业任务。
该产品已经成为柔性生产线、柔性装配线、仓储物流自动化系统的重要设备。
对于线路既定的AGV系统来讲,与CCD传感器相比,采用红外反射式传感器循迹在价格、数据处理方面有较大优势。
本次制作采用红外反射式传感器作为循迹装置(简单化的AGV)完成小车的循迹,并在此基础上实现目标物的识别、信息获取和上传的功能。
二、循迹电路的制作1、循迹常用方案1)分离式光电二极管2)反射式光电传感器3)激光传感器4)摄像头5)电磁导轨2、小车循迹原理该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。
本次制作利用了简单、应用也比较普遍的检测方法——红外探测法。
图1小车循迹跑道红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。
3、传感器选择市场上用于红外探测法的器件较多,可以利用反射式传感器外接简单电路自制探头,也可以使用结构简单、工作性能可靠的集成式红外探头。
ST系列集成红外探头价格便宜、体积小、使用方便、性能可靠、用途广泛,所以该系统中最终选择了ST188反射传感器作为红外光的发射和接收器件,其内部结构和外接电路均较为简单,如图2所示:图2 传感器电路ST188采用高发射功率红外光、电二极管和高灵敏光电晶体管组成,采用非接触式检测方式。
ST188的检测距离很小,一般为8~15毫米,因为8毫米以下是它的检测盲区,而大于15毫米则很容易受干扰。
应用范围:1.智能小车或机器人寻线(包括黑线和白线),沿着黑线路径走,又称寻迹。
2.智能小车避悬崖,防跌落。
3.智能小车避障碍(注意:因传感器的检测距离太短灵敏度不够高,故太接近黑色的物体将检测不了。
4.反光材料检测,如纸张、磁带卡、非接触式IC卡等等。
使用方法:1.传感器接口有3根排针,分别是VCC、OUT、GND。
VCC和GND为供电端,OUT是信号输出端。
2.检测到物体,信号端输出低电平;未检测到物体,信号端输出高电平。
3.主要判断信号输出端是0或者1,就能判断物体是否存在。
性能参数:1:检测距离,检测白纸时约为2厘米。
视颜色的不同距离有所不同,白色最远。
2.供电电压:2.5V~12V,不要超过12V。
(注意:最好用低电压供电,供电电压太高传感器的寿命会变短。
5V 供电为佳。
)3.工作电流,5V时18~20ma。
经大量测试,传感器硬件设置为18~20ma工作电流时性能最佳,主要表现在抗干扰能力上。
如果客户需要小功耗的,本店也可以修改,最小能做到5ma。
拍下留言注明即可。
4.检测到物体,信号端输出低电平;未检测到物体,信号端输出高电平。
5.传感器输出TTL电平,能直接与3.3V或者5V单片机IO口相连。
黑线或者白线检测原理1.利用黑色对光线的反射率小这个特点,当平面的颜色不是黑色时,传感器发射出去的红外光被大部分反射回来。
于是传感器输出低电平0(这个时候就判断为白色)。
2.当平面中有一黑线,传感器在黑线上方时,因黑色的反射能力很弱,反射回来的红外光很少,达不到传感器动作的水平,所以传感器还输出1(这个时候就会判断为黑色)。
3.我们只要用单片机判断传感器的输出端是0或者是1,就能检测到黑线。
4.检测白线的原理和检测黑线的原理一样,检测白线时,白线周边的颜色也要比较接近黑色,然后调节红外传感器上面的可调电阻,将灵敏度调低,一直调到刚好周边的颜色检测不到为止,那样就能检测白线了。
第1篇一、实验目的1. 熟悉光电传感器的基本原理和应用。
2. 掌握光电寻迹小车的设计与制作方法。
3. 提高动手能力和创新意识。
二、实验原理光电寻迹小车利用光电传感器检测地面上的黑白线,通过单片机控制小车转向和速度,使小车沿着预设的路线行驶。
光电传感器分为发射器和接收器两部分,发射器发射红外线,接收器接收反射回来的红外线。
当红外线照射到黑色地面时,反射光强度减弱,接收器输出低电平;当红外线照射到白色地面时,反射光强度增强,接收器输出高电平。
通过检测接收器输出的电平变化,单片机判断小车是否偏离预设路线,从而控制小车转向和速度。
三、实验器材1. 光电传感器模块2. 单片机开发板3. 电机驱动模块4. 电池盒5. 小车底盘6. 轮子7. 黑色和白色纸板8. 连接线9. 螺丝刀10. 电工胶带四、实验步骤1. 搭建小车底盘:将轮子安装在底盘上,固定好电机驱动模块和电池盒。
2. 安装光电传感器:将光电传感器安装在底盘前方,确保传感器可以垂直地面,且与地面保持一定距离。
3. 连接电路:将光电传感器的发射器和接收器分别连接到单片机的相应引脚,将电机驱动模块连接到单片机的IO口。
4. 编写程序:根据实验要求,编写单片机程序,实现光电寻迹功能。
程序流程如下:(1)初始化:设置单片机IO口、定时器等。
(2)检测光电传感器:读取接收器输出的电平值。
(3)判断小车位置:根据电平值判断小车是否偏离预设路线。
(4)控制转向和速度:根据小车位置,调整转向和速度。
(5)重复步骤(2)至(4)。
5. 调试程序:将编写好的程序下载到单片机,观察小车是否能够沿着预设路线行驶。
6. 优化程序:根据实验结果,对程序进行优化,提高小车行驶的稳定性和速度。
五、实验结果与分析1. 实验结果:小车能够沿着预设的黑白线行驶,遇到转弯时能够自动调整方向。
2. 结果分析:(1)光电传感器性能对实验结果影响较大,选择合适的传感器是保证实验成功的关键。
(2)单片机程序设计对小车行驶的稳定性和速度有较大影响,需要不断优化程序。
基于单片机的智能寻轨小车设计摘要在这样一家实力强大的企业,我们必须自己去设计电子产品,从而进一步掌握所学的专业知识,扩展专业相关知识,提高自身的产品设计,开发能力。
对于智能寻轨小车的设计,可以把所学的理论知识与实践相结合,进一步的了解理论知识及实际的应用,从而提高自身的动手操作能力。
关键词:智能电子产品寻轨小车目录前言 (1)1系统分析 (1)1.1智能寻轨小车系统的设计要求 (1)1.1.1任务 (1)1.1.2要求 (2)1.1.3说明 (3)1.2智能寻轨小车系统基本情况描述 (3)1.3系统目标设计 (3)1.4可行性分析 (3)1.4.1技术可行性 (3)1.4.2经济可行性 (3)1.4.3能力提高可行性 (4)1.5系统分析 (4)1.5.1系统功能分析 (4)1.5.2系统具备的功能 (4)1.6小车系统设计所需时间 (4)2方案的论证及比较 (4)2.1电机的选择及论证 (4)2.2电机驱动方案的选择与论证 (5)2.3路面情况检测方案的选择与论证 (5)2.4电源方案的选择与论证 (5)2.5路程检测方案的选择与论证 (6)2.6电子站台检测方案的选择与比较 (6)3系统的具体设计与实现 (7)3.1系统的硬件设计 (7)3.1.1路面黑线检测模块 (7)3.1.2电动机PWM驱动模块的电路设计与实现 (7)3.1.3超声波探测测距模块 (7)3.1.4方向控制模块 (7)3.1.5路程检测模块 (7)3.1.6单片机控制系统 (7)3.2系统的软件设计 (7)3.2.1程序的编写 (7)3.3小车成品图 (11)4设计总结与评价 (12)参考文献 (12)前言近年来,电子技术和计算机技术应用领域不断扩大,单片机技术已成为电子技术领域中的一个新的亮点,使单片机技术成为电子类工作者必须掌握的专业技术之一。
单片机技术是一门综合应用技术,是电子技术改造的重要技术手段之一,各高校学生在课程设计、毕业论文设计、电子设计大赛中都提倡使用单片机技术。
摘要本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用红外线传感器进行寻线,控制电动小汽车的自动循迹,并再通过光电开关探测障碍,从而控制电机转向,实现进行壁障功能。
整个系统的电路结构简单,可靠性能高,实验测试结果满足要求。
本文着重叙述了该系统的硬件设计方法、软件设计方法及测试结果分析。
小车运行方案,在现有玩具电动车的基础上,加装红外线光电开关模块和红外寻线模块,实现对电动车位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
关键词:80C51单片机、红外线传感器、光电开关、电动小车AbstractThe system requirements of the design project for the purpose of the 80C51 microcontroller for the control of the core,the use of the hunt and infrared sensors,automatic obstacle acoidance control of electric cars,and the photoelectric switch to the barrier function.The electric circuit construction of whole system is simple, the function is dependable. Experiment test result satisfy the request, this text emphasizes introduced the hardware system designs and the result analyse. Car is running the program, under the existing toy electric car, based on the installation of super sonic sensor and infrared sensors, to achieve the location of electric vehicles,operational status of the real-time measurement, and measurement data sent to the microcontroller for processing, then SCM detected according to a variety of data to achieve intelligent control of electric vehicles.Key words: 80C51 single chip computer, infrared sensors, photoelectric switch, the electric car目录第1章绪论 (1)1.1研究目的及意义 (1)1.2国内外发展情况 (2)第2章整体设计框架 (3)2.1方案选择及论证 (3)2.1.1控制模块选择 (4)2.1.2路面探测黑线轨迹模块 (4)2.1.3探测路面障碍模块 (5)2.1.4电机模块 (6)2.1.5电机驱动模块 (6)2.1.6车架选择 (7)2.1.7最终方案选择 (7)2.2方案可行性分析 (8)第3章硬件设计 (8)3.1系统总体设计框图 (9)3.2 红外线光电开关模块 (9)3.2.1光电开关的工作原理 (10)3.2.2光电开关的类型 (10)3.2.3光电开关电路的设计 (13)3.3电机驱动模块 (13)3.4红外循线模块 (15)3.4.1 红外放射式光电传感器特性与工作原理 (15)3.4.2 红外循线具体设计与实现 (16)3.5 最小系统模块 (17)3.5.1 晶振电路的设计 (17)3.5.2 复位电路的设计 (17)3.6电源模块 (18)第4章软件设计 (19)4.1 主程序流程图 (19)4.2 避障子程序流程图 (20)4.3 循线子程序流程图 (21)第5章系统调试和测试 (21)5.1安装步骤 (21)5.2电路调试 (23)5.2.1 光电开关模块调试过程 (23)5.2.2电机模块调试过程 (23)5.2.3红外循线模块调试过程 (24)5.2.4测试结果与分析 (25)结论 (26)致谢 (27)参考文献 (28)附录系统设计原理图 (28)附录设计系统部分源代码 (29)第1章绪论随着生产自动化的发展,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。
[原创]循线算法原理与实践 [说在前面的话] 看了很多机器人网站的文章,仍然停留在Show图片,Show代码,大家“喊一下牛”的程度。真真做机器人的,却又像是做进度报告似的……实在看不过,本人最爱显示小聪明,所以,斗胆,鲁班门前弄大斧,各位大虾面前抢先说说——“循线算法原理与实践”。
还是那句老话:没时间的捧个人场哈!
[硬件基本构架] 对于机器人的循线,为了获得场地上白线(黑线)的信息,硬件结构一般有如下几种种类。 1、红外对管阵列。采取这种方式的机器人比较多,尤其在各种机器人竞赛中,几乎是标准配置。但是这种技术有一个致命的弱点,就是对于场地光线的干扰特别敏感,而且也很难把红色和白线区别开来,所以使用受到一定的限制。一般解决这类问题的方法是在红外光上加载一个调制波,通过检测这个调制波来消除场地光线的干扰,至于如何解决红色和白色的区别问题,那就几乎是五花八门了。 2、光纤传感器阵列。采用这种传感器阵列的原因是,光纤非常细,在单位面积内可以安装更多的传感器,从而获得更精确地场地信息。当然,钱也也花得更多。 3、线性CCD。这种硬件方法几乎是一种对场地信息分辨率的BT追求,如果说红外对管阵列还是离散信息的话,那么线性CCD就是线性的连续数据。当然驱动它也不是一件容易的事情,对于单片机也有更高的速度要求。 4、视觉。废话少说——否则明天我都别想吃饭。
[基本原理] 所谓循线,就是通过一定的传感器探测地面色调迥异的两种色彩从而获得引导线位置,修正机器人运动路径的一种技术。——说的太拗口了。不说太多理论的东西,我们就从基于红外对管阵列的循线技术来说起。 假设,我们使用的是黑底白线的场地。红外对管阵列由3个红外对管1字摆开组成。白线的宽度略小于或等于红外对管阵列的宽度。 1、数据的采集。 对于机器人来说,通过传感器感知周围事物的信息,利用这些信息并不作太多智能上的计算而直接通过一定的转换,指导机器人的运动——这种形式在人工智能学上叫做机器人的“反应范式”。所以,我们要想让我们的机器人能够寻着我们给定的轨迹线运动,第一步就必须让他感知到轨迹线的存在。一般的做法就是通过AD采样,获得红外对管(传感器)反馈回来的电压信息。然而,这样获得的电压值信息是无法直接指导运动的,必须把他们转化为二值的(也就是二进制信息,1表示线存在,0表示线不存在)信息,然后通过处理每一个管子反馈回来的二值信息获得白线的位置信息。 >>技术点A AD信号的阀值化。(你可以参考其它的算法,获得比较详尽的技术,我这里只是举例一二)
智能小车代码一、主程序#include<reg51.h>#include <INTRINS.H>#include "pwm.h"#include "delay.h"#include "tracking.h"#define uchar unsigned char#define uint unsigned intsbit front=P3^3; /*前边红外避障*/sbit right1=P3^4; /*右前红外避障*/sbit right2=P3^5; /*右后红外避障*/sbit left1=P3^6; /*左前红外避障*/sbit left2=P3^7; /*左后红外避障*/sbit shine0=P1^0; /*前趋光*/sbit shine1=P1^1; /*左趋光*/sbit shine2=P1^2; /*右趋光*/sbit beef=P1^3;sbit led=P2^4; /*声光报警led灯*/uchar flag=0;void main(void){ uchar k;int i;beef=1;pwm_init();/*******从A到B******************************/ while(right1==0 || right2==0 ){if(left1==0 && left2==0)go(15,1);else if(left1==1 && left2==0)go(3,15);else if(left1==0 && left2==1)go(15,3);elsego(14,15);}/******转弯进入Ⅰ区***************/go(20,-20); //左转delay(4);TR0=0;stop();delay(1000);TR0=1;go(20,15);delay(180);while(front==1) //检测到白板前直走{go(17,15);}TR0=0;stop();delay(200);TR0=1;go(20,-20); //检测到白板就左转delay(4);TR0=0;stop();delay(1000);TR0=1;while(left1==0 || left2==0) //靠左边白板直走{if(left1==0 && left2==0)go(15,1);else if(left1==1 && left2==0)go(3,15);else if(left1==0 && left2==1)go(15,3);elsego(14,15);}while(right1==0 || right2==0){if(left1==0 && left2==0)go(15,1);else if(left1==1 && left2==0)go(3,15);else if(left1==0 && left2==1)go(15,3);elsego(14,15);}while(front==1){go(15,12);}TR0=0;stop();delay(1000);/*****左转进入Ⅱ区**************/TR0=1;go(-20,20);delay(4);TR0=0;stop();delay(1000);TR0=1;tracking_stop(); //打开循迹,当3个红外同检测到黑线时TR0=0;stop();k=100; //停留5 秒,并发出断续声光报警。
范文范例指导参考基于 STC89C51 单片机智能小车控制项目名称:基于单片机 STC89C51 智能小车控制 小组成员:xx 班级:xx 指导教师:xx 开发结束时间:2011 年 7 月 10 日 星期日学习资料整理范文范例指导参考目录1.1 项目概述................................................................. 3 1.2 项目要求................................................................. 3 1.3 系统设计................................................................. 31.3.1 框图设计 ........................................................... 3 1.3.2 知识点 ............................................................. 4 1.4 硬件设计................................................................. 4 1.4.1 电路原理图 ......................................................... 4 1.4.2 原件清单........................................................... 6 1.4.3 L293D 驱动单片机的原理简介 ......................................... 7 1.4.4 STC89C51 单片机管脚图及其功能 ...................................... 7 1.5 软件设计................................................................. 9 1.5.1 程序流程图......................................................... 9 1.5.2 L293D 驱动器管脚赋值表 ............................................ 10 1.5.3 程序清单.......................................................... 10 1.6 软件仿真及硬件调试...................................................... 21 1.6.2 硬件调试.......................................................... 21 1.6.1 软件仿真.......................................................... 22 1.7 总结.................................................................... 23 1.8 文献参考................................................................ 23学习资料整理范文范例指导参考1.1 项目概述随着单片机技术的不断发展和完善已经大量的运用在工业的控制、数据的采集、智能化 仪表、机电一体化、家用电器等领域,极大地提高了这些领域的技术水平和自动化控制水平。
寻线程序内容#include<BoeBot.h>#include<uart.h>sbit A=P1^5; //左边sbit S=P2^1; //中间sbit C=P3^5; //右边sbit M1=P1^0; //左边电机sbit M2=P1^1; //右边电机unsigned char x=0;unsigned char i,j,k;void B_right_Turn(void);void Forward(void) //前进{M1=1;delay_nus(1600);M1=0;M2=1;delay_nus(1400);M2=0;delay_nms(20); }void Left_Turn(void) //以中心为轴左传{Forward();Forward();Forward();Forward();Forward();Forward();Forward();Forward();for(i=1;i<=29;i++){M1=1;delay_nus(1300);M1=0;M2=1;delay_nus(1300);M2=0;delay_nms(19);}}void Left_2 (void) //以左轮为轴左传{M1=1;delay_nus(1500);M1=0;M2=1;delay_nus(1400);M2=0;delay_nms(19);}void Right_Turn(void) //以中心为轴右转{Forward();Forward();Forward();Forward();Forward();Forward();Forward();Forward();for(j=1;j<=29;j++){M1=1;delay_nus(1700);M1=0;M2=1;delay_nus(1700);M2=0;delay_nms(20);}}void Right_Turn_2(void) //以中心为轴右转{M1=1;delay_nus(1600);M1=0;M2=1;delay_nus(1600);M2=0;delay_nms(20);}void Right_2(void) //以右轮为轴右转{M1=1;delay_nus(1600);M1=0;M2=1;delay_nus(1500);M2=0;delay_nms(20);}void B_right_Turn(void) //右转45度{for(k=1;k<=15;k++){M1=1;delay_nus(1700);M1=0;M2=1;delay_nus(1700);M2=0;delay_nms(20);}}void z_x (void){while(1){Left_2();if(S==1) break;}}void y_x (void){while(1){Right_2();if(S==1) break;}}void main(){while(1) //1 duan{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(A==1&&S==1&&C==1) break;}Left_Turn(); //左转90度进入2段while(1) //2段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1) break;}Right_Turn(); //进入3段while(1) //3段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1&&A==1) break;}Left_Turn(); //左转90度进入4段while(1) //4段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1) break;}Right_Turn(); //进入5段while(1) //5段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1&&A==1) break;}while(C==1||A==1) //过渡到6{Forward();}while(1) //6段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1) break;}Right_Turn(); //进入7段while(1) //7段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(S==1&&C==1) break;}Right_Turn(); //进入8段while(1) //进入8段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(A==1&&S==1) break;}x=0;while(x<20) //过渡到0.5ms{Forward();x++;}while(1) //9段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(A==1&&S==1) break;}Left_Turn(); //左转90度进入10段while(1) //10段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(A==1&&S==1) break;}Left_Turn(); //左转90度进入11段while(1) //11段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(C==1&&S==1) break;}x=0;while(x<20) //过渡到12段{Forward();x++;}while(1) //12段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(A==1&&S==1) break;}Left_Turn(); //左转90度进入13段while(1) //13段{Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(C==1&&S==1&&A==1) Forward();}/* Forward();Forward();x=0;while(x<20) //过渡到14段135度{Right_Turn_2();x++;}x=0;while(x<35) //到14段{Forward();x++;if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();}Right_Turn();Right_Turn();// 180x=40;while(x){Forward();x--;}Forward();B_right_Turn(); //右转45度while(1){Forward();if(A==1&&S==0&&C==0) //左边检测到黑先z_x();if(C==1&&S==0&&A==0)y_x();if(C==1&&S==1&&A==1) break;}x=0;while(x<200) //过渡到12段{Forward();x++;} */}。