毕业设计正文.doc

上传人:文****钱 文档编号:43203 上传时间:2018-05-09 格式:DOC 页数:51 大小:1.44MB
下载 相关 举报
毕业设计正文.doc_第1页
第1页 / 共51页
毕业设计正文.doc_第2页
第2页 / 共51页
毕业设计正文.doc_第3页
第3页 / 共51页
毕业设计正文.doc_第4页
第4页 / 共51页
毕业设计正文.doc_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、1目录1前言错误未定义书签。2总体方案设计33安卓操作系统简介531安卓操作系统发展532安卓开发与建立533安卓的应用程序分析634安卓的蓝牙开发技术735安卓平台的蓝牙编程74系统软件程序设计1241C语言编程环境介绍1242各模块的编程135系统调试2051C语言的调试2052JAVA语言的调试236总结与体会257谢辞268参考文献27附录程序27第1页第1章前言(绪论)11智能小车的意义和作用随着科学技术的发展,机器人开始出现在人们的视野中,机器人的研究一直是科学家们热衷的事,并努力把机器人运用到生活的方方面面。目前机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来

2、机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实

3、用有效的方法。机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自动导引小车(AVGAUTOGUIDEVEHICLE)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。该智能小车可以作为机器人的典型代表。它可以分为三大组成部分传感器检测部分、执行部分、CPU。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。基于上述要求,传感检测部分考虑到小车一般不需要感知清晰

4、的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。单片机驱动直流电机一般不占用单片机资源,直接选择有PWM功能的单片机,这可以由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。考虑到实际情况,CPU使用STC89C52单片机,配合软件编程实现。12智能小车的现状随着计算机和控制技术的发展,智能移动小车在很多行业都有实质成果。工第2页作的环境也从很单纯的室内环境发展成了各种复杂环境,如地面,水下,太空等等。在小车的功能发面,越来越多的新

5、功能被小车所运用,如实现循迹、避障、检测贴片、寻光入库、避崖,拍摄,远程传输信号等等。国内智能车辆研究现状相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。而且大多数研究处在于针对某个单项技术研究的阶段。虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定得技术差距,但是我们也取得了一系列的成果,主要有(1)中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。该自主驾驶轿车在正常交通情况下的高速公路上,行驶的最高稳定速度为13KM/H,最高峰值速度达170KM/H,并且具有超车功能,其总体技术性能和指标已经达

6、到世界先进水平。(2)南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。计算机系统采用两台SUN10完成信息融合、路径规划,两台PC486完成路边抽取识别和激光信息处理,8098单片机完成定位计算和车辆自动驾驶。其体系结构以水平式结构为主,采用传统的“感知建模规划执行”算法,其直线跟踪速度达到20KM/H,避障速度达到510KM/H。智能车辆研究也是智能交通系统ITS的关键技术。目前,国内的许多高校和科研院所都在进行ITS关键技术、设备的研究。随着ITS研究的兴起,我国已形成一支ITS技术研

7、究开发的技术专业队伍。并且各交通、汽车企业越来越加大了对ITS及智能车辆技术研发的投入,整个社会的关注程度在不断提高。交通部已将ITS研究列入“十五”科技发展计划和2010年长期规划。相信经过相关领域的共同努力,我国ITS及智能车辆的技术水平一定会得到很大提高。可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景。我们要结合我国国情,在某一方面或某些方面,对智能车进行深入细致的研究,为它今后的发展及实际应用打下坚实的基础。第2章总体方案设计第3页根据要求,确定如下方案在现有玩具电动车的基础上,加装红外对光管,超声波收发传感器,实现对电动车的速度、位置、运行状况的实时测量,并

8、将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。同时。加装的蓝牙模块,可以辅助控制小车,当小车的循迹出现故障,或者需要手动控制小车实现某种功能时,可以使用手机上的安卓软件,发出控制信号给蓝牙,蓝牙接收后传给小车,实现对小车的控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求总体方案框图循迹模块;用两只红外对管,分别置于小车车身前轨道的两侧,根据两只光电开关接受到白线与黑线的情况来控制小车转向来调整车向,测试表明,只要合理安装好两只光电开关的位置就可以很好的实现循迹的功能STC89C52循迹红外对管时钟电路复

9、位电路蓝牙模块电机驱动超声波红外避障第4页避障模块;用超声波避障,声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差T,然后求出距离LCT。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。然后通过一定的电路把数据传给单片机,单片机通过和障碍物间的距离来决定小车是否需要调整前进方向。电源模块;采用2支18650锂电池电源供电,电源电压足够小车和单片机的运行,可以很好的实现功能,锂电池还可以充电,可以多次使用。无线模块;用的无线模块是当今社会上便携式设备中普遍具有

10、的蓝牙无线模块,该模块性能稳定,传输速率快,稳定可靠,传输距离可观。该芯片使用简单,具有通用的串行通信端口,在市场中具有较高的知名度,且蓝牙技术发展前景良好,广受客户的好评。该设备最大的优点是无需制作专门的遥控器,可直接通过手机上的蓝牙设备发送相关的指令,操作方便快捷,界面人性化设计,具有良好的人机对话界面第3章安卓操作系统的简介31安卓操作系统的发展在20007年11月12日,开放手机联盟发布GOOGLEANDROIDSDK,ANDROID作为一个系统,是一个运行在LINUX26核心上的JAVA基础的操作系统。系统是非常轻量。ANDROID应用程序用JAVA开发而且很容易被放置到新的平台上。

11、在此同时,谷歌也宣布建立一个全球性质的联盟,这个组织由许多家手机的制造,软件第5页的开发商,芯片制造商,运营这些产品的销售商组成。这一联盟将致力于谷歌发布手机操作系统的开发以及它所涉及的应用软件的开发,32安卓开发建立一、ANDROID平台所具有的特点1开放性,ANDROID从底层被构建,使开发者可以创造隐忍注意的手机应用程序并且能够充分利用所有的付费的手机,它是真正的被构建成开放的。例如,一个应用程序可以调用任一手机的核心功能,打短信,打电话等等。它允许开发者为使用者创造平台使其有身临其境的体验。2所有的平台都是平等建立的,打破了应用程序局限,ANDROID打破创建新的,创新的应用程序的局限

12、,例如,开发者可以让个人手机上的数据和网站上的数据连接在一起,如用户的联系人,日历,位置提供了一个很有意义的用户体验,开发者可以创建一个应用程序,这个程序可以使用户看到他们朋友的位置和改变后的位置,如果发现他们就在附近,就可以马上和他们联系了。3,快速并且简单的应用程序的开发。ANDROID提供了宽范围的有用类库和工具,用这些可以创建丰富的应用程序,例如ANDROID使开发者可以获得设备的地理位置,并允许设备通过同类对同类的方式和其他设备通信,另外ANDROID包括一套完整的工具,这些工具提供开发者高度的生产力和深度探究他们的应用程序4。GOOGLE应用;互联网上的谷歌已经有多年的历史了,从开

13、始的只是搜索岛现在各个方面的渗透,如谷歌地图,邮件等等,谷歌的这些服务已经成为联系用户和互联网的重要关系纽带,安卓平台的手机都可以完美的结合这些优秀的服务。33ANDROID应用程序的分析对于一个ANDROID应用程序有四种部分构成;1ACTIVITY2INTENTRECEIVER3SERVICE4CONTENTPROVIDER不是每一个的应用程序都需要这四个部分,但是应用程序将会用这些来组合编第6页写。一但决定了应用程序所需要的组件,就需要在一个叫ANDROIDMANIFESTXML文件中列出他们,这是一个XML文件,在里面需要声明应用程序的组件和他们的功能需求。ACTIVITY是ANDRO

14、ID最普通的构建模块,它通常在应用程序中是一个单独的屏幕。每一个ACTIVITY是被实现作为一个继承于ACTIVITY基类的单独的类。例如;一个文本消息发送程序可能有一个显示要发送信息的屏幕,有一个显示给选中要发送的联系人的屏幕。每一个这些屏幕都会被一个ACTIVITY实现。ANDROID使用一个叫做INTENT的特殊类来让应用程序从一个屏动到另外一个屏幕。INTENT描述了一个应用程序想要干什么。INTENT数据结构的两个最重要的部分是;要响应的ACTION和DATA。典型的ACTION值是MAIN,VIEW,PICK,EDIT,等等,DATA表示成一个统一资源定界符。INTENTRECEI

15、VER当你想要在你的应用程序中编码来执行对外部事件的响应,你可以使用一个INTENTRECEIVER例如当电话响铃,或当数据网络可用时,或当午夜时,虽然INTENTRECEIVER不显示一个UI,但它们也许会显示一个来通知和提醒用户是否有令人感兴趣的事件发生。INTENTRECEIVER也是在ANDROIDMANIFESTXML中被注册,但你也可以在代码中使用CONTEXTREGISTERRECEIVER来注册它们,它的INTENTRECEIVER被调用时,你的程序不是非得运行;假如必要时,当一个INTENTRECEIVER被触发时,系统将会调用你的应用程序。SERVICE;一个SERVICE

16、是长期存活并且运行时不带UI的编码,例如,当在音乐播放器中播放歌曲时,可能在这个播放器中能有一个或者更多的ACTIVITY,这些ACTIVITY允许用户选择歌曲和开始播放歌曲。然而,音乐回放本身不应该被一个ACTIVITY处理,因为用户将期望在导航到一个新的屏幕后音乐保持播放。CONTENTPROVIDER应用程序可以把他们的数据存储到文件中,一个SQLITE数据库中,设置中,或者是任何其他的有意义结构中。如果你想要你的应用程序的数据和其他应用程序共享,一个CONTENTPROVIDER是有用的。一个CONTENTPROVIDER是一个类,它实现了方法的一个标准设置来让其他应用程序存储和恢复被

17、CONTENTPROVIDER处理的数据类型。34ANDROID蓝牙开发技术在两个不同设备上的应用之间建立一条完整的通信道路,并在他们之间保持一通第7页信段,RFCOMM是一个简单传输协议,它的目的是针对如何在两个不同设备上的应用上保证一条完整的通信道路,并保持一通信段。RFCOMM是为了兼容传统的串口应用,同时取代有线的通信方式,蓝牙协议栈需要提供与有线串口一致的通信接口而开发出的协议。MAC地址是烧录在网卡里的MAC地址,也叫硬件地址,是由48比特长6字节,16进制的数字组成023位叫做组织唯一标志符ORGANIZATIONALLYUNIQUE,是识别LAN局域网节点的标识2447位是由厂

18、家自己分配。在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。MAC地址就如同我们身份证上的身份证号码。步骤一SETTINGUPBLUETOOTH通过BLUETOOTHADAPTER得到蓝牙的ACTIVITY发送蓝牙连接意图通过EONACTIVITYRESULT得到蓝牙连接意图。步骤二FINDINGDEVICES通过得到开启蓝牙用户名和MAC地址配对蓝牙。步骤三连接蓝牙就像JAVA的聊天系统一样用一个蓝牙手机当服务器,一个当客户端,在用一个类当做连接的管理类就行了。35ANDROID平台蓝牙编程ANDROID平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。蓝

19、牙设备之间的通信主要包括了四个步骤设置蓝牙设备、寻找局域网内可能或者匹配的设备、连接设备和设备之间的数据传输。以下是建立蓝牙连接的所需要的一些基本类BLUETOOTHDEVICE类代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态。BLUETOOTHSOCKET类代表了一个蓝牙套接字的接口(类似于TCP中的套接字),他是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。BLUEBOOTHSERVERSOCKET类代表打开服务连接来监听可能到来的连接请求(属于SERVER端),为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远

20、端设备发起连接连接请求的时候,并且已经连接到了的时候,BLUEBOOTHSERVERSOCKET类将会返回一个BLUETOOTHSOCKET。BLUETOOTHCLASS描述了一个蓝牙设备的一般特点和能力。他的只读属性集定义了设备的主、次设备类和一些相关服务。然而,他并没有准确的描述所有该设第8页类备所支持的蓝牙文件和服务,而是作为对设备种类来说的一个小小暗示。BLUETOOTHADAPTER类代表了一个本地的蓝牙适配器。他是所有蓝牙交互的的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BLUETOOTHSERVERSOCKET(作为服

21、务器端)来监听来自其他设备的连接。应用程序里启动蓝牙功能,首先通过调用静态方法GETDEFAULTADAPTER获取蓝牙适配器BLUETOOTHADAPTER,以后你就可以使用该对象了。如果返回为空,THESTORYISOVER。其次,调用ISENABLED来查询当前蓝牙设备的状态,如果返回为FALSE,则表示蓝牙设备没有开启,接下来你需要封装一个ACTION_REQUEST_ENABLE请求到INTENT里面,调用STARTACTIVITYFORRESULT方法使能蓝牙设备。查找设备使用BLUETOOTHADAPTER类里的方法,你可以查找远端设备,在这次的设计中,蓝牙MAC地址确定,利用个

22、信息,就可以选择初始化一个连接,当设备配对好之后,MAC会被保存下来并可以使用蓝牙的API来读取,使用已知的MAC地址就可以对远端的蓝牙设备发起连接请求。客户端的连接为了初始化一个与远端设备的连接,需要先获取代表该设备的一个BLUETOOTHDEVICE对象。通过BLUETOOTHDEVICE对象来获取BLUETOOTHSOCKET并初始化连接具体步骤使用BLUETOOTHDEVICE对象里的方法CREATERFCOMMSOCKETTOSERVICERECORDUUID来获取BLUETOOTHSOCKET。UUID就是匹配码。然后,调用CONNECT()方法来。如果远端设备接收了该连接,他们将

23、在通信过程中共享RFFCOMM信道,并且CONNECT()方法返回。安卓的系统构架ANDROID总共分为了四个层,这四个层分别是应用程序层、应用程序框架层、系统运行库层和LINUX内核层9第9页ANDROID的开发包及相应软件的建立ANDROID的开发是可以在WINDOWSXP及其以版本、MACOS、LINUX等系统上进行开发的;首先呢,我们要进入GOOGLE的官方网站下载WINDOWSXP版本的JAVA开发包JDK,我们选择的版本是JDK160以上的版本。在应用开发平台方面,我们采用的是ECLIPSE,因为GOOGLE提供了基于ECLIPSE的ANDROID开发插件ADT,在随时更新的插件帮

24、助下,可以很快帮助我们完成ANDROID手机终端的相关应用开发。1、安装JDK和配置JAVA开发环境首先,安装JDK时,安装包中有JDK和JRE两部分,点击安装程序,指定安装目录,然后点击下一步,等待安装完成即可。安装完成之后,点击“我的电脑”,选择“属性”里面的“高级”选项,选择环境变量,找到PATH变量,如果没有,就自己添加一个,按后命名PATH就行,完成之后,点击编辑,添加JDK安装目录的“LIB”文件路径;之后点击确定,然后再找到CLASSPATH变量,在路径输入“”,然后点击确定。第10页2、检测安装安装配置完成之后,需要测试是否安装成功。点击开始运行输入“CMD”,打开命令模式。输

25、入“JAVAVERSION”,检测JDK安装是否成功,如果现实结果,则安装成功。3、安装ECLIPSE打开安装包,点击安装,弹出WORKSPACE对话框,确定创建项目的保存路径。4、SDK和ADT的安装和配置首先,解压安装包,运行“SDKSETUPEXE”。其次,在“ANDROIDSDKANDAVDMANAGER”的窗口左侧选择“SETTING”,选中“FORCEHTTPS/”然后返回“INSTALLEDPACKGES”,点击“UPDATEALL”。点击“AVAILABLEPACKGES”,选择要安装的API版本以及USB驱动和SDK文档,我们都选择了。这个过程很漫长,一定要保证网速快的情况下

26、来安装,要不会出现安装不了的情况,最少安装这个也要一天的时间,所以要耐心等待。下载完成之后,选择所有选项,然后全部安装,安装完成之后,配置SDK,SDK的配置更JDK是一样的。5、ADT的安装和配置启动ECLIPSE,点击“HELP”菜单,选择“INSTALLNEWSOFTWARE”之后,点击“ADD”按钮,点击ARCHIVE指向下载的ADT压缩包,然后点击“OK”,选中所需要安装的插件即可。6、ANDROID虚拟机的搭建打开菜单“WINDOWS”,一次选择“ANDROIDSDKANDAVDMANAGER”,打开界面;然后点击NEW新建模拟机,弹出选项卡,根据选项卡填写自己所需要的内容,即可创

27、建。7、建立好项目名后,即可启动虚拟机。第11页第4章系统软件程序设计41C语言编程环境介绍由于本次设计中程序系统用C语言编写程序。此次设计所选用的单片机是AT89C52单片机,其C语言语法和结构和标准C语言基本相同,只是有了相应的扩充,用到的编译软件是KEILC。下面结合我的程序编译简要介绍以下KEILC的编译环境的特点。KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。KEILC51是美国KEILSOFTWARE公司

28、出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些部分组合在一起。KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,UVISION与ISHEL

29、L分别是C51FORWINDOWS和FORDOS的集成开发环境IDE,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件OBJ。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件ABS。ABS文件由OH51转换成标准的HEX文件,以供调试器DSCOPE51或TSCOPE51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。第12页42各部分模块编程1循迹部分循迹部分使用红外线检测黑线,将信号传给单片机,通过

30、单片机来控制小车实现循迹功能,流程图如下。2避障部分开始前进扫描I/O口,是否检测到黑线Y左边右边左转右转N第13页主程序完成初始化工作、各路超声波发射和接收顺序的控制。定时中断服务子程序完成三个方向超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。3蓝牙部分蓝牙模块输入的信息进行存储分析,来控制电机驱动,以达到控制小车的前进、后退、左转、右转。在这个过程中,单片机首先进行初始化,包括设置单片机各个端口的方向,各个变量的初始化,以及单片机振荡频率的校准等。单片机定时对蓝牙模块串口读数据,如果串口的数据读出,则对读出的数据进行分析,读出的数据如果为A、B、C、

31、D则分别对应小车的前进、后退、左转、右转。小车硬件系统软件设计的流程图第14页是手机端程序的设计本程序是基于ANDROID21系统,所用开发工具为ECLIPSE集成开发环境,ECLIPSE是著名的跨平台的自由集成开发环境IDE。最初主要用来JAVA语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C、PYTHON和ANDROID的开发工具,在此开发环境下开发软件非常的方便。首先设计本系统手机端软件的程序界面,为了尽快实现程序的功能,本程序没有对软件界面设计做特别美化的设初始化开始串口是否连接串口数据是否发送判断数据驱动电机控制小车前进,后退,左转,右转。30秒内连接等待30秒内发送第1

32、5页计,仅包含我们所用到的几个按钮和图形显示,以实现我们的功能为最大目标。下面介绍ANDROID相关资源文件的作用16、171、ASSETS文件夹此文件夹也可以存放资源文件,而且/ASSETS目录下的资源文件不会在RJAVA自动生成ID,所以读取/ASSETS目录下的文件必须指定文件的路径(URL的路径为)。除此之外,我们还可以通过ASSETMANAGER类来访问这些文件。打开文件时,会把APK文件当做ZIP文件进行解压读取。但是有文件大小有限制不能超过1M(ANDROID22好像放宽(或者取消)了这个限制(至少可以存放10M,具体没有测试。)。2、RES文件夹主要用来存放资源。此文件夹下可以

33、创建子文件,常见的有动画ANIM,图片DRAWABLE,颜色COLOR,菜单MENU,布局LAYOUT,常量值VALUES,详细如下(1)ANIM文件夹后缀名为XML。动画文件都放在这里。(2)DRAWABLE文件夹用于存放图片资源,图片或者XML。图片格式,有PNG,9PNG,JPG,GIF都行。XML文件通常为自定义的形状SHAPE或图片选择器类SELECTOR似的东西,就是不同状态下不同的图片,用于设置BACKGROUND的。对分辨率笼统的分,可以分为高中低三种分辨率。(3)COLOR文件夹用于存放COLOR列表,和DRAWABLE的XML一样,表示不同状态下的不同颜色(4)MENU文件

34、夹菜单资源文件夹5)LAYOUT文件夹布局文件夹。此文件夹的名字也是可以起到屏幕适配的功能的。横竖屏LAYOUTLAND|PORT;分辨率LAYOUT1280X720(6)VALUES文件夹存放常量值的文件夹。里面常见的XML文件为ARRAYSXML资源数组;COLORSXML颜色值;DIMENSXML像素值;STRINGSXML字符串值;TYLESXML样式值。此文件夹,也有屏幕适配作用。比如DIMENS在不同分辨率下的值。同样的是加1280X720这样的后缀。对于STRINGS,有各种语言的版本对应。默认为英文。中文的文件夹名字应该是VALUESZHRCN,VALUESZHRTW。(7)R

35、AW文件夹存放不需要系统编译成二进制的文件,例如字体文件等同ASSETS文件夹类似。(8)XML文件夹存放XML文件。第16页否是否是否是是蓝牙通信流程图以下是手机端实现功能的程序流程图如图52所示一、手机界面程序设计在设置手机界面的时候,在ECLIPSE集成开发环境下,首先新建一个ANDROID项目工程,兴建路径是FILENEWANDROIDPROJECTPROJECTNAME开始初始化蓝牙是否打开蓝牙是否配对蓝牙是否连接监听器是否按下发送蓝牙API30秒等待搜索蓝牙地址等待蓝牙连接等待监听器按下第17页选择ANDROID16版本,工程名命名为BLUETOOTHCAR,选择CREATEACT

36、IVITY,则自动创建了一个ACTIVITY在创建ACTIVITY时,需要注意一下四个要点1、一个ACTIVITY就是一个类,并且这个类要继承ACTIVITY。2、需要复写ONCREATE方法(当一个ACTIVITY第一次运行显示在手机上或者虚拟机上的时就会调用ONCREATE方法)。3、每一个ACTIVITY都需要在ANDROIDMANIFASTXML文件当中配置。4、为ACTIVITY添加必要的控件。如图53所示,在制作蓝牙小车手机界面的时候,我用到了TEXTVIEW文本控件和BUTTEN按钮控件,并且在添加控件时采用相对布局形式18、19。两个TEXTVIEW文本控件分别命名为后备军官学

37、院和蓝牙控制系统,在LAYOUT布局文件下可以任意改变控件的位置、字体的大小、背景图片。改变背景图片的方法为首先将需要用到的背景图片,分别拖入到DRAWABLE下,高中低分辨率都拖入一张,以便不同分辨率的手机识别,然后在LAYOUT布局文两个TEXTVIEW文本控件分别命名为后备军官学院学院和蓝牙控制系统,在LAYOUT布局文件下可以任意改变控件的位置、字体的大小、背景图片。改变背景图片的方法为首先将需要用到的背景图片,分别拖入到DRAWABLE下,高中低分辨率都拖入一张,以便不同分辨率的手机识别,然后在LAYOUT布局。第18页二、手机监听程序设计在ECLIPES开发平台上,首先在LAYOU

38、T文件中采用相对布局的形式设计完成手机界面以后,就要考虑为我们的每个BUTTEN按键绑定监听程序,以实现在每个按键按下时,就能通过手机蓝牙发送相应的数据到小车蓝牙接收模块。首先在LAYOUT文件中,每添加一个控件,都会为这个控件设置一个ID,(如ANDROIDID“ID/BUTTON1“),然后在RJAVA文件就会自动生成一个ID地址。然后在主程序里面编写监听程序,当按键按下的时候,通过监听按键的ID地址的不同,采用SWITCH结构,跳转到不同的CASE里,向小车蓝牙模块发送不同的数据。在程序里直接写进小车蓝牙模块的蓝牙地址(001210310170),当程序开始运行时,将会自动搜索该地址的蓝

39、牙芯片,当进行过一次配对连接以后,将会记忆该地址,以后每次只要打开手机界面,开始运行时就会自动进行搜索配对连接好20、21。按钮点击事件PARAMV/PUBLICVOIDONCLICKVIEWVSWITCHVGETID/转写按钮CASERIDBUTTON1MESSAGE0BYTE0X41VIBRATORTOASTMAKETEXTTHIS,“前进“,TOASTLENGTH_LONGSHOW第19页BLUESENDMESSAGEBREAK/设置按钮CASERIDBUTTON2MESSAGE0BYTE0X44VIBRATORTOASTMAKETEXTTHIS,“后退“,TOASTLENGTH_LON

40、GSHOWBLUESENDMESSAGEBREAKCASERIDBUTTON3MESSAGE0BYTE0X43VIBRATORTOASTMAKETEXTTHIS,“左转“,TOASTLENGTH_LONGSHOWBLUESENDMESSAGEBREAKCASERIDBUTTON4MESSAGE0BYTE0X42VIBRATORTOASTMAKETEXTTHIS,“右转“,TOASTLENGTH_LONGSHOWBLUESENDMESSAGEBREAKCASERIDBUTTON5MESSAGE0BYTE0X61VIBRATORTOASTMAKETEXTTHIS,“停止“,TOASTLENGTH_

41、LONGSHOWBLUESENDMESSAGEBREAKDEFAULTBREAK第5章系统调试51C语言的调试软件的调试包括程序本身语法的调试和在电路板上功能的调试两种。在编程过程中,为了得到满足要求的用户程序,一般都需要有一个对程序的调试过程,甚至需要经过多次反复的调试才能完成。在调试程序前为了调试方便,避免程序出错时将单片机拆来拆去的麻烦,在电路板上做了一个下载口,可以将下载线直接插到电路板上进行调试,这样就可以一边进行调试,一边修改程序。程序用KEILC软件写好后,先用该软件的编译功能编译一下所写的程序,检查程序是有语法错误或其他的错误。如果有错误则根据提示进行分析将错误改过来直至编译成

42、功为止。当完成了语法调试后,再根据定时开关插座设计的功能要求修改程序完成系统的各个功能。在编写程序的时候一定要根据系统实现的功能和连接方式,认真分析,画出系统主程序、时钟程序、设置程序的流程图,并根据画出的流程图一步一步的去写出程序。根据系统的特点,软件系统应该按模块进行调试,当各个模块调试通过后再将各个模块整合起来,进行综合调试,直到得到预期结果。与纯粹的C语言编程不同的是,单片机编程要考虑到硬件的设计,所有程序的编写都是根据硬件资源进行。本次设计的智能小车,有三个主要的模块,由于三个程序一起调试有苦难,所以我分别调试每一个模块的,然后在将它们综合。1;循迹部分的调试第20页进入程序后,根据

43、红外传感器检测的值,让程序做出判断,然后判断转向,完成沿着黑线行走,直到走完整个赛道,根据检测情况调用相应的函数,控制小车的行进、停止、左转及右转。它的调试成功图如下。2;避障部分这个部分的主程序完成初始化工作和超声波发射和接收顺序的控制以及根据数据控制小车运动,其中定时中断服务子程序完成超声波的轮流发射,外部中断服务子程序主要完成时间值的读取、距离计算、结果的输出等工作。它的调试成功图如下。第21页3,蓝牙部分;蓝牙部分分为两部分的调试,一部分手机上的安卓程序和小车连接收发信号的调试,另一部分为蓝牙接收到信号和单片机之间的传输的调试,蓝牙主要根据手机上发送的命令传给单片机,单片机在根据这些命

44、令控制小车的运动。蓝牙和单片机调试成功图如下。第22页52JAVA语言的调试将做好的工程添加进入ECLIPES开发环境中,检查各个文件夹下面的程序有没有出现打红色X的问题以及警告,点开下方的PROBLEM的文件,检查该工程有没有出现问题,当排除了所有的问题以后。配置一个22版本的模拟器,然后启动模拟器,在模拟器上运行该工程,在模拟器上将会出现已经做好的手机界面,运行完成,调试成功。然后将手机连接到电脑上,打开安卓手机的USB接口。接下来点击运行整个工程项目,在手机上出现前面那个做好的蓝牙小车控制界面。点击各个按钮,都无问题,证明该JAVA程序没有问题。系统整体的调试,蓝牙控制小车的硬件模块和软

45、件模块分别调试通过后,接下来就可以进行系统的整体测试。首先检查各个模块之间,以及电机驱动与电机的连接都没有出错的情况下,打开给各个模块提供的5V电源以及打开给电机提供的另一个6V电源。此时最小系统模块指示灯点亮,表示单片机供电正常,蓝牙模块指示灯开始闪烁,表示蓝牙模块也供电正常。此时打开安卓手机的蓝牙,搜索该蓝牙芯片,进行配对。然后打开我们做好的手机界面,当界面打开之后,开始自动搜索蓝牙芯片的地址进行连接,当蓝牙芯片的指示灯有闪烁转变为常亮以后,表示蓝牙配对连接成功。在刚开始的时候调试的时候遇到了一些问题,在电机驱动方面,当在手机端的界面上点击前进、后退、左转、右转按钮的时候,蓝牙模块能接受手

46、机端发送的字符A、B、C、D的ASCII码值,并且能够通过串口相应的传递给单片机,单片机通过分析串口传过来的数据,改变P2口的值分别为65、66、67、68,来控制电机驱动的第23页输入端IN1、IN2、IN3、IN4。相应的电机驱动端的四个指示LED灯都能根据数据的变化采取不同的量灭组合情况,来相应控制小车的前进、后退、左转、右转。以下是在手机上设置的安卓程序启动和小车的蓝牙成功配对图。第24页在调试的过程中也遇到一些问题,就是最开始电机驱动输出端控制的电机却不会转动。通过分析,可能有两个原因导致电机不会转动,其一,电机驱动的输出端的接线出现了错误,导致电机转动出现问题;其二,电机驱动端接的

47、给电机供电的电压达不到驱动电机的最低电压,最后通过查询资料和用万用表测驱动模块的输出端的各个引脚的高低电平,发现输出端的电平也能随输入端的改变而变化,当最后测试VCC和GND两端,发现无明显的压降,再用万用表的测电阻值测两端的阻值,发现问题是电机驱动模块输出端的供电端VCC与GND端短路,导致外接电源不能给电机供电。最后我通过直接从芯片的引脚接线到电源端,则电机能够正常转动。第6章总结与体会本次毕业设计是一个基于单片机AT89C52的智能小车控制,包括方案选择、软硬件设计、单片机最小系统、电机驱动电路和蓝牙电路、硬件测试结果及解决在电路调试时第25页遇到的问题。在此期间主要完成的工作包括以下几

48、个方面(1)设计初期收集电机驱动、单片机等相关资料,对智能小车的实现原理有比较清晰的了解。(2)确定系统框图,对电源模块、单片机最小系统模块、蓝牙电路模块和电机及其驱动电路模块等的实施方案进行比较,确定最终的智能小车控制的设计方案。(3)根据智能小车控制的原理图制作出电路连接图。(4)根据系统要实现前进、后退、左转、右转等功能编写出小车端的软件程序。(5)在ECLIPES开发环境下,应用JAVA程序编写手机界面程序,并且通过模拟器来检测手机界面程序。(6)软硬件调试通过后进行整体调试,并查找该系统存在的缺陷,进行完善。(7)最终小车能够实现前进、后退、左转、右转等功能,达到老师给出的基本要求。

49、本次设计完成了基于安卓手机的智能小车控制系统。该系统采用51单片机AT89C52编程控制电机的正反转来实现小车前进、后退、左转、右转,而电机的正反转则由电机驱动L298N输出端的逻辑电平来控制。从整个设计的过程来看前期的充分的准备显得非常的重要,经过前期充分的准备,和对嵌入式系统开发的学习,避免了很多在后续的设计中可能出现的问题。MCU端的软硬件设计因为与所学知识相关性较大,所以出现的问题较少,MCU底板设计时鉴于电路简单,且易于焊接,故未采用PCB制版也相应的节约了成本。特别值得一提的是为了提高系统在硬件上的安全性和稳定性,我特别添加了硬件保护装置,以提高系统的硬件防碰撞的能力。主要的问题出现在ANDROID端的软件设计上,由于对ANDROID开发环境的不熟悉,缺乏一些在编写JAVA程序时的一些技巧性问题,所以刚刚开始时总是出现很多问题,并且出现的问题都需要查找相关资料才能解决。通过学习一些ANDROID相关的学习视频,最后对ANDROID环境有了一个系统的了解在开发的过程中也得心应手些。ANDROID端图形界面的设计也是一大难点,基于JAVA的图形界面设计不论是从设计平台还是JAVA语言的掌握都是一想挑战,但幸于JAVA软件的开发技术已经成熟,且可查阅的资料多且详尽,所以图形界面的设计达到设计时的五项按键要求,功能实现良好,除界面的友好程度可以更加优化外,其

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。