基于单片机的自动往返小车毕业论文_第1页
基于单片机的自动往返小车毕业论文_第2页
基于单片机的自动往返小车毕业论文_第3页
基于单片机的自动往返小车毕业论文_第4页
基于单片机的自动往返小车毕业论文_第5页
已阅读5页,还剩57页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

摘要本文介绍的是基于单片机89S52控制的自动往返电动小汽车控制系统的硬件和软件设计。该设计采用89S52单片机为控制核心,对送入的脉冲信号进行检测分析,利用超声波传感器检测道路上的障碍,通过脉宽调制使电机转速能自动调节,从而实现电动小汽车的自动避障,快慢速行驶,以及自动停车的控制要求。由4位数码管进行对里程、时间的显示。整个系统的电路结构简单,可靠性能高。采用的技术主要有:通过编程来控制小车的速度;传感器的有效应用;新型显示芯片的采用。关键词:自动往返电动小汽车;AT89S52单片机;脉宽调制;光电检测器AbstractThispaperisbasedon89S52single-chipmicrocomputercontrolledelectriccarfromtheautomaticcontrolsystemhardwareandsoftwaredesign.Thedesignusing89S52MCUasthecontrolcore,issentintoapulsesignaldetectionandanalysis,theuseofultrasonicsensorsdetectobstaclesontheroad,byapulsewidthmodulatedsothatthemotorspeedcanbeadjustedautomatically,soastorealizetheelectriccarsautomaticobstacleavoidance,lowspeed,aswellastheautomaticparkingcontrolrequirements.By4digitaltubeonthemileage,timedisplay.Thesystemhastheadvantagesofsimplecircuitstructure,reliableperformanceandhigh.Usingthetechnologyare:programmedtocontrolthecarspeed;theeffectiveapplicationofthesensor;theadoptionofthenewdisplaychip.Keywords:automaticmotor-drivencar;AT89S52MCU;pulsewidthmodulation;photoelectricdetector目录第1章绪论 11.1设计背景和研究意义 11.2工作原理和技术要求 1第2章方案设计与论证 22.1单片机的选择 22.2电动小车 32.2.1转向和动力分开的电动小车 32.2.2转向和动力结合的电动小车 32.3控制系统方案设计 32.3.1数字电路控制 32.3.289S52系统控制 32.4调速系统方案设计 42.4.1电压调速 42.4.2脉宽调速 42.5制动方案 52.5.1机械刹车 52.5.2电机反电压刹车 52.6电机驱动模块 52.6.1L298N驱动步进电机 52.6.2功率管缓冲电路驱动电机 52.7信号检测模块 62.7.1光敏探测器 62.7.2光电传感器 62.8行程计算 72.9系统原理 7第3章硬件设计 83.1电动驱动模块 83.2信号检测模块 83.3单片机控制处理模块 83.4显示模块 93.5最小应用系统设计 93.5.1时钟电路 93.5.2复位电路 10第4章软件设计 114.1主程序设计 114.2显示子程序设计 124.3避障子程序设计 124.4可编程逻辑器件 12附录 15参考文献 22致谢 23第1章绪论1.1设计背景和研究意义智能电动小车是一种无人操纵的自动寻迹往返小车。随着全球经济的飞速发展,现代化生产观念日益受到企业的重视,这也为智能小车产业的发展提供了契机。本设计就是在这样的背景下提出的。设计一款智能电动小车,智能电动小车应该具有自动寻找轨迹的功能。AT89S52是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表,其最主要的技术特点是向外部接口电路扩展,以完善控制功能。外部可接其他功能单元如A/D﹑PWM﹑PCA﹑WDT﹑计数器的捕获/比较逻辑等。在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式[1]。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。本设计采用的AT89S52是一种低功耗、高性能CMOS8位微控制器,可用于很多小型设备中。该设计具有实际意义,稍作修改就可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面可用超声波传感器进行检测。所以本设计与实际相结合,现实意义很强。1.2工作原理和技术要求本设计以AT89S52为控制核心,利用超声波传感器进行信号和障碍物的实时检测;信号经过外围电路处理送至单片机,经过单片机的运算和处理来控制电机的转速,进而实现小车的自动加速、限速、减速、前进、后退、左右转,显示行驶速度、路程、时间等功能,实现对电动小车的运动状态进行实时控制。第2章方案设计与论证根据题目的要求,最终确定了如下的方案:以AT89S52单片机为控制核心,附以外围电路,利用超声波传感器进行信号和障碍物的检测,从而实现对路面特殊轨迹的实时测量,然后将测量数据传送至主控制器进行处理,随后由主控制器根据所接收到的数据对电动车进行控制,实现按照路径自动行驶。这种方案如图1-1能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。电动小车电动小车控制器传感器路面数据控制信号图1-1自动寻迹小车原理图2.1单片机的选择20世纪80年代以来,单片机的发展非常迅速,就通用单片机而言,世界上一些著名的计算机厂家已投放市场的产品就有50多个系列,数百个品种。尽管单片机的品种很多,但是在我国使用比较广泛的还是Intel公司的MCS—51系列单片机和美国Atmel公司的单片机。CS—51系列单片机包括三个基本型8031、8051、8751。8031片内无程序存储器,需外扩EPROM芯片,比较麻烦,不予采用;8051适合与应用在程序已定,且批量大的单片机产品中。也不予采用;8751是在8031基础上,增加了4K字节的EPROM,它构成了一个程序小于4KB的小系统。用户可以将程序固化在EPROM中,可以反复修改程序。但其价格相对8031较贵。8031外扩一片4KBEPROM的就相当与8751,它的最大优点是价格低。随着大规模集成电路技术的不断发展,能装入片内的外围接口电路也可以是大规模的,也不予采用[1]。AT89S52Atmel公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制,与工业 80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。因此采用AT89S52单片机[13]。2.2电动小车2.2.1转向和动力分开的电动小车转向和动力分开的电动小车是将轮胎分为两组,一组与电动机相连输出动力控制小车的行驶;另外一组控制小车的方向。此种方案只需一个电动机,一个转向器。由主控制器分别进行控制,控制程序较多。2.2.2转向和动力结合的电动小车转向和动力结合的电动小车是使用两个独立的电动机各自带动一个轮胎位于两侧,通过两个轮胎速度的改变实现小车的转向。控制所用程序较少,控制器控制起来简单(这种转向方式类似于坦克的转向方式)。为了小车的平衡再装上万向轮。综合以上两种方案的比较,选择转向和动力结合的电动小车。2.3控制系统方案设计2.3.1数字电路控制此种方案采用数字电路的构成计数器、分频器和信号振荡器,并采用硬件译码显示,可以实现控制方案。2.3.289S52系统控制以AT89S52系统为控制核心,完成对电动机驱动、转速和前进或后退的控制,以及往返时间和行驶距离的显示。此系统的硬件和软件都比较容易实现,且满足精度要求,性价比较高。AT89S52具有以下特点:AT98S52是一款低功耗,高性能的8位单片机,片内含有8KB的Flash片内程序存储器,256Bytes的RAM,32个外部双向输入/输出(I/O)口,8个中断源,一个6向量2级中断结构等[16]。比较以上两种控制方案,方案一程序实现简单,控制性能较差。方案二是以AT89S52单片机为核心的系统可以实现显示,控制速度,向前或向后,保持与计算机通讯功能大大提高了智能化控制速度,精度和系统的控制精度结果都能很好的满足基本要求,而且该系统还可以扩展。综合分析,选择第二种方案。2.4调速系统方案设计2.4.1电压调速由单片机发出调速数码指令,利用数/模转换电路将指令转换成电压值,以此达到控制速度的目的。这种方案需专门的数模转换电路,且控制不精确,在电压比较低的时候,启动困难,容易停车(此时通过电动机的电流很大,容易烧毁)。2.4.2脉宽调速20世纪70年代以前,以晶闸管为基础组成的相控整流装置是运动控制系统直流传动中主要使用的变流装置,但由于晶闸管属于半控型器件,使其构成的V-M系统的性能受到一定的限制;20世纪70年代以后,随着电力电子技术的发展,出现了全控型器件--门极可关断晶闸管(GTO)、电力场效应晶体管(Power-MOSFET)、绝缘栅极双极晶体管(IGBT);直流电机控制领域向高精度方向发展;PWM驱动装置在中小功率场合,有着晶闸管驱动装置无法比拟的优点,例如:调速范围宽、快速性好、电流波形系数好、功率因数好等[17]。比较以上两种调速方案,本系统采用方案二,脉宽调速方案。由单片机直接产生脉冲信号,通过桥式双电路驱动电动机,实现调速。此方案电路简单明了,控制精确,改变程序即可改变速度。2.5制动方案2.5.1机械刹车机械刹车—没有任何的助力装置,主要靠施加再踏板上的力量的大小来取决于制动力的大小,制动效果相当的差,一般用于简单车辆且负载不大的情况下使用。2.5.2电机反电压刹车此种刹车方案是在需要刹车的时候给电机加一个一定宽度的反向电压,迫使电动机快速停止,这种方法称为“软刹车”。比较以上两种制动方案,方案一虽然可行,但机械结构制作困难,且易出故障。方案二,不需要特别加机构,制作容易,可靠性好,缺点是需多次调试,控制反电压的宽度。综合比较,本系统采用方案二,软刹车。2.6电机驱动模块2.6.1L298N驱动步进电机L298N是一个恒压恒流桥式2A驱动芯片,内部包含4通道逻辑驱动电路,可以方便的驱动两个直流电机,或一个两相步进电机,相应频率较高,稳定性较好。单本系统两个电机时序不同,会出现两个不同延时程序的情况,系统处理负荷大,影响电机工作,同时价格相对较高[18]。2.6.2功率管缓冲电路驱动电机用功率管(如TP132,8A,70W)构成驱动电路来驱动电机。采用功率管缓冲电路来驱动电机降低了电路的热损耗,提高了电机的功率和可靠性。而且结构简单,价格低廉,可以完成控制功能[18]。综合以上两种驱动方案分析,选择方案二。2.7信号检测模块2.7.1光敏探测器光敏电阻探测器在光照下改变自身的电阻率,光照愈强,其自身的电阻愈小,这种方案原理简单,使用方便,价格低廉,但受光照强度影响很大,可靠性不高。2.7.2光电传感器作为光电检测系统中实现光电转换关键元件的光电传感器,是把光信号转变成为电信号的器件。光电式传感器是以光电器件作为转换元件的传感器。它可用于检测直接引起光量变化的非电量,如光强、光\o"照度"照度等;也可用来检测能转换成光量变化的其他非电量,如位移、振动、速度等。光电式传感器具有非接触、响应快、性能可靠等特点,因此在工业自动化装置和机器人中获得广泛应用[2]。光电传感器的优点:检测距离长;对检测物体的限制少;响应时间短;分辨率高;可实现非接触的检测;可实现颜色判别;便于调整等[11]。综上分析,选择光电传感器方案。红外光线照射到路面并反射,由于黑带和白纸的系数不一样,可根据接收到的红外线的强弱判断是否到达或者偏离黑带。通过采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管以一定的角度贴近跑道,这样可以消除外界光线的干扰,信号检测如图2-3。图2-3信号检测2.8行程计算本设计采用红外检测,因为它具有定位精度高、可靠性强等优点,故采用红外光电码盘测速方案。具体电路图如图2-3所示。安装在电动机轴上的光栅会随着电动机的转动而转动,红外发光二极管和红外三极管分装在光栅两侧,当红外发光二极管点亮时,三极管就会接收到二极管的红外信号。这样当电机转动起来时,光栅随着电机转动,三极管就会不断接收到红外信号。然后将这些信号传送至单片机,经过计数器的计数就可计算出行车距离[19-20]。通过车轮转一圈,记录一个脉冲,储存在计数器中,进行二进制乘法及BCD码转换以获得准确里程。则:里程=脉冲数*车轮周长。图2-4行程检测2.9系统原理最初启动时,由按键启动小车,复位。将小车放置在黑线跑道上,由外围电路的超声波传感器和红外光电传感器进行检测,检测小车是否在黑道轨道上行驶,是否偏离轨道,然后将检测到的数据送至单片机计数显示,单片机经过数据处理后,经过脉宽调速技术,控制小车的实时运动,由数码管显示小车的行驶路程和时间,这样就提高了小车的总体性能。如下图2-4。左电动机组左电动机组右电动机组P0.0P3.5P0.1P3.6P0.2P3.7P0.3左下方传感器正前方传感器右下方传感器电动小车模块控制器模块车头传感器模块图2-4系统原理图第3章硬件设计系统硬件以AT89S52为核心,包括4个模块电路:电动驱动模块、信号检测模块、单片机控制处理模块和显示模块。3.1电动驱动模块电动驱动采用的是高低电平进行信号控制。当00输入时是截止状态,当01输入时,电机正转,当10输入时,电机反转,但不能高电平同时输入(其中1代表高电平,0代表低电平)。利用改变脉冲宽度控制电机的转速,使具有不同的转速,分高速和低速两种状态。3.2信号检测模块信号检测模块主要是由红外发光二极管、超声波传感器、红外三极管和光敏二极管构成。当小车在黑线上行驶时输出高电平,在白纸上时输出低电平。3.3单片机控制处理模块用光电传感器检测不同的信号,并经过单片机对信号进行处理,配合脉宽调速程序,使其控制电机的正反转,实现加速减速和转向。通过单片机内部定数器\计数器进行定时、计数,再用单片机串行输入\输出口进行显示控制。这种控制系统电路成熟、工作稳定、容易实现控制。3.4显示模块此设计的显示模块主要是往返时间和行驶里程的显示。里程显示和往返时间的显示利用的是4位数码管的共用,采用数码管动态扫描的方式。行驶里程显示用霍尔集成块作检测头,当磁钢经过时输出一个低电平0。3.5最小应用系统设计一般最小系统都具有载入程序,在线调试,复位,数据传输和数字、模拟信号之间的相互转换等功能。最小系统硬件一般包括下载口,扩展端口,串口和相关功能的芯片组成。AT89S52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。在用AT89S52单片机构成最小应用系统时,将时钟电路和复位电路接在单片机接上构成最小应用系统。以实现单片机片上硬件功能,包括A/D,对LED的控制和与计算机串口进行通信等功能,并且方便今后对该单片机系统的直接使用和扩展。3.5.1时钟电路时钟电路可以简单定义如下:1.就是产生象时钟一样准确的振荡电路。2.任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路一般由晶体震荡器、晶震控制芯片和电容组成。AT89S52片内设有一个由反相放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式时钟电路是在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体可以在1.2MHz-12MHz之间选择,电容值在50PF-30PF之间选择,电容的大小可以起到频率微调作用。如图3-1。外部时钟电路是XTAL1接地,XTAL2接外部振荡器。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容[10]。图3-1内部时钟电路图3.5.2复位电路AT89S52的复位是由外部的复位电路来实现的。AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。复位电路通常采用上电自动复位和手动复位两种方式。在RESET输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期(24个振荡周期)的高电平。CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RST端电平变低。复位期间不产生ALE及信号。内部复位操作使堆栈指示器SP为07H,各端口都为1,特殊功能寄存器都复位为0,但不影响RAM的状态。当RST引脚返回低电平以后,CPU从0地址开始执行程序。对于加电复位电路,加电瞬间,RST端的电位与Vcc相同,随着RC电路充电电流的减小,RST端的电位逐渐下降。只要RST端保持10ms以上的高电平就能使单片机有效地复位。复位电路中的RC参数通常由实验调整。当振荡频率选用6MHz,使CR选22uF,RR选1k便能可靠地实现加电复位。若采用RC电路接施密特电路的输入端,施密特电路输出端接单片机和外围电路的复位端,即可使系统可靠地同步复位[10]。第4章软件设计系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是为完成某一功能所需的一段程序或子程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的特点是:模块相对独立,功能单一,编写相对简单,可以独立编写调试;可集体开发,缩短开发周期。不同的模块可以由不同的人员开发,最终能够合成完整的程序;开发出的模块,可在不同的应用程序中多次使用,减少重复劳动,提高开发效率;测试、更新以模块为单位进行而不会影响其他模块。本系统软件采用模块化程序设计,由主程序、中断子程序、显示子程序等构成。4.1主程序设计主程序清单见附表录1。软件流程如图3-1流程图所示:图3-1流程图4.2显示子程序设计程序清单见附录1。.4.3避障子程序设计程序清单见附录1。4.4可编程逻辑器件可编程逻辑器件GAL16V8是LATTICE公司研制的一种电可擦除的可重复编程的低密度PLD器件。GAL16V8以最大3.5ns的传输延迟时间,结合高性能的CMOS工艺与电可擦(E2)悬浮栅工艺可为PLD市场提供最高速度的性能。高速擦写时间(<100ns)允许快速和有效的重复编程。依靠输出逻辑宏单元(OLMC)允许用户来构建,这种通用的结构提供了最大的设计灵活性。作为GAL16V8的许多可能结构形式中最重要的一个子集,PAL结构被列在宏单元描述部分的表里面。GAL16V8借助于全部功能/熔丝图/参数的兼容性能够仿真任何一种PAL结构。因此,实现了所有的GAL产品100%的现场可编程性和可操作性。此外,规定100次的擦写循环和超过20年的数据保持能力[5-9]。GAL16V8技术特性•高性能E2CMOS®工艺—最大传输延迟3.5ns—Fmax=250MHz—时钟输入到数据输出最大3.0ns—UltraMOS®先进的CMOS工艺•功耗比双极型减少50%到75%—低功率器件上的Icc典型值为75mA—1/4功率器件上的Icc典型值为45mA•对所有引脚有效上拉•E2CEEL工艺—可重组合逻辑电路—可重编程单元—100%测试/100%合格率—高速电可擦(<100ms)—数据保留20年•8个输出逻辑宏单元—复杂逻辑设计的最大灵活性—可编程输出极性—具有全部功能、熔丝图、参数兼容性的仿真20引线的PAL®设备•所有寄存器的预载和开电源复位—100%的功能可测性•应用包括:—DMA控制—状态机控制—高速图形处理—标准逻辑速度提升•用于识别的电子签名[11-12]附录程序清单#include<at89s52.h>//包含52相关的头文件typedefunsignedcharuchar;//重定义char数据类型typedefunsignedintuint;//重定义int数据类型#defineShowPort//定义数码管显示端口ucharcodeLedShowData[]={0x03,0x9F,0x25,0x0D,0x99,//定义数码管显示数据0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9staticunsignedintRecvData;//定义接收红外数据变量staticunsignedcharCountData;//定义红外个数计数变量staticunsignedcharAddData;//定义自增变量staticunsignedintLedFlash;//定义闪动频率计数变量unsignedcharHeardData;//定义接收到数据的高位变量bitRunFlag=0;//定义运行标志位bitEnableLight=0;//定义指示灯使能位/***********完成基本数据变量定义**************/sbitS1State=P1^0;//定义S1状态标志位sbitS2State=P1^1;//定义S2状态标志位sbitB1State=P1^2;//定义B1状态标志位sbitIRState=P//定义IR状态标志位sbitRunStopState=P1^4;//定义运行停止标志位sbitFontIRState=P1^5;//定义FontIR状态标志位sbitLeftIRState=P1^6;//定义LeftIR状态标志位sbitRightIRState=P1^7;//定义RightIRState状态标志位/*************完成状态指示灯定义*************/sbitS1=P3^2;//定义S1按键端口sbitS2=P3^4;//定义S2按键端口/*************完成按键端口的定义*************/sbitLeftLed=P2^0;//定义前方左侧指示灯端口sbitRightLed=P0^7;//定义前方右侧指示灯端口/*************完成前方指示灯端口定义*********/sbitLeftIR=P3^5;//定义前方左侧红外探头sbitRightIR=P3^6;//定义前主右侧红外探头sbitFontIR=P3^7;//定义正前方红外探头/*************完成红外探头端口定义***********/sbitM1A=P0^0;//定义电机1正向端口sbitM1B=P0^1;//定义电机1反向端口sbitM2A=P0^2;//定义电机2正向端口sbitM2B=P0^3;//定义电机2反向端口/*************完成电机端口定义***************/sbitB1=P0^4;//定义话筒传感器端口sbitRL1=P0^5;//定义光敏电阻端口sbitSB1=P0^6;//定义蜂鸣端口/*********完成话筒,光敏电阻,蜂鸣器.端口定义**/sbitIR1=P3^3;//定义红外接收端口/*********完成红外接收端口的定义*************/voidDelay()//定义延时子程序{uintDelayTime=30000;//定义延时时间变量while(DelayTime--);//开始进行延时循环return;//子程序返回}voidControlCar(ucharCarType)//定义小车控制子程序{M1A=0;//将电机1正向电平置低M1B=0;//将电机1反向电平置低M2A=0;//将电机2正向电平置低M2B=0;//将电机2反向电平置低LeftLed=1;//关闭前方左侧指示灯RightLed=1;//关闭前方右侧指示灯Delay();//将此状态延时一段时间switch(CarType)//判断小车控制指令类型{case1://前进//判断是否是前进{M1A=1;//将电机1正向端口置高M2A=1;//将电机2正向端口置高ShowPort=LedShowData[1];//数码管显示前进状态break;//退出判断}case2://后退//判断是否是后退{M1B=1;//将电机1反向端口置高M2B=1;//将电机2反向端口置高ShowPort=LedShowData[2];//数码管显示后退状态RightLed=0;//将前方右侧指示灯置低(亮)LeftLed=0;//将前方左侧指示灯置低(亮)break;//退出判断}case3://左转//判断是否是左转{M1B=1;//将电机1反向端口置高M2A=1;//将电机2正向端口置高ShowPort=LedShowData[3];//数码管显示左转状态LeftLed=0;//将前方左侧指示灯置低(亮)break;//退出判断}case4://右转//判断是否是右转{M1A=1;//将电机1正向端口置高M2B=1;//将电机2反向端口置高ShowPort=LedShowData[4];//数码管显示右转状态RightLed=0;//将前方右侧指示灯置低(亮)break;//退出判断}default://默认情况下的判断{break;//直接退出判断}}}voidTimer0_IR1()interrupt1using3//定义红外定时器子程序{TH0=0xFF;//向定时器定时间寄存器填入高八位值TL0=0x19;//向定时器定时间寄存器填入低八位值AddData++;//自增变量加1}voidInt1_IR1()interrupt2//定义红外接收中断子程序{TR1=0;//将定时/计数器1关闭IRState=!IRState;//将红外接收指示灯状态取反if(4==AddData)//0//判断接收到的数据是0{RecvData=RecvData|0;//判断到0就将当前位写0RecvData=RecvData<<1;//将当前位向左移动1位}elseif(8==AddData)//1//判断接收到的数据是1{RecvData=RecvData|1;//将当前位写1RecvData=RecvData<<1;//将当前位向左移动1位}CountData++;//将红外接收位计数器加1if(CountData==8)//判断是否接收到8位数据{HeardData=RecvData;//是8位数据时,则将数据暂存到高位变量中}elseif(CountData==16)//判断是否接收到16位数据{ET0=0;//关闭红外定时器0EX1=0;//关闭红外外部中断1TR1=1;//打开定时/计数器1AddData=0;//定时时间间隔变量清零if(HeardData==226||HeardData==112)//判断用户码是否正确{HeardData=RecvData;//取出接收到的低八位数据switch(HeardData)//判断低八位数据的值下列那一位{case32://电源//说明按下了电源键 { ControlCar(8);//将小车停止 RunFlag==1;//将运行标志位置1 break;//返回 }case0://1//说明按下数字1键 {ShowPort=LedShowData[1];//数码管显示数字1 ControlCar(1);//将小车置于前进状态 break;//返回 } case8://2//说明按下了数字2键 {ShowPort=LedShowData[2];//数码管显示数字2 ControlCar(2);//将小车置于后退状态 break;//返回 }case4://3//说明按下了数字3键 {ShowPort=LedShowData[3];//数码管显示数字3 ControlCar(3);//将小车置于左转状态 break;//返回 } case12://4//说明按下了数字4键 {ShowPort=LedShowData[4];//数码管显示数字4 ControlCar(4);//将小车置于右转状态 break;//返回 } case2://5//说明按下了数字5键 {ShowPort=LedShowData[5];//数码管显示数字5 break;//返回 } case10://6//说明按下了数字6键 {ShowPort=LedShowData[6];//数码管显示数字6 break;//返回 }case6://7//说明按下了数字7键{ShowPort=LedShowData[7];//数码管显示数字7break;//返回}case14://8//说明按下了数字8键{ShowPort=LedShowData[8];//数码管显示数字8break;//返回}case64://9//说明按下了数字9键{ShowPort=LedShowData[9];//数码管显示数字9break;//返回}case72://0/30//说明按下0/30键{ShowPort=LedShowData[0];//数码管显示数字0break;//返回}RecvData=0;//将接收到的数据清零CountData=0;//将接收计数器清零HeardData=0;//将接收高低数据变量清零return;//返回}AddData=0;//将定时器计数器清零ET0=1;//打开定时器中断}voidComBreak()interrupt4//定义串口通信子程序{unsignedcharRecvData;//定义串口数据接收变量if(RI==1)//判断是否接收数据{RecvData=SBUF;//将接收到的数据放入暂时变量if(RecvData<10)//判断接收到的数据是否小于10{ShowPort=LedShowData[RecvData];//将接收到的数据通过数码管显示出来ControlCar(RecvData);//将串口数据置于小于状态}SBUF=RecvData;//向电脑返回当前接收到的数据RI=0;//清除接收中断标志位}if(TI==1)//判断是否是发送中断{TI=0;//清除发送中断标志位}}voidmain(void)//主程序入口{bitExeFlag=0;//定义可执行标志位变量RecvData=0;//将接收变量数值初始化CountData=0;//将计数器变量数值初始化AddData=0;//将定时器计数器初始化HeardData=0;//将高低计数器初始化LedFlash=1000;//对闪灯数据进行初始化TMOD=0x01;//选择定时器0为两个16位定时器TH0=0xFF;//对定时器进行计数值进行初始化TL0=0x19;//同上,时间大约为25uSTR0=1;//同意开始定时器0EX1=1;//同意开启外部中断1IT1=1;//设定外部中断1为低边缘触发类型ET0=0;SCON=80;//设置串口模式为8位数据TMOD=33;//设置定时/计数器模式TH1=0xFD;//给定时器1高八位初始化初值TL1=0xFD;//给定时器1低八位初始化初值TR1=1;//开启定时器1ES=1;//开启串口通信功能REN=1;//开启接收中断标志EA=1;//总中断开启ControlCar(1);//将小车置于前进状态ShowPort=LedShowData[0];//数码管显示数字0while(1)//程序主循环{while(LedFlash--)//闪灯总延时{if(RL1==0)//判断光敏电阻的状态 {RightLed=1;//将前方右侧指示灯点亮 LeftLed=1;//将前方左侧指示灯点亮 } else//在光敏电阻为不通的状态下 { RightLed=0;//将前方右侧指示灯熄灭 LeftLed=0;//将前方左侧指示灯熄灭 } if(IR1==0)//判断延时期间是否有红外信号输入{ExeFlag=1;//将可执行标志位置1} if(S1==0)//判断是否有S1按下 { ControlCar(8);//将小车置于停止状态 RunFlag==1;//改变小车运行状态标志位 S1State=!S1State;//改变S1按键标志位 gotoNextRun;//跳转到NextRun标签 } if(S2==0)//判断是否有S2按下 { ControlCar(1);//将小车置于前进状态 RunFlag==0;//改变小车运行状态标志位 S2State=!S2State;//改变S2按键标志位 gotoNextRun;//跳转到NextRun标签 } FontIRState=FontIR;//前方红外指示灯显示正前方红外探头状态 LeftIRState=LeftIR;//左侧红外指示灯显示前方左侧红外探头状态 RightIRState=RightIR;//右侧红外指示灯显示前主右侧红外探头状态if(FontIR==0||LeftIR==1||RightIR==1)//判断正前方,前左侧,前右侧红外探头状态{ControlCar(2);//改变小车状态为后退Delay();//调用延时子程序 SB1=!SB1;//将蜂鸣器取反 ControlCar(1);//改变小车为前进状态 SB1=1;//关闭蜂鸣器声音}if(B1==0)//判断是否有话筒信号输入{if(RunFlag==0)//判断小车当前的运行标志位{ControlCar(8);//将小车置于停止状态 RunFlag=1;//改变小车运行标志位 } else {ControlCar(1);//将小车置于前进状态 RunFlag=0;//改变小车运行标志位 } B1State=!B1State;//将话筒信号指示灯取反}}NextRun://跳转标签if(RunFlag==0)//判断运行标志位{RunStopState=!RunStopState;//改变小车运行停止状态标志位}else{RunStopState=1;//将运行停止状态标志位置1}LedFlash=1000;//运行闪动时间重设定if(ExeFlag==0)//判断可执行标志位{EX1=1;//开启外部中断1TR1=1;//开启定时/计数器1}ExeFlag=0;//可执行标志位置0}}参考文献何立民.MCS-51单片机应用系统设计[M].北京航空航天大学出版社方佩敏.新编传感器原理应用与电路详解[M].电子工业出版社1998周秉功.继电器选型手册[M].机械工业出版社,1998[4]李仁.电器控制[M].机械工业出版社,2002[5]常斗南主编.可编程序控制器原理•应用•实验[M].北京:机械工业出版社,1998[6]戴明宏主编.电器控制与PLC应用.[M].北京:北京航空航天大学出版社,2007[7]黄净主编.电气控制与可编程控制器[M].北京:机械工业出版社,2004[8]李向东主编.电器控制与PLC[M].北京:机械工业出版社,2007[9]蔡美琴.MCS-51系列单片机系统设计及其应用[M].高等教育出版社,2010.4[10]刘灿军.实用传感器[M].国防工业出版社,2004.14-15[11]张万忠.《可编程控制器入门与应用实例》北京,中国电力出版社,2004[12]常斗南主编.可编程序控制器原理*应用*实验.北京,机械工业出版社,2005[13]王质朴,吕运朋.MCS—51单片机原理接口及应用[M].北京理工大学出版社,2009.221-222[14]李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56~64[15]何希才,新型实用电子电路400例,电子工业出版社,2000年,60~65[16]赵负图,传感器集成电路手册,第一版,化学工业出版社,2004,590~591[17]陈伯时,电力拖动自动控制系统,第二版,北京:机械工业出版社,2000年6月,127~130[18]陈清泉,现代电动车、电机驱动及电力电子[M].机械工业出版社,2005[19]ClarkDW.Thememorysystemofahighperformancepersonalcomputer.XeoxPaloAltoResearchCenter,[20]MC88100RSICMicroprocessorUser’sManual(Secondedition).EnglewoodCliffs:PrenticeHall,1990致谢四年的大学生活已接近尾声,历时三个多月的毕业设计也即将结束。在此我衷心对各位机电工程学院、其他教过我的老师、同学对我的指导和帮助表示感谢。在本次毕业设计过程中通过参考、查阅大量有关单片机方面的参考资料,请教各位老师有关单片机控制系统设计制造方面的有关问题,特别是单片机控制系统设计在实际中可能遇到的具体问题,使我在这短短的时间里,对单片机这个领域的认识有了一个很大的提高。同时也使我对单片机自动控制系统设计设计的过程有了深刻的理解。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。再次感谢学院领导、缑亚楠老师的指导以及同学对我的帮助。附件毕业学位论文结构与格式规范毕业学位论文是一种严肃的科学研究文体,其逻辑结构与写作格式必须要符合学术的规范化要求。毕业学位论文必须是作者在充分占有第一手研究资料的基础上的实证的原创性研究,综述和思考感想之类不能作为毕业学位论文。学士毕业论文字数要求10000字以上,硕士毕业论文字数要求30000字以上。一、论文的基本结构毕业论文通常由论文标题、作者署名、原创性声明、摘要、关键词、正文(包括引言、本论、结论)、鸣谢、参考文献、注释、附录等部分构成。。(一)标题标题即文章的题目,标题通常概括性地表达了文章的主题。标题的主题要明确、严谨、简练,最多不超过20个字。一篇论文只能有一个主题,一般不设副标题。(二)作者单位和署名作者是论文的创作者,是著作权和文责自负的标志。毕业论文要求一人一题。导师指导的论文应同时标明由谁指导。单位名称要署全称(含大学名称、学院名称、专业名称),不能省写。(三)论文内容目录目录是为了让读者在阅读论文前,对整个文章的内容与结构有一个大概的了解和初步的印象。在封面后必须要有目录并独占一页。硕士论文和博士论文的目录要列出章、节以及一、二级观点,本科毕业论文的目录不用章节标注,只用中文序号标注到二级观点即可,目录页中要标明相应的页码。(四)摘要摘要就是对论文内容的概括性陈述,一般包括研究课题和撰写论文的目的、研究对象与方法、研究结果和结论等。本科论文摘要一般在200-300字,硕士论文摘要字数为800-1000字。英文摘要可以是中文摘要的翻译,也可以是意译。(五)关键词关键词又叫主题词,是从论文中选出的最能代表论文中心内容特征的名词和术语。关键词一般为3-5个,每词间要用空格间隔开。(六)引言写引言,目的在于引出论题。引言主要说明本课题的缘由、任务及预期达到的目标。有时,作者还可以把国内外同行对本课题研究情况略作回顾和展望,指出存在的问题,从而说明本课题研究的必要性和创新性。引言应写得言简意赅,一般在200-500字内。(七)研究对象与方法介绍纳入本研究对象或数据的来源、选择标准、原因、数量、分布;介绍研究的方法有哪些?自己作了何种改进?常见的方法有问卷调查、现场访谈、文献研究、实验研究、数学模型等。如有计量研究就应介绍所使用的统计学方法和软件。(八)研究的结果习惯上用表格将研究的结果表达出来,研究结果的表达一般与调查研究或实验研究的要点相对应起来,分点或分图表进行表述。在这一部分作者只需要客观地表达研究数据和结果,无需加以分析和评价。(九)分析与讨论讨论主要是针对研究结果所进行的充分的、全面的分析和有说服力的论述,提出自己有创见性的见解。一般包括对研究结果原因的解释、与国内外同类研究结果的比较、有什么新的发现等。(十)结论结论又叫结束语,是作者对论文全文的论点作总结性的说明。一般包括本研究得出的主要观点、强调自己的新发现和重要论点、及有待进一步研究的内容或方法改进等。(十一)建议作者可就研究现象的某些问题和需要改进的方面,提出如何改进的措施和思路。这一部分并非每篇论文都需要。(十二)鸣谢鸣谢主要是作者对在课题研究和写作过程中给予自己具体帮助的导师和其他老师、同学、同事等公开表示谢意的文字。致谢词可以短至一句话,长可以是一篇小的短文。(十三)参考文献参考文献应是正式出版或公开发表过的著作或文章。参考文献的排序要与论文中被引用的顺序相对应,并且论文中应该标明序号。参考文献的内容应按作者、论文或著作的题目、出版社或杂志社的城市名、出版社或杂志社的全称、出版日期、卷、期数、页码、依序排列。硕士生毕业论文参考文献不少于30篇(并且要求有5篇以上的外文参考文献),本科生不少于15篇。建议参考核心期刊。参考文献一般置于文章的结尾。文献期刊的格式为:[序号]、作者名、文章题目、期刊名、年份、卷号、期数、页码;如:[1]李胡希.区域公费医疗费用实行目标综合控制设想.卫生软件科学杂志,1999,25(7):1-3文献是图书时,其格式为:[序号]、作者、书名、出版单位、年份、版次、页码。如:[1]劳伦斯·巴顿.组织危机管理.北京:清华大学出版社,2002,57-59文献是未发表的科研成果时,其格式为:[序号]、作者、项目名、授奖、鉴定单位、时间。当引文作者在3人以内(含3个)均要列出,作者姓名之间用“,”隔开;3人以上的,则只需列出前3位作者姓名,并在最后一位作者姓名后加“等”。英文格式:作者,作者:文章题目名.期刊名.年份,期数:页码。如PolskyD,GlickHA,WilikeR,SchulmanK:Confidenceintervalsforcost-effectivenessratio:Acomparisonoffourmethods.HealthEconomics1997,6:243-252(十四)注释注释,就是作者对毕业论文中的有些字、词、句加以必要的解释和注明来源出处。可分夹注、脚注和尾注。它不同于参考文献,是否有注释根据实际需要而定。(十五)附录附录,就是指论文中有些内容与正文关系密切,而这些内容又具有相对独立性、不宜在正文中出现的内容。例如调查表、问卷、公式、图表等。是否有附录要根据需要而定。二、论文的基本格式论文结构排序:封面(含题目、作者单位、署名、学号与年级)见附录1目录(只列一、(一)二级目录)中英文摘要(含英文摘要,先中后英)关键词(中英文关键词应一一对应)引言(研究背景与目的)研究对象与方法研究结果讨论与结论或主要观点参考文献或注释10、鸣谢11、附录三、论文排版、装订要求1、论文要用规范简体汉字打印,不可用繁体和艺术体。论文题目一般用三号宋体加粗,居中;外文用小二号TimeNewRoman,加粗。中文摘要内容用五号楷体(其中“论文摘要”四字用五号黑体并加方括号),英文摘要用小四号TimeNewRoman。正文内各主要部分的大标题用四号黑体,正文内文用小四号宋体。外文论文用小四号TimeNewRoman。关键词部分用小四号楷体加粗;注释、参考文献、附录均用小四号宋体(其中具有标题性质的“注释”、“参考文献”左边不空格,采用同号黑体加冒号)。2、论文必须用阿拉伯数字连续编排页码,页码居中显示。3、文章标题层次采用规范编号。从大到小顺序为:一(一)1(1)①。“一”后面要加顿号,“(一)”后面则不要加任何符号,“1”后面加圆点。在“一”、“(一)”、“14、学位论文定稿后用A4纸双面打印,上、下、左、右边距为2.5cm,页眉页脚1厘米,行距固定值20磅。学位论文一律在左侧装订,要求装订、剪切整齐。5、论文一、二、三稿全部要交打印稿(双面打印),评审与写作期间不受理电子版。附录1论文封面格式**大学本科生毕业论文题目:***********企业的营销策略分析学院:经济与管理学院专业:公共事业管理年级:2003级学号:20030910**姓名:********成绩:(封面不要出现页码)附录2**大学学位论文原创性声明本人郑重声明:所呈交的学术论文,是个人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人或集体,均已在文中以明确方式标明。本人完全意识到此声明的法律后果由本人承担。学位论文作者签名:签字日期:学位论文版权使用授权书本学位论文作者完全了解**大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅或借阅。本人授权**大学可以将学术论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后适用于本授权书)学位论文作者签名:导师签名:签字日期:签字日期:(页码居中,原创声明为第一页)附录3论文目录排版示范目录(三号宋体加黑,居中)中文摘要……………………3Abstract……………………3一、*******************的现状(勿出现句号等符号,以下同)………3(一)***********分析……………………3(二)***************的现今状况………3(三)***************发展趋势分析……5二、*********************详细市场分析………………6(一)***************SWOT分析………6(二)*********************…………7三、******************策略………………10(一)**********策略……………………10(二)**********策略……………………10(三)**********策略……………………10四、*********建议………………11(一)*************………11(二)**

温馨提示

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

最新文档

评论

0/150

提交评论