智能跟随车毕业设计

上传人:jin****ng 文档编号:164157768 上传时间:2022-10-24 格式:DOCX 页数:29 大小:108.54KB
收藏 版权申诉 举报 下载
智能跟随车毕业设计_第1页
第1页 / 共29页
智能跟随车毕业设计_第2页
第2页 / 共29页
智能跟随车毕业设计_第3页
第3页 / 共29页
资源描述:

《智能跟随车毕业设计》由会员分享,可在线阅读,更多相关《智能跟随车毕业设计(29页珍藏版)》请在装配图网上搜索。

1、*职业学院毕业设计(论文)题目智能跟随小车设计系部:电子工程系专 业:电气自动化技术学号:2012*23216学生姓名:郑鹏指导教师:职 称:课题名称: 系 部: 专 业: 姓 名: 学 号: 指导教师:*职业学院毕业论文(设计)任务书智能跟随小车设计电子系电气自动化技术 一郑鹏2012*23216、毕业论文(设计)的目的与要求:1、设计目的毕业设计(论文)是教学过程中最后一个重要的实践性教学环节,是 应用在校所学知识、结合工程实际,进行一次系统的、有机的解决工程实 际问题的训练,目的是巩固、扩大和提高所学理论知识,使之系统化,并 提升为解决实际工程技术问题的能力,通过本课题的实施可初步掌握工

2、业 企业的自动化技术改造基本方法和步骤。通过毕业设计实践,可使学生进一步提高资料检索、计算、绘图、动 手制作和编写说明书的职业技能。2、题目要求:目前,设计出具有智能化的产品已经成为商家开发产品的目标之一, 也是学生课外科技活动的热点之一;其中,专门针对具有自主巡线功能的 智能小车的设计更是数不胜数。但大多数智能巡线小车只是完成了“智能 化”所要求的各部分的功能,在小车跟随性方面考虑较少。此项目注重要求小车跟随主人的智能性。当你下了飞机,面对一个智 能跟随的小车载着行李跟你走,是否觉得舟车劳累的神经有一些舒畅。当 你走进琳琅满目的超市,有这样一个只能跟随的小车满载着你选购的物品 跟随在身边,不

3、再觉得陪女友逛街是在做兼职苦力。当上了年岁的老人, 陪伴伴侣散步,不再需要推轮椅,而是自动跟随移动。智能跟随小车将很 好的解决这类问题,把行李放在小车上,让智能跟随小车自动跟随主人。 应用范围较广,比如超市购物车,宾馆、旅店、办公室、医院的人力推车, 运输系统的行李提取运输车等等。因此,课题的提出,具有相当的可行性和实用价值。二、毕业论文(设计)的内容:1、了解智能控制技术的特点,明确设计目的;2、确定设计系统原理,制定初步方案;3、明确控制要求,开发一款Android手机控制软件,制作一款智能车。 智能车包含wifi通信,视频传输,图像的简单识别等功能,采用电机驱 动,超声波测距技术,装备1

4、2864液晶显示屏;4、利用单片机系统进行智能跟随小车系统的设计,包括硬件设计和软件 设计。最终给出相应的设计电路参数、图纸及程序;5、撰写设计说明书。三、毕业论文(设计)进程的安排序号论文(设计)各阶段名称日期备注1指导教师召集相关学生,向学生介绍毕业设计的相关规定,布置任务。15年1月2论文准备,期间老师不得少于两次指 导学生。15年2-4月准备期间,学生 向指导教师汇报 工作进度和工作 情况,每周不少 于一次。3毕业论文送交指导老师阅评15年4月4毕业答辩15年5月下旬公布成绩5月27日前四、任务执行日期:自2015年1月2日至2015年5月27日止。学生(签字)指导教师(签字) 系主任

5、(签字)毕业设计(论文)成绩评定表系部:电子工程系 专业:电气自动化 班级:12级3班姓名郑鹏设计(论文)总成绩:设计(论文)题目智能跟随小车设计指导教师评语该生在设计时态度认真、遵守纪律,具有强的分析问题和独 立工作能力,掌握基础理论、专业知识扎实,考虑问题全面,能 综合运用所学知识和参考资料,圆满地完成了规定的任务进程, 工作量饱满,有一定的创新性。论文及图纸的质量高。评定成绩:签名:年月 日评 阅 人 评 语该生论文书写认真,确定方案合理,公式引用正确,论述条理清晰,论文质量高。图纸视图完整、布局合理,标注规范。各项任务完成情况较好。设计有一定的新颖性。评定成绩:签名:年 月 日答辩 小

6、 组 评 语该生在设计时态度较认真,考虑问题比较全面,较合理地运 用设计资料,完成了规定的工作量,作业文件质量较高;答辩时 自述较清楚,对所提问题的回答基本正确;该生的基础理论和专 业知识掌握的较好,有一定的独立工作能力。答辩成绩:组长签名:年 月 日注:设计(论文)总成绩=指导教师评定成绩(30%) +评阅人评定成绩(30%) +答辩成绩(40%)智能跟随小车的设计原理济南职业学院电子工程系郑鹏摘要:目前,设计出具有智能化的产品已经成为商家开发产品的目 标之一,也是学生课外科技活动的热点之一;其中,专门针对具有自主 巡线功能的智能小车的设计更是数不胜数.但大多数智能巡线小车只是 完成了“智能

7、化”所要求的各部分的功能,在小车跟随性方面考虑较少。此项目注重要求小车跟随主人的智能性。当你下了飞机,面对一个 智能跟随的小车载着行李跟你走,是否觉得舟车劳累的神经有一些舒畅。 当你走进琳琅满目的超市,有这样一个只能跟随的小车满载着你选购的 物品跟随在身边,不再觉得陪女友逛街是在做兼职苦力。当上了年岁的 老人,陪伴伴侣散步,不再需要推轮椅,而是自动跟随移动。智能跟随 小车将很好的解决这类问题,把行李放在小车上,让智能跟随小车自动 跟随主人。应用范围较广,比如超市购物车,宾馆、旅店、办公室、医 院的人力推车,运输系统的行李提取运输车等等。:VB软件安卓软件单片机步进电机102864液晶显示器wi

8、fi模块摄像第一章研究背景(1)第二章研究内容(1)2.1研究目标(1)2.2研究方法(1)2.3研究计划(2)第三章 研究过程(2)3.1上位机软件的开发(2)3.1.1 VB软件开发(2)3.1.2 Android 软件开发(2)3.2下位机主控系统(3)3.3电机驱动模块(3)3.4测距模块(3)3.5 LCD显示模块(4)3.6 WiFi 模块(4)3.7车体制作(4)3.8红外传感器(5)第四章研究成果(6)4.1实现 WiFi模块与PC或Android通讯4.2完成总体设计框图(7)4.3完成系统硬件设计(8)4.3.1单片机电路(9)4.3.2软件设计(10)4.4显示系统(10

9、)4.5电机驱动模块(11)4.6电源设计(11)结束语(12)参考文献(12)致谢(13)附录(14)第一章研究背景现在,在国内市场上暂时还没有具有跟随性的载物小车出现。而在国 外,有一款最接近的产品,叫做“高尔夫球童车”。因为在国外很多人会打高尔夫,国外的人力球童是很贵的,因而这 个设计有市场。而在中国,打高尔夫的人少之又少,能去买专业的球通 车的就更加少了。因而此产品在中国的网络上搜到的资料很少,没有中 国的销售商。此外,中国具有跟随性的产品,主要都是有轨机械跟随,用于工厂 的各类生产机车的一部分,或是比赛场的有轨跟随拍摄车,并没有实际 针对餐厅、旅馆、机场、超市等大众场合,或家庭个人的

10、产品。技术上做到跟随并不难,但是没有应用到生活中的产品方向。基于 长时间对智能小车的不断开发,小车的自动壁障、自动化设计都已经很 纯熟,设计的资源共享度很高。对于开发新型跟随性智能小车技术上有 保障。第二章研究内容2.1研究目标开发一款Android手机控制软件,制作一款智能车。智能车包含wifi 通信,视频传输、图像的简单识别、电机驱动、红外跟随、超声波测距 和12864液晶显示屏。2.2研究方法研究方法是指在研究中发现新现象、新事物,或提出新理论、新观 点,揭示事物内在规律的工具和手段。这是运用智慧进行科学思维的技 巧,一般包括文献调查法、观察法、思辨法、行为研究法、历史研究法、 概念分析

11、法、比较研究法等。研究方法是人们在从事科学研究过程中不 断总结、提炼出来的。由于人们认识问题的角度、研究对象的复杂性等 因素,而且研究方法本身处于一个在不断地相互影响、相互结合、相互 转化的动态发展过程中,所以对于研究方法的分类目前很难有一个完全 统一的认识。2.3研究计划2014.11.7-2014.11.30小车底盘制作与切割2014.12.01-2014.12.30 wifi 与单片机通信2015.03.01-2015.03.10单片机与红外传感器调试与编程2015.03.11-2014.04.11单片机与L298N (电机驱动模块)通信与步进 电机驱动2015.04.11-2015.0

12、4.25 wifi模块与摄像头数据传输2015.04.25-2015.04.30整车组装与调试第三章研究过程3.1上位机软件的开发3.1.1 VB软件开发Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱 动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言 不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC 编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD) 系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创 建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个 应用程序。3.1.2 Androi

13、d软件开发Android是一种基于Linux的自由及开放源代码的操作系统,主要使 用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟 领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或 “安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005 年8月由Google收购注资。2007年11月,Google与84家硬件制造商、 软件开发商及电信营运商组建开放手机联盟共同研发改良 Android系统。3.2下位机主控系统采用单片机作为整个系统的核心,用其控制行进中的小车。其关键在 于实现小车的自动控制,而在这一点上,单片机就显现出来它的优

14、势 控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、 有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此, 这种方案是一种较为理想的方案。针对本设计特点一一多开关量输入的复杂程序控制系统,不能用精简 I/O 口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。根据 这些分析,我选定了 STC12C5A60S2单片机作为本设计的主控装置,51 单片机具有功能强大的位操作指令,I/O 口均可按位寻址,程序空间多 达8K,对于本设计也绰绰有余,更可贵的是51单片机价格非常低廉。3.3电机驱动模块我选用了 L298N驱动芯片,L298N是ST公司生产的一种高电压、 大

15、电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高, 最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作 电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动 器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载; 采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影 响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电 路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步 进电机,也可以驱动两台直流电机。这种调速方式有调速特性优良、调 整平滑、调

16、速范围广、过载能力大,能承受频繁的负载冲击,还可以实 现频繁的无级快速启动、制动和反转等优点。因此决定采用使用功率三 极管作为功率放大器的输出控制步进电机。3.4 LCD显示模块带中文字库的128X64是一种具有4 位/8位并行、2线或3线串行多 种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显 示模块;其显示分辨率为128X64,内置8192个16*16点汉字,和128 个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的 操作指令,可构成全中文人机交互图形界面。可以显示8X4行16X16点阵的汉字。也可完成图形显示。低电压低 功耗是其又一显著特点。由该模块构成

17、的液晶显示方案与同类型的图形 点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多, 且该模块的价格也略低于相同点阵的图形液晶模块3.5 WiFi 模块RM04模块为串口或TTL电平转WIFI通信的一种传输转换产品, Uart-Wifi模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块, 内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用 户串口或TTL电平数据到无线网络之间的转换。一般架设无线网络的基本配备就是无线网卡及一台AP,如此便能以 无线的模式,配合既有的有线架构来分享网络资源,架设费用和复杂程 度远远低于传统的有线网络。如果只是几台电脑的

18、对等网,也可不要AP, 只需要每台电脑配备无线网卡。AP为AccessPoint简称,一般翻译为“无线访问节点”, 或“桥接器”。它主要在媒体存取控制层MAC中扮演无线工作站及有 线局域网络的桥梁。有了 AP,就像一般有线网络的Hub 一般,无线工 作站可以快速且轻易地与网络相连。特别是对于宽带的使用,WiFi更显 优势,有线宽带网络(ADSL、小区LAN等)到户后,连接到一个AP, 然后在电脑中安装一块无线网卡即可。普通的家庭有一个AP已经足够, 甚至用户的邻里得到授权后,则无需增加端口,也能以共享的方式上网。3.6车体制作我选择的车体是亚克力透明板材。亚克力的中文名称由英文Acrylics

19、 音译而来,中文俗名有压克力、阿克力。是丙烯酸类和甲基丙烯酸类化 学品的通称。包括单体、板材、粒料、树脂以及复合材料。亚克力板由 甲基烯酸甲酯单体(MMA )聚合而成,即聚甲基丙烯酸甲酯(PMMA) 板材有机玻璃,是一种经过特殊工艺加工的有机玻璃。有“塑料皇后” 之美誉。亚克力的研究开发,距今已有一百多年的历史。亚克力板具有水晶一般的透明度,透光率达92%以上,用染料着色 的亚克力板又有很好的展色效果,此外,亚克力板:具有极佳的耐候性, 较高的表面硬度和表面光泽以及较好的耐高温性能。亚克力板有良好的 加工性能,按生产工艺可分为浇铸型和挤压型两种。既可采用热成型(包 括模压,吹塑和真空吸塑),也

20、可用机械加工方式如钻、车、洗、切割 等。用微电脑控制的机械切刮和雕刻不仅使加工精度大为提高,而且还 可制作出比传统方式更精美的图案和造型。另外,亚克力板可采用激光 切割和激光雕刻,制作效果奇特的制品。硬度是最能体现浇注亚克力板生产工艺和技术的参数之一,是品质 控制中的重要一环。硬度能反映出原料MMA纯度、板材耐候性以及耐 高温性能等。硬度直接影响到板材是否会收缩弯曲变形,加工时表面是 否会出现皲裂等情况。硬度是评判压克力板品质好坏硬性指标之一。浇 注亚克力板具有目前最高的硬度指标平均达洛氏硬度值90度。亚克力板且有极佳的耐候性,尤其应用于室外,居其他塑胶之冠, 并兼具良好的表面硬度与光泽,加工

21、可塑性大,可制成各种所需要的形 状与产品。其板材的种类繁多色彩丰富(含半透明的色板),另一特点 是厚板仍能维持高透明度。3.7红外传感器我选用E18-D80NK型红外避障传感器,红外避障传感器(以下简 称红外)。红外具有一对红外信号发射与接收二极管,发射管发射一定 频率的红外信号,接收管接收这种频率的红外信号,当红外的检测方向 遇到障碍物(反射面)时,红外信号反射回来被接收管接收,经过处理 之后,通过数字传感器接口返回到机器人主机,机器人即可利用红外波 的返回信号来识别周围环境的变化。第四章研究成果4.1实现WiFi模块与PC或Android通讯通过小型路由器来实现。该方案是在小车端安装一个小

22、型路由器, 是小车周围一定范围具有WIFI覆盖,然后将手机连接到路由器IP地址, 对其发送指令,路由器接收指令后对单片机串口发送数据指令,实现控 制。系统框图如下:图1通讯程序系统框图通过比较以上两种方案。方案一虽然可以实现小车超远程控制,但开 发成本较高,相对于大一学生来说技术难度较大,而且控制过程要消耗 上网流量。而方案二则相对简单,开发难度较低,适合制作玩具小车, 因此我们选择了方案二。4.2完成总体设计框图遥控小车系统总框图如图2所示。图2控制流程图4.3硬件系统设计4.3.1单片机电路1.单片机电路在这里,单片机要实现对电机驱动模块的控制,同时还要有路由器 进行串口通信,为了能够控制

23、电机转速,可以使用单片机的定时器来实 现,利用单片机定时器功能控制IO 口产生脉冲,通过脉冲调节电机转 速。考虑到单片机要实现以上功能,选择使用STC12C5A60S2来构成电 路。STC12C5A60S2是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在 系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵 活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节 RAM,32位I/O 口线,看门狗定时器,内置4KB EEPROM, MAX810复位电路,三个16位 定时器/计数器,一个6

24、向量2级中断结构,全双 工串行口。另外STC89X52可降至0Hz静态逻辑操作,支持2种软件 可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/ 计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振 荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 最高运作频率35MHz,6T/12T可选。此外,STC12C5A60S2设计和配置了振荡频率可为0Hz并可通过软 件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器, 串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的 数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具 有

25、PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。该单片机主要特性: 8031 CPU 与 MCS-51 兼容 8K字节可编程FLASH存储器(寿命:1000写/擦循环)全静态工作:0Hz-24KHz三级程序存储器保密锁定 128*8位内部RAM 32条可编程I/O线两个16位定时器/计数器 6个中断源可编程串行通道低功耗的闲置和掉电模式2.晶振选择由于该课题的小车端是通过单片机串口通信接收收手机是控制指 令,因此需要对单片机定时器初值进行设置,若采用常用12M晶振,初 值不一定是整数,通信时便会产生积累误差,进而产生波特率误差,影 响通信的同步性。采用11.0592M晶振可以

26、得到非常准确的数值,因此 在制作过程中最好采用11.0592M或其整数倍的晶振。4.3.2软件设计单片机应用系统设计与一般电子系统设计的差别在于,它既要构成 硬件逻辑电路,也要设计相应的支持软件。Keil C51是美国Keil Software 公司出品的51系列兼容单片机 C语言软件开发系统,该系统全WINDOWS界面且库函数丰富,调试功能强大、生成代码率很高。 本程序的主要思路是,利用单片机的计数器计时,控制IO 口产生PWM波用于控制电机转速。利用P0 口控制12864液晶显示。其控制流 程大致如下如所示:I结束图3程序框图4.4显示系统显示系统既可以选择使用LED,也可以选择使用LCD

27、。就本系统的 功能来说,使用LED已经可以实现功能,不过考虑到使用LCD,可以 输出英文字符,从而使得显示系统能够更加美观,同时也能更好的达到 提高自己的目的,所以最后选择使用液晶屏LCD。由于本次设计所要显示的内容不多,并不需要太大的液晶屏来显示。 所以选择使用12864来进行显示。12864液晶每次可以显示2行16个字 符,总共32个字符,而且可以显示所有的ASCII码,包括标点,数字, 英文大小写等,因此,使用该液晶屏可以很好的实现显示功能。 12864显示屏的主要技术指标如表2所示。表2主要技术指标LCD12864显示容量:128*64个字符芯片工作电压:4.5-5.5V工作电流:2.

28、0mA(5V)最佳工作电压:5V字符尺寸:2.95X4.35(WXH)mm1602液晶显示屏共有20个引脚,其各个引脚的功能如表3所示。表312864显示屏的引脚引脚编号符号引脚说明编号符号引脚说明1VSS电源地9D2DATAI/O2VDD电源正极10D3DATAI/O3VL液晶显示偏压信号11D4DATAI/O4RS数据命令选择端(H/L)12D5DATAI/O5R/W读写数据端(H/L)13D6DATAI/O6E使能信号14D7DATAI/O7D0DATAI/O15BLA背光源正极8D1DATAI/O16BLK背光源负极4.5电机驱动模块由于小车底盘电机额定电压为12V,度电机驱动模块选择

29、了常用 12V电机驱动芯片L298N。L298N恒压恒流桥式2A驱动芯片,L298N可接受标准TTL逻辑电 平信号VSS, VSS可接4. 57 V电压。4脚VS接电源电压,VS电压 范围VIH为+2. 546 V。输出电流可达2. 5 A,可驱动电感性负载。 1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电 流传感信号。L298可驱动2个电动机,OUT1, OUT2和OUT3, OUT4 之间可分别接电动。4.6电源设计小车电机启动时电流较大,可能会将电源的电压瞬间拉低,导致单 片机和路由器不能正常工作,因此必须设计一个可靠的供电系统。 解决该问题常用以下三种方法:选用性能更

30、好的的电源:采用独立电源供电,即使用两个电源分别给单片机和电机供电;在电源附近并联一个较大值的电容,当电机启动时,电流较大,电容 中的电可以补偿一部分电流,保证电压不至于太低。以上三种方案中,方案1)成本过高,方案2)电路繁琐,均不适合小型 设备的应用,所以我们选择了方案3)。该项目的独特创新之处在于小车的控制是通过手机来实现,而不是 遥控手柄,从而使用更加方便,实现用WIFI技术对玩具小车进行遥控控 制,包括小车前进、后退、转弯,超声波测距,12864显像等功能。 该项目开发的Android软件和基于WIFI的控制系统不仅可以控制小车, 稍做改动就可用来控制电脑、家用电器甚至探测、排爆机器人

31、等,通过 路由器桥接的方式可以构建成小型的智能家居,同时也可用于地质检测 设备的手持终端。因此,该项目的成果将不仅仅局限于一个遥控小车, 更具有价值的是手机远程控制系统。如今国外的几家公司推出了基于苹果手机控制航模和玩具赛车的产 品。目前基于Android手机和WIFI技术开发的娱乐软件较多,而控制机 电产品的软件和专利相对较少。2011年11月数据,Android占据中国 智能手机操作系统市场58%,其应用领域和市场份额也在急速向平板电 脑、消费电子、智能家电领域扩张o WIFI具有较强的数据传输能力,普 通智能手机完全能达到1M/S以上的速度。因此,今后在此方面的的研 究一定会大大增加,具

32、有很好的实用价值。参考文献郭天祥51单片机c语言教程大陆:电子工业出版社2009.01.012 孙和平单片机微机原理与接口技术冶金工业出版社2012.01.153 张勇 Goolge Android开发技术 西安电子科技大学出版社2011.10.014 郭宏志Android应用开发详解 电子工业出版社2011.08.01李刚 疯狂Android讲义 电子工业出版社2011.06.01林卓然 VB语言程序设计(第3版)电子工业出版社2012.06.01田保军VB程序设计案例教程电子工业出版社2012.12.018王渊峰 Altium_Designer10 科学出版社 2011.11致谢:感谢刘晓

33、阳老师对我的论文的细心指点。首先细致地为我解题;当 我迷茫于众多的资料时,他又为我提纲挈领,梳理脉络,使我确立了本 文的框架。论文写作中,每周都得到刘老师的指点。从框架的完善,到 内容的扩充;从行文的用语,到格式的规范,老师都严格要求,力求完 美。我再次为老师的付出表示感谢!附录程序:#includevreg52.h#includevmath.h#includevintrins.h#define uchar unsigned char#define uint unsigned intuchar Buffer =0;从串口接收的数据uint i=0,j,URTAReceivedCount=0,n

34、=l;uchar flag=0;uchar data Tempdatatable4,CommandDatatable4;/数据包uchar key_stime_counter,hight_votage=15,timeT_counter; /舵机的变量 bit key_stime_ok;sbit control_signal=P3人6; /舵机控制信号sbit StatusLight=P0A0; /状态灯sbit MainLight=P0A1; /主大灯sbit Trig = P3A4; 雷达产生脉冲引脚sbit Echo = P3A5; 接收雷达回波引脚* 名称:Delay_1ms()*功能:

35、延时子程序,延时时间为1ms * x*输入:x (延时一毫秒的个数)*输出:无void Delay_1ms(uint i)/1ms 延时 uchar x,j;for(j=0;jvi;j+) for(x=0;xv=148;x+);void TurnOnStatusLight() StatusLight=0;7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* 7 / rT*rT* rT* 彳* 名称:Send_Data()*功能:向上位机传送字符*输入:无*输出:无*1*

36、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / zr*rp rT rT /void

37、 Send_Data(uchar data type,uchar data cmd)uchar data Buffer4;构建数据包uchar *p;uint Send_Count=0;p = Buffer;BufferO=OXFF;Bufferl=type;Buffer2=cmd;Buffer3=0XFF;while(1)if(*p=0XFF)Send_Count+; /OXFF 标志统计位SBUF = *p; 发送while(!TI) 如果发送完毕,硬件会置位TI,等待发送完毕_nop_();p+;TI = 0;if(Send_Count = 2) 当统计到两次出现OXFF,则认为一个数据

38、包发送完毕,跳出循环TI = 0;break;7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*/rT

39、rT rTw协议规定:包头 类型位 数据位 结束位0XFF 1 1 0XFF各命令说明:类型位数据位功能0X00 0X01 前进0X000X02 后退0X000X03 左转0X000X04 右转0X000X00停止0X010X01舵机上0X010X02舵机下0X020X01 车灯亮0X020X02 车灯灭0X03雷达数据发送雷达数据*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* k1* k1* k1* k1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *

40、1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /* 名称:Com_Int()*功能:串口中断子函数*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

41、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Com_Int(void) interrupt 4uchar temp;ES=0; 关串口中断RI=0; 软件清除接收中断temp=SBUF;if(tem

42、p=OXFF & URTAReceivedCountv2) TempdatatableO=OXFF; 包头URTAReceivedCount+;elseTempdatatablen=temp;n+;if(URTAReceivedCount=2)包 尾TempdatatableO=OXFF;Tempdatatable3=0XFF;n=1;URTAReceivedCount=0; 组包完毕temp=;Send_Data(Tempdatatablel,Tempdatatable2); 发送组成的数据包回去 CommandDatatableO=TempdatatableO;CommandDatatab

43、le1=Tempdatatable1;CommandDatatable2=Tempdatatable2;CommandDatatable3=Tempdatatable3;ES=1;开串口中断7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

44、 *1* *1* *1* *1* *1*、 / ”* 名称:Com_Init()*功能:串口初始化,晶振11.0592,波特率9600,使能了串口中断*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

45、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Com_Init(void)TMOD = 0x21;PCON = 0x00;SCON = 0x50;TH1 = 0xFd; 设置波特率9600TL1 = 0xFd;TR1 = 1; 启动定时器1ES = 1; 开串口中断 EA = 1; 开总中断 IT0=0;EX0=1;void TimerInit()control_signal=0;开总中断定时器0中断允许定时器装初值EA=1;ET0=1;TH0

46、= 0xFF;TL0 = 0xA3;TR0=0;7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* /r

47、T rT rTw* 名称:Moto_Forward()*功能:电机1、2启动,都是前进,整车表现为前进。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

48、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Moto_Forward()P1= 0x06;Delay_1ms(100);* 名称:Moto_Backward()*功能:电机1、2启动,都是后退,整车表现为后退。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

49、*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Moto_Backward() P1= 0x05;Delay_1ms(100);7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *

50、1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / rT* rT* ry*rp rT rT * 名称:Moto_TurnLeft()*功能:电机1后退,电机2前进,整车表现为左转。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *

51、1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Moto_TurnLeft()P1= 0x09;Delay_1ms(100);7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

52、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / rT* rT* ry*rp rT rT * 名称:Moto_TurnRight()*功能:电机1前进,电机2后退,整车表现为右转。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

53、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Moto_TurnRight()P1= 0x0A;Delay_1ms(100);7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

54、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / rT* rT* ry*rp rT rT * 名称:Moto_Stop()*功能:电机1停止,电机2停止,整车表现为停止。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

55、 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void Moto_Stop()P1= 0x00;Delay_1ms(100);7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *

56、1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / rT rp*Tv rTw rTw* 名称:SteerEngineTurningUp()*功能:舵机向上转。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

57、*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void SteerEngineTurningUp()ETO=1;TRO=1;Delay_1ms(40); hight_votage-=1;if(hight_votagev5) hight_votage=5;7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

58、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / rT rT* 名称:SteerEngineTurningDown()*功能:舵机向下转。*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

59、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void SteerEngineTurningDown() ET0=1;TR0=1;Delay_1ms(40); hight_votage+=1; if(hight_votage20) hight_votage=20;7 *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*

60、 *1* *1* *1* *1* *1* *1*/ rT* rT* rT*Tw rTw rTw* 名称:SteerEngine()*功能:舵机PWM中断*输入:无*输出:无*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1

61、* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* / *T rT rT zr*rp rT rT /void SteerEngine() interrupt 1TH0=0xFF;TL0=0xA3;if (+key_stime_counter=200) key_stime_counter=0;control_signal=l;key_stime_ok = 1;/ 20ms 至 UtimeT_counter=0;if (key_stime_ok&(+timeT_counter=hight_votage)key_stime_ok=0;timeT_counter=0;control_signal=0;/ hight_votage*0.1ms 至 Uvoid main()MainLight=0;Delay_1ms(200);Com_Init(); 串口初始化TimerInit();舵机初始化while(1)if(CommandDatatable0=0XFF & CommandDatatab

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!