毕业论文-基于89C52单片机的多功能控制机械手系统设计.doc_第1页
毕业论文-基于89C52单片机的多功能控制机械手系统设计.doc_第2页
毕业论文-基于89C52单片机的多功能控制机械手系统设计.doc_第3页
毕业论文-基于89C52单片机的多功能控制机械手系统设计.doc_第4页
毕业论文-基于89C52单片机的多功能控制机械手系统设计.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南华大学机械工程学院毕业设计(论文)引 言众所周知,控制在人类的日常生活中是无法分割的一部分,研究控制学是人类创造美好生活的必要课题,测量控制也是许多学科中发展得非常广泛的一门学科。在现代社会生产活动中,测量控制广泛应用于通信、医疗、机械、电子、环境等各个行业之中。但是当你不能够掌握新的测量数据控制方法时就会使人们束手无策,无法进行下面的工作。在众多工业化测控现场中对核类的测控对人类的发展已经成为一个不能忽视的方面,因为环境中可能存在辐射,但对于老旧设备又不得不维修、更换,如果不能掌握现场的第一手资料贸然进入是具有很大的风险的。但核能已经成为现今所发展的不可或缺的能源,所以对核环境下的测控已经成为现代测控所必须面对与攻克的难题,这已经成为当前人们的一个共识。因此,研究整理出系统化的辐射环境下的测量控制体系,建立起一套行之有效的对辐射环境下的测量控制方法,开发出能够测量现场情况并将之有效保存下来的系统具有十分重要的意义,同时也是对我们国家核电站、环境保护以及建设社会主义生态文明的必然要求。1 绪论1.1 课题背景在能源工业发展及核技术利用的过程中人类建设了许多用于科研、医疗和发电等用途的设施。这些设施满足了国防和国民经济发展的需求。早期的一些核设施已陆续完成了它的使命,已经或将要进入换新的阶段,而且随着时间的推移和新的核设施的建造,还将有更多的核设施准备退役,因而它的退役工作变得越来越重要。二十世纪九十年代初我国开始解决对历史遗留设施和放射性废物的治理工作,同年月国务院批复关于已经停用的核工业的设施和放射性三废治理问题的请示,由此启动了一批核设施退役及放射性废物治理的项目。这些项目主要针对我国早期的核设施的退役以及历史遗留的放射性废物的治理。但在核设施退役和放射性废物治理过程中也存在诸多需要解决的问题。由于早期科学技术的欠缺致使很多相关方面的工程资料不完整,使得现在无法清晰了解其内部情况,即使部分有图纸资料的工程也不具备实体的三维模型,导致退役方案制定时无法使用先进的科学工具,增加了退役过程中的难度,难以制定最优化技术路线。为此研究相关技术并制作一套软硬件系统,获得核设施内部点云信息,转化并建立完整的三维模型数据库,同时添加信息表达直观、扩展性强的核设施可视化信息管理系统。通过多种遥控移动测量平台搭载机械臂,可实现不同情况的核设施内部三维模型的建立并在成熟的软件平台上实现可视化管理,并提供友好的数据接口以兼容其他管理系统及升级需求。用以来解决退役和使用中的核设施的资料得不完整性,使得可以清晰的了解其内部情况,为以后的工作奠定基础。1.2 研究目标本课题在上述背景的前提下只针对机械手的部分,以单片机为核心元件设计一套系统对机械臂进行控制。在对机械手控制为前提的目的上,研究机械臂在各种不确定的场合下所需要运行的轨迹及状态,从而确定需要怎样设计系统才能保证该系统的通用性。比如在A场合下只需要水平进给运动,B场合需要圆周运动那么单一执行器肯定是不能实现这个目的的。研究基于单片机硬件电路的程序,怎么合理的设计程序使它可以在最少的命令下实现较多的功能;研究控制机械手的控制系统,采用一种怎样的控制方式实行控制从而达到所要结果。1.3 预期实现功能(1)能够实现控制,控制为本课题的最基本要求,只有在实现控制的基础上才可能添加其余的功能;(2)可以使机械臂能够在不同的场合下都可以方便的运动,不必因为场所的变换而经常更换机械臂的结构;(3)机械臂所实现的动作尽量简单,程序实现起来较为方便、稳定,避免因为过度复杂而出现的错误;(4)是一种点动式或者自锁式的控制,实现起来较为简单但控制上面具有高效性。2 总体方案设计2.1 主要研究内容2.1.1 单片机及编程语言(1)单片机的选取,单片机拟选用89C52,该种单片机具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。89C52成本较低但可以实现本课题的所有任务要求,具有很高的性价比。(2)编程语言的选取,现在常用的单片机编程语言有汇编语言和C语言。汇编语言作为最接近机器码的语言是一种用文字助记符来表示机器指令的符号语言。其主要特点是不怎么需要占用资源,程序具有较高的执行率,由于他的每条指令都有相对应的机器码,所以每一步的执行动作非常具有条理,并且程序大小和堆栈调用情况都十分容易控制,调试起来也比较方便。对于不同的单片机汇编语言是不太一样的,他不能随意复制。但懂得汇编语言可帮助了解影响任何语言效率的特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。对于启用函数和使用浮点数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。但是单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算速度快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。在经过综合考虑现选取C语言为本次程序的编程语言。在keil3的配合下转变成机器码实现protues仿真和对硬件电路的驱动,使机械臂能够完成所设计的一系列动作。2.1.2 执行器 执行器的介绍,执行器(final controlling element)是自动化技术工具中接收控制信息并对受控对象施加控制作用的装置。执行器也是控制系统正向通路中直接改变操纵变量的仪表,也是由执行机构和调节机构组成。 (1)执行器有多种多样其中,气动执行器的执行机构和调节机构是统一的整体,其执行机构有薄膜式和活塞式两类。活塞式行程长,适用于要求有较大推力的场合;而薄膜式行程较小,只能直接 带动阀杆。由于气动执行机构有结构简单,输出推力大,动作平稳可靠,并且安全防爆等优点,在发电厂、化工,炼油等对安全要求较高的生产过程中有广泛的应用。电动执行机构主要应用于动力厂或核动力厂。电动执行机构的主要优点就是高度的稳定和用户可应用的恒定的 推力,其可达到的最大推力不如液动执行器,但液动执行器造价要比电动高很多。电动执行器的抗偏离能力是很好的,输出的推力或力矩基本上是恒定的,可以很好的克服介质的不平衡力,达到对工艺参数的准确控制,所以控制精度比气动执行器要高。如果配用伺服放大器, 可以很容易地实现正反作用的互换,也可以轻松设定断信号阀位状态(保持/全开/全关),而故障时,一定停留在原位,这是气动执行器所作不到,气动执行器必须借助于一套组合保护系统来实现保位。综上所述本课题选用电动执行器,初步定在选取直流电机或者进步电机最终实现对机械臂的控制。2.1.3 控制方案(1) 控制方案初步设想,经过初步考虑可采用有线式或无线式的方案。若采用有线式则需要线缆连接,从而传输大数据、实时控制及供电问题。但线缆的连接在辐照环境下会产生二次污染继而增加成本。非接触式控制本质则是电磁波的传送,但是辐照环境多半是密闭的,周围部有厚实的隔离层。这样会影响电磁波的接收与发送可能得不到想要的结果。经过综合考虑选取非接触式控制系统。加入无线中继工作中继站并在移动平台上搭载计算机。在进入某些封闭环境下时数据先传送至移动平台上的计算机中(三维扫描仪与计算机之间采用有线连接)待得扫描结束出来时可以通过中继站传送到远程终端。(2) 可以采用红外遥控、蓝牙技术等。红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。发射机一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。接收电路一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制(机构)。具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点。(3) 在电脑上可以设计一款上位机用来辅助控制,通过串口方式可以有效地提高控制距离,增加稳定性降低影响还可以将收集到的资料更好的返还回来保存在计算机中。并由计算机B通过网络等IP协议对它进行进一步的控制。为后续的工作打下良好的基础。2.2 初步设计方案及对比2.2.1 初步设计方案本课题是基于单片机的多功能控制系统,在对单片机、执行器、编程语言、控制方案的选取4个方面问题的考虑和解决后,逐一通过程序及计算机仿真建立模拟实验进行测试。并将出现的问题记录下来调试。待的每一个小功能都能够达到预期目标后,将整个系统组合起来进行综合实验,继续记录问题并调试。直到本课题的研究成功。如图2.1所示:基于52单片机的多功能控制系 统方 案单片机单片机型号:89C52编程语言:C语言 执行器直流电机控制方案红外线远程遥控上位机控制界面模拟实验电路程序图2.1 初步设计方案操作人员经过远程遥控,控制扫描装置移动平台进入扫描现场,先行搭建通信及充电中继站,然后搭载三维扫描装置进入现场,在特种机械手操作下对指定目标区域进行多角度扫描,获得的点云数据及当前位置信号通过通信网络即时传输到远程主机存储,飞行器可搭载三维扫描装置对其他行走装置运行困难区域扫描。获得的点云数据经过处理后进行3D建模,导入可视化管理系统。 经过多方面考虑在少机构多通用的原则下,机械部分拟实现以下功能,一个安装到基座可以带动整个机械部分运动的电机,两段分别可以实现垂直、水平运动的机械臂。通过遥控机器人把设备室操作平台架设在设备室上方,控制垂直升降臂下降到适合位置,可回转水平伸缩臂及末端工作台带动扫描装置在不同位置进行扫描,用以获取不同视角的设备室内部点云数据,如图2.2所示: 1行走移动平台 2设备室机械臂平台 3设备室4垂直升降臂 5水平伸缩臂 6末端工作台 7扫描装置 图2.2 设备室扫描方案示意图通过远程控制程序达到控制4的垂直运动和5的水平运动并且整个机械机构可以实现360度的旋转来满足三维扫描装置可以完成对设备室的扫描,继而完成任务。可以将非接触充电技术引入移动平台供电中,研制一个具有非接触式充电及无线中继的工作中继站,能用机器人搬运、安置在指定位置,通过短距离无线通信及非接触充电解决大数据传输、实时控制及供电问题。具体方法是首先通过机器人将工作中继站带入工程内部指定位置,然后通过非接触方式充电技术对机器人携带的电池进行充电。一旦充电结束,可以立即继续剩下的工作,这样可以提高效率、减小移动电缆过长而带来的二次污染等一系列问题。电能传送部分放在电缆终端处。用于等候机器人平台的到来,一旦检测到机器人平台在谐振发射器的上方,将自动开启工作。第一个微处理器通过检测谐振电流大小来判断是否有移动机器人过来充电。第二个微处理器主要检测电池组件是否缺电,控制直流变换器是否给电池组件充电,同时也检测谐振线圈输入电流大小,判断充电位置是否到位,然后给机器人控制器发出是否移动的驱动信号。3 硬件设计3.1基本系统下面先介绍下本课题所用单片机的一些基本系统:3.1.1时钟电路 在设计时钟电路之前,让我们先了解下51 单片机上的时钟管脚:XTAL1(19 脚) :芯片内部振荡电路输入端。XTAL2(18 脚) :芯片内部振荡电路输出端。XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2 中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的11.0592M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 40pF 之间选择(本实验套件使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30 50pF 之间。通常选取33pF 的陶瓷电容就可以了。另外值得一提的是如果读者自己在设计单片机系统的印刷电路板(PCB) 时,晶体和电容应尽可能与单片机芯片靠近,以减少引线的寄生电容,保证振荡器可靠工作。检测晶振是否起振的方法可以用示波器可以观察到XTAL2 输出的十分漂亮的正弦波,也可以使用万用表测量( 把挡位打到直流挡,这个时候测得的是有效值)XTAL2 和地之间的电压时,可以看到2V 左右一点的电压3.1.2复位电路 在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。MCS-5l 系列单片机的复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST 持续为高电平,单片机就处于循环复位状态。复位操作通常有两种基本形式:上电自动复位和开关复位。图2 中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC 充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。3.1.3其它引脚 EA/VPP(31 脚)的功能和接法52单片机的EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚。当EA 保持高电平时,单片机访问内部程序存储器;当EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。在本实验套件中,EA 管脚接到了VCC 上,只使用内部的程序存储器。这一点一定要注意,很多初学者常常将EA 管脚悬空,从而导致程序执行不正常。 P0 口外接上拉电阻52单片机的P0 端口为开漏输出,内部无上拉电阻。所以在当做普通I/O 输出数据时,由于V2 截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。另外,避免输入时读取数据出错,也需外接上拉电阻。在这里简要的说下其原因:在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。例如,当从内部总线输出低电平后,锁存器Q 0, Q 1,场效应管V1 开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。又如,当从内部总线输出高电平后,锁存器Q 1, Q 0,场效应管V1 截止。如外接引脚信号为低电平, 从引脚上读入的信号就与从锁存器读入的信号不同。所以当P0 口作为通用I/O 接口输入使用时,在输入数据前,应先向P0 口写“1”,此时锁存器的Q 端为“0”,使输出级的两个场效应管V1、V2 均截止,引脚处于悬浮状态,才可作高阻输入。各系统如下图所示:图3.1 52单片机及最小系统及各引脚3.2设计系统由于直流电机需要9V电压而单片机需要使用5V电压则在电路中需要使用电压转换模块,本课题拟先采用9V电压在经过转换模块变换为5V电压。P10为直流电机安在基座上负责整个机械臂的360度旋转。P1.7口负责控制P10电机,P1.7口上电Q6 NPN工作P10正常工作。P9为9V电源插口。S4为总控开关。P4和P5为机械臂上的两个电机,分别控制机械臂的垂直运动和水平运动。D1D4为四个发光二极管分别对应机械臂两个方向的四种运动。各模块电路如下图: 图3.2 基座电机 L7805三端稳压集成电路(78 为正电压输出),三端 IC 是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端,接地端和输出端。它的样子象是普通的三极管,TO- 220 的标准封装, 也有 9013 样子的 TO-92 封装。 用 78系列三端稳压 IC 来组成稳压电源所需的外围元件极少,电路内部还有 过流,过热及调整管的保护电路,L7805ABV使用起来可靠,方便,而且价格便宜。图4.3 电压转换模块图3.4 L298N电路图对于以上电路图有以下几点说明:1)电路图中有两个电流,一路为L298工作需要的5V电源VSS,一路为驱动电机用的电池电源VS。2)1脚和15脚有的电路在中间串接了大功率的电阻,可以不加3)八个续流二极管是为了消除电机转动时的尖峰电压保护电机而设计,简化电路可以不加。4)6脚和11脚为两路电机通道的使能开关,高电平使能所以可以直接接高电平,也可以交由单片机控制。5) 由于工作时L298的功率较大,可以适当加装散热片。 L298N是ST公司生产的一种高电压,大电流的电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V,输出电流大,瞬间峰值可达3A,持续工作电流为2A;额定功率为25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电机和步进电机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个用控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机和四相步进电机,也可以两台直流电机。图3.5 红外模块超再生接收模块采用LC振荡电路,内含放大整形,输出的数据信号为解码后的高电平信号,使用极为方便,并且价格低廉,所以被广泛使用。带四路解码输出(同时也可改为六路点动或互锁输出),使用方便;频点调试容易;产品质量一致性好,性价比高。接收模块有较宽的接收带宽,一般为10MHz,出厂时一般调在315MHz或433.92MHZ(如有特殊要求可调整频率,频率的调整范围为266MHz 433MHz。)。接收模块一般采用DC5V供电,如有特殊要求可调整电压范围。脚位及使用说明:表3.1 脚位使用说明脚位名称功能说明1VT输出状态指示2D3数据输出3D2数据输出4D1数据输出5D0数据输出65V电源正极7GND电源负极ANT接天线端 VCC电压要与模块工作电压一致,且要做好电源滤波;天线对模块的接收效果影响很大,最好接1/4波长的天线,一般采用50欧姆单芯导线,天线的长度315M的约为23cm,433M的约为17cm;天线位置对模块接收效果亦有影响,安装时,天线尽可能伸直,远离屏蔽体,高压,及干扰源的地方;使用时接收频率、解码方式应与发射匹配。本课题总体思路为在外接9V电源的供电下直接供给电机驱动模块和通过转换为5V供给单片机,从而实现整体电路的正常工作。再通过串口和红外遥控控制电机的启、转、停,实现整个机械臂的旋转、垂直及水平方向的伸缩完成整个课题的目的。通过了解了硬件电路的结构及芯片引脚的物理定义下面开始进行本次课题软件的设计。4 软件设计4.1设计思路 随着计算机技术的迅速发展,软件逐渐成为与硬件相互依存的一部分,目前一台多功能的电子仪器已经无法由硬件电路单独构成了,硬件电路是产品具体功能实现的物理基础,而软件程序正是具体功能实现的逻辑基础。编写相应的软件程序能够使产品的功能更加符合人们的使用需求,协调系统的整体功能,因此编写的程序应该具有严密性、科学性、可行性、高效性。本设计所编写的程序属于应用软件系列,目的是为了实现电路的特定功能;本设计编程采用的语言是C语言,该语言是一种运用非常广泛的计算机高级语言,该语言是在单片机、嵌入式系统等领域中使用的最为广泛的一种语言,用它来开发程序,不但开发时间周期短,而且便于修改与调试,因此倍受广大软件开发者的青睐。C语言具有许多其他编程语言不具备的优点,在此简要说明其主要优点: (1)该语言符合人类语言规则,编写、使用方便,具有良好的可读性; (2)该语言体系完整、语句精练、语句类型丰富,功能强大;(3) 用该语言编写的代码语句结构紧凑、语法上自由度较大,计算机执行语句速度快。(4) C语言每段程序易于理解,主程序与子程序通过调用连接,条理清晰,对于以后的调试有很好的帮助。软件设计整体思路如下图:第一步: 计算机仿真与调试编写基于51单片机的电机驱动程序用protues仿真调试程序用VB编写上位机控制界面设置串口实现初步控制调试程序将程序烤入单片机测试程序第二步: 结合实物调试图4.1 软件设计整体思路4.2电机驱动程序本课题以52单片机作为控制通过L298驱动直流电机来控制机械臂的运动,实现最终目的。三个电机一个要实现360度转动,另外两个要能实现正反转。电机的360度转动可以通过给一个高电平来控制,在本课题中P1.7口负责控制基座电机实现旋转,那么当P1.7=0时电机转动P1.7=1时电机停止。对于另外两个电机由于用到了L298,L298芯片的内部实际上H桥驱动电路,所以控制电机的正反转实际上就是控制电流的流向。如下图: 图4.2 电机正转 图4.3 电机反转 Q1Q4分别对应着相应的IN口,通过给IN口不同的电平来控制电机的正反转,从而实现机械臂的垂直、水平运动。初步程序设计如下:void main() while(1) key(); if(flag1=1) motor1(); if(flag2=1) motor2(); if(flag3=1) motor3(); if(flag4=1) motor4(); if(flag5=1) motor5(); if(flag6=1) motor6(); void key() /按键子程序 if(key1=0) /正转 delay_ms(10); if(key1=0) flag1=1; flag2=0; flag3=0; while(!key1); if(key2=0) /反转 delay_ms(10); if(key2=0) flag1=0; flag2=1; flag3=0; while(!key2); if(key3=0)/停止 delay_ms(10); if(key3=0) flag1=0; flag2=0; flag3=1; while(!key3); if(key4=0) /正转 delay_ms(10); if(key4=0) flag4=1; flag5=0; flag6=0; while(!key4); if(key5=0) /反转 delay_ms(10); if(key5=0) flag4=0; flag5=1; flag6=0; while(!key5); if(key6=0)/停止 delay_ms(10); if(key6=0) flag4=0; flag5=0; flag6=1; while(!key6); void motor1() /正转 IN1=0; IN2=1;void motor2() /反转 IN1=1; IN2=0;void motor3() /停止 IN1=1; IN2=1;void motor4() /正转 IN3=0; IN4=1;void motor5() /反转 IN3=1; IN4=0;void motor6() /停止 IN3=1; IN4=1;void delay_ms(uint z) /ms延时子程序 uint x, y; for(x=z;x0;x-) for(y=110;y0;y-);在仿真中本程序实现了两组各三个开关控制下的电机的正转,反转和停止。在按键子程序中加入按键延时和单项选择功能,防止因为抖动而产生的误差使电机运行起来,并且在单个电机其中一个运动为真的时候定义其他运动都为假,防止程序运行时发生错误。motor1();motor2();motor3();分别对应的第一个电机的正转反转及停止,motor1();motor2();motor3();对应着第二个电机的正转反转及停止。key1到key6对应六个开关并一一与motor()对应。protues仿真图如下:图4.4 基于单片机的protues仿真4.3 上位机控制程序 Visual Basic是一种由 Microsoft 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言不管是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。先用VB设计一个简单的界面,使其具有串口发送的功能,并能自行收到发送的内容。简单程序如下:Private Sub Combo1_Click()MSComm1.CommPort = Combo1.ListIndex + 1End SubPrivate Sub Combo2_Click()strSettings = Combo2.Text & , & n & , & 8 & , & 1MSComm1.Settings = strSettingsEnd SubPrivate Sub Command1_Click(Index As Integer)MSComm1.Output = Text2.TextEnd SubPrivate Sub Command2_Click()MSComm1.PortOpen = TrueMsgBox 串口打开End SubPrivate Sub Command3_Click()Text1.Text = End SubPrivate Sub Command4_Click()Text2.Text = End SubPrivate Sub Form_Load()Combo2.AddItem 19200Combo2.AddItem 12800Combo2.AddItem 11520Combo2.AddItem 9600Combo2.AddItem 4800Combo2.AddItem 2400Combo2.AddItem 1200Combo2.AddItem 600End SubPrivate Sub MSComm1_OnComm()Select Case MSComm1.CommEventCase comEvReceivelop:Dim hk As Varianthk = MSComm1.InputText1.Text = Text1.Text & hkIf MSComm1.InBufferCount 0 ThenGoTo lopEnd IfEnd SelectEnd Sub该程序能够实现串口的发送与接收,具备了理论上的给下位机指令的目的。并且本程序设计了串口与波特率的自有选取功能。使其能够更方便的使用,不用每次都去更该程序配合下位机的串口与波特率。为适应大部分情况串口的选择范围为COM1到COM10,波特率的范围是600Bd/s到19200Bd/s。在虚拟串口的帮助下和物理串口的短接下可以看到Text2发出的内容在Text1中被显示出来。电话标志的元件为VB自带的串口元件只需要对它进行定义就可以完成串口的信息传递功能。在VB编程的界面使用前需要调节串口及相应的波特率并打开串口才可以传送数据。Command2为串口打开按钮,Command3和Command4为清空按钮分别清空以前的发送、接收到的数据,Command1是发送信号向外发送信号。VB设计的简单界面如下图:图4.5 VB编写的上位机界面4.4 上位机与protues之间的串口通信 首先在protues仿真中加入九针串口标准件并设置好COM口以及波特率,在对源程序进行改进,初始化确定定时器工作方式,计算定时器初值装载TH1,TL1,并设置串口工作方式。串口程序如下:void main() uart_init(); while(1) if(flag=1) / 如果收到数据 ES=0; /关闭串口中断 flag=0; /标志位清零 SBUF=a; /将收到的数据发送至缓冲区 while(!TI); /等待数据发送结束 TI=0; / 将发送结束标志清零 ES=1; / 使能串口中断 switch(SBUF) case Z: case z:motor1();break; case y: caseY:motor2();break; case S: case s:motor4();break; case X: case x:motor5();break; case 1:motor3();break; case 2:motor6();break; default:break; void serial() interrupt 4 / 串口中断服务函数 a=SBUF; / 读出接收到的数据 RI=0; / 清零接收标志位 flag=1; /标志位 void uart_init() TMOD=0x20; / 设置定时器1 为方式2 TH1=0xfd; /装入初值 TL1=0xfd; TR1=1; /启动定时器1 SM0=0; SM1=1; /设置串口为方式1 REN=1; / 接受使能 EA=1; / 打开总中断开关 ES=1; / 打开串口中断开关 本程序可以实现上位机对下位机的通信并在特殊指令的下达时控制下位机实现电机的转动反转和停止。因为51单片机系列串口通信的数据先存放在缓冲SBUF中,可以通过读指令A=SBUF和写指令SUBF=A来实现单片机的接收与发送信息。整和后的VB加protues仿真如下图:图4.6 VB上位机与Protues仿真调试4.5 上位机与下位机通信本实验还设计有一个红外控制,在单片机电路中留下脚位并接上红外模块及串口插座,通过上位机的控制就可以实现下位机的起转停等功能。下面补上红外控制程序:void wuxianjiema() /红外控制 kk0=P2&0xf0; switch(kk0) case 0x40 :motor5(); break; case 0x10 :motor4(); break; case 0x80 :motor2(); break; case 0x20 :motor1(); break; default : stop(); break; void stop() IN3=1; IN4=1; IN1=1; IN2=1;红外控制实现是一个点动式的控制所以加入stop()函数,确保功能正常实现。5 系统调试5.1 系统的调试方法 系统软件设计的最后一个环节,检验设计预期目标是否实现的关键步骤就是对编写的程序(软件)在硬件电路上面的调试。前面已经知电路由L298N模块、L7805模块、红外模块及52单片机组成,本课题的最终任务是控制电机的运行与做业,因此需要重点调试的就是这个部分。程序有自身的结构,因此实物的调试也要根据程序的结构来安排,采用先整体实验,确定哪些部分的功能不能正常实现,再采取各个模块一级一级逐步检查逐步调试的方法,确认程序逻辑是否能够逐级传递,最后把整个软件系统整合起来,进行整体的调试,采用这种分级调试的方法能够有效的发现程序中可能存在的错误,减少调试所需的时间。5.2 系统调试过程 首先将已经编写好的程序拷入52芯片中,再将芯片安装到硬件电路上面,启动开关看各指示灯是否正常亮起,确保电路的基本可实施性。运用红外遥控开关对系统实行操控,看各电机运动情况,对应的指示灯反应如何。再在计算机上运行上位机控制电机看各功能是否都可以正常实现。如果出现哪一种功能不能正常运行或某个电机运动情况反常则看与之相对应的子程序,确保子程序的编写是正常的。如果子程序有问题则改正,如果子程序没有问题则看主程序是否是调用的问题,定义是否正确,别的子程序对它是否有干扰,有无重复用到相同硬件设备等情况。经过逐一检查并在计算机上仿真无误后再拷入单片机中看是否已经解决了上述的问题。5.3 系统调试结果经过一段时间的调试以后,预期的各个功能已得到基本的实现。下面将结合图片对各个主要功能进行演示说明。通电后电源灯正常亮起,在L7805模块的转换下5V指示灯及9V指示灯均正常亮起。如下图所示:图5.1 上电初始状态由于电机转动从图片上看不明显所以看电机对应的指示灯亮暗来判断电机是否正常转动。由于红外控制是点动式所以每个按钮按下电机就会运行,松开电机就停止运行。如下列图片所示:图5.2 A键控制一灯亮图5.3 C键控制三灯亮上位机的控制由于实物不能很好地表示出来,所以在计算机上通过protues仿真与上位机表示。取个字母的大写或小写开头控制电机的四个转向,用数字1和2表示两个电机的停止信号。如下图:图5.4 左转“z”的控制图5.5 下降“X”的控制 5.4 系统调试分析总结在上位机方面通过串口并不能实现通信,通过检查发现原来是对串口的定义有误,是串口功能不能正常使用;在红外模块测试时遇到了按键不能运行相应的功能,检查程序后,发现是对红外模块与单片机之间的引脚控制算错,经过使用开发板的重新测试计算后改正原来错误的值,使红外控制可以正常使用;电脑与电路的串口通信时,输入相应指令并不能得到相应的功能有时电机还会胡乱转动无法控制,经过细细的检查和上网查找资料发现原来和实物的晶振有关系,再确定了晶振的大小后通过更该程序计算机与实物已经能够很好地实现串口通信了。 电子系统的软硬件联合调试是一个相对复杂的过程,有时候电路的错误并不是很明显,这就需要调试人员耐心细致的排查问题,当然程序对一个系统的影响是十分巨大的,一条语句的错误、一个字符未定义、甚至一个符号的缺失都能够导致程序无法通过编译,就算通过了编译也并不代表你一定能得到你所预期的结果,比如说某个引脚的定义有歧义,计时器工作方式选取不一样造成赋予的初值的偏差,都有可能影响到最终的结果,因此在电子工程设计的过程中一定要秉持科学严谨的态度,才能顺利的完成设计。6 论文总结在这次毕业设计过程中,早在一开始拿到自己课题的时候,就感到有点手足无措、无从下手,但是在老师和同学的帮助之下,我就调整好心态,做好了从头学起的准备,从简单的元器件、经典的实例程序入门逐步掌握了设计的门道。毕业设计是对一个大学生大学四年学习成果的检验,并不是短时间内就能够一挥而就的,我由于自己以前的知识学习的不够透彻、平时的准备不够充分,对设计的认识不够清晰,因此在设计的过程中遇到了很多困难,有些难题还甚至让我的完成进度止步不前,如这次设计的核心关于上位机对单片机的控制的运用就是一个很大的难点,我在这方面也付出了大量的时间和精力,但是也仅仅对上位机有个初步的认识,无法彻底的掌握。在这次设计中我发现在学习设计的过程中软件和硬件越来越难以分割,因此不管以后从事软件还是硬件方面的工作,这些基本的知识都要牢固掌握的。当然在这次设计过程中也有值得肯定的方面,首先面对自己不懂的问题能够耐心的查阅资料、虚心的向老师请教,有一个良好的学习态度;在论文的编写过程中也是仔细认真的独立完成,在充分借鉴别人优秀成果的同时,也重注自己原创性的发挥,学会了编写一篇合格学术论文的基本方法,知道怎么将自己的思路清楚的表达出来,受益匪浅。 展望未来:作为一个工科学精密仪器的学生,面对现在电子技术日新月异的发展,即使在大学期间能够完成毕业设计的要求,但是面对社会的竞争我们取得的这点成就几乎是微不足道的,我们仅仅是满足了毕业的基本要求,而不是成为了一个优秀的毕业生,因此在毕业之后,我们仍然需要不断的加强自己的学习能力,争取掌握各种的技能才能顺应时代进步的潮流,满足社会对我们的要求,学习并不是一朝一夕就能够取得非凡成就的,在今后的道路上我们也应该树立终身学习的观念,保持谦虚谨慎,不骄不躁的风格勇往直前开拓属于自己的新天地、实现自己的中国梦,路漫漫其修远兮,吾将上下而求索!参考文献1 Joseph Yiu.The Definitive Guide to the ARM Cortex-M3 M.Singapore,Elsevier Pte Ltd. 20072 Y.T Kim. A theoretical model for the evaluation of measurement uncertainty of a sound level meter calibration by comparison method in an anechoic room J. Applied Acoustics , 20043 康华光.电子技术基础数字部分(第五版)M

温馨提示

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

评论

0/150

提交评论