基于单片机的自动寻迹小车-毕业设计-好_第1页
基于单片机的自动寻迹小车-毕业设计-好_第2页
基于单片机的自动寻迹小车-毕业设计-好_第3页
基于单片机的自动寻迹小车-毕业设计-好_第4页
基于单片机的自动寻迹小车-毕业设计-好_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

自动寻迹小车摘要AT89S52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。这里介绍的是如何用AT89S52单片机来实现电动小车的自动寻迹。本系统以设计题目的要求为目的,采用AT89S52单片机为控制核心,利用电动小车前面的红外线传感器检测道路上的轨迹,将路面信息转送给AT89S52,AT89S52根据信息作出反应控制电动机转动,从而控制电动小汽车按照路上的轨迹行驶。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。本小车采用的技术主要有传感器的有效应用和AT89S52芯片的使用。有很多功能可以继续扩展,值得就一步学习和研究。关键词: AT89S52 红外线传感器 直流电机 AbstractAT89S52 SCM is a section 8 microcontroller, his usability and multi-functional received overwhelming support from users praise. Here introduces AT89S52 SCM is how to use electric car to realize the automatic tracing. This system to design the topic request, the purpose for AT89S52 SCM as control core, using electric car in front of the infrared sensor detects the trajectory path, pavement message to someone AT89S52 devices, react AT89S52 according to the information which can control the rotation control motor electric car according to the road track road. The whole system circuit structure simple, reliable performance is high. The test results meet the requirements; the paper introduces the hardware design method and the analysis of the testing result. This car the technique to be used mainly sensor effective application and the use of AT89S52 chip. There are many function can continue to expand, worth just step for study and research.Keywords: AT89S52, light electricity detector,direct-current motor目录摘要IAbstractII目录III前言11 方案设计与论证21.1电动小车模块21.1.1转向和动力21.1.2 电动机模块31.1.3调速系统31.1.4 电机驱动模块41.2 控制模块51.3 传感器模块51.4 电源模块62 硬件设计72.1 主要元器件的介绍72.1.1 电机驱动芯片L911072.1.2 AT89S5292.1.3 红外线传感器172.2 模块介绍182.2.1车头传感器模块182.2.2 电动小车模块192.2.3 控制模块192.3 整体方案203 软件设计223.1 程序设计223.1.1 程序的模块化设计223.1.2 部分程序设计233.2 利用proteus 进行软件仿真263.3 制作电路图和PCB板图274总结31致谢33参考文献34附录1 C语言程序35附录2 电路图和PCB板图39附录3小车实物图42前言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的。设计一款智能电动小车,智能电动小车应该具有自动寻找轨迹的功能。根据题目的要求,本设计以AT89S52为控制核心,在现有电动小车的基础上,加装传感器,实现对电动车的运动状态进行实时控制。本系统控制灵活、可靠,精度高,满足各项要求。利用红外线传感器检测地上的特定轨迹,将数据传给AT89S52,经过AT89S52分析后做出反应控制电动机的运行使小车按照特定轨迹行驶。AT89S52是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表,其最主要的技术特点是向外部接口电路扩展,以完善控制功能。外部可接其他功能单元如A/DPWMPCAWDT计数器的捕获/比较逻辑等。在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。 本设计采用的AT89S52采用CHOMS工艺,功耗很低,可用于很多小型设备中。该设计具有实际意义,稍作修改就可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面可用超声波传感器进行检测。所以本设计与实际相结合,现实意义很强。1 方案设计与论证根据题目的要求,确定如下方案:在现有电动小车的基础上加控制器,在小车前部加装传感器,在路面贴上特殊轨迹。由外加传感器对路面进行实时测量,并将测量数据传送至控制器,再由主控制器根据所检测的数据对电动小车行动进行控制,使小车跟随路面特殊轨迹行驶,以实现电动小车的自动寻迹。自动寻迹小车原理图1.1所示:电动小车控制器传感器控制信号路面数据图1.1自动寻迹小车原理图1.1电动小车模块1.1.1转向和动力方案一:转向和动力分开的电动小车。转向和动力分开的电动小车是将轮胎分为两组,一组与电动机相连输出动力控制小车的行驶;另外一组控制小车的方向。(两组轮胎的前后顺序可调,其换影响不大。转向轮可使用单轮。)方案一需电动机和一个转向器。由主控制器分别进行控制,器件和控制程序较多。方案二:转向和动力结合的电动小车。转向和动力结合的电动小车是使用两个独立的电动机各自带动一个轮胎位于两侧,通过两个轮胎速度的改变实现小车的转向。控制所用程序较少,控制器控制起来简单(这种转向方式类似于坦克的转向方式。)为了小车的平衡再装上保持平衡的轮子。综上分析,本设计使用方案二。1.1.2 电动机模块为了实现电动小车对行走路径的准确定位和精确测量,有以下两种方案:方案一:采用直流电机。直流电机转动力矩大,响应快速,体积小,重量轻,较大的起动转矩使其有从零转速至额定转速具备可提供额定转矩的性能。可用变速齿轮改变其速度来达到本系统要求。价格较低。方案二:采用步进电机。步进电机是一种将电脉冲信号转换成角位移或线位移的精密执行原件。控制方便,体积小,灵活性和可靠性高,具有瞬时启动和急速停止的优越性,比较适合本系统控制精度高的特点。价格较高。从成本分析,本设计用方案一。(经济条件好时方案二最好。)1.1.3调速系统方案一:旋转变流系统。旋转变流系统由交流发电机拖动直流电动机实现变流,由发电机给需要调速的直流电动机供电,调节发电机的励磁电流即可改变其输出电压,从而调节电动机的转速。改变励磁电流的方向则输出电压的极性和电动机的转向都随着改变,所以旋转变流系统的可逆运行是很容易实现的。该系统需要旋转变流机组,至少包含两台与调速电动机容量相当的旋转电机,还要一台励磁发电机,设备多、体积大、费用高、效率低、维护不方便等缺点。且技术落后,因此搁置不用。方案二:静止可控整流器。简称V-M系统。V-M系统是当今直流调速系统的主要形式。它可以是单相、三相或更多相数,半波、全波、半控、全控等类型,可实现平滑调速。V-M系统的缺点是晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是运行条件要求高,维护运行麻烦。最后,当系统处于低速运行时,系统的功率因数很低,并产生较大的谐波电流危害附近的用电设备。方案三:脉宽调速系统。采用晶闸管的直流斩波器基本原理与整流电路不同的是,在这里晶闸管不受相位控制,而是工作在开关状态。当晶闸管被触发导通时,电源电压加到电动机上,当晶闸管关断时,直流电源与电动机断开,电动机经二极管续流,两端电压接近于零。脉冲宽度调制(Pulse Width Modulation),简称PWM。脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速。可在行进间变速,直道高速,弯道低速。方案四:调速齿轮组调速。采用齿轮与齿轮的组合,利用齿轮组半径比来调速,能达到本设计的最低要求以低速匀速前进。价格便宜,实现起来简单。与V-M系统相比,PWM调速系统有下列优点:(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了H型单极型可逆PWM变换器进行调速。脉宽调速系统的主电路采用脉宽调制式变换器,简称PWM变换器。脉宽调速也可通过单片机控制继电器的闭合来实现,但是驱动能力有限。为顺利实现电动小汽车的前行与倒车,本设计采用了可逆PWM变换器。可逆PWM变换器主电路的结构式有H型、T型等类型。我们在设计中采用了常用的双极式H型变换器,它是由4个三极电力晶体管和4个续流二极管组成的桥式电路。综上,考虑到本设计重在寻迹,本设计使用价格便宜,简单的方案四。(经济条件好时方案三最好。)1.1.4 电机驱动模块方案一:采用集成芯片L9110驱动直流电机。L9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/COMS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每个通道能通过750800mA的持续电流,峰值电流能力可达1.52.0;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机、开关功率管的使用上安全可靠。L9110被广泛用于玩具汽车电机驱动、步进电机驱动和开关功率管等电路上。方案二:用功率管构成驱动电路来驱动电机。性能可靠,具有自动保护功能,但结构较复杂多用于交流。综上分析,本设计选择方案一。1.2 控制模块方案一:采用FPGA作为系统的主控制器。FPGA可以实现各种复杂的逻辑功能,规模大集,成度高,体积小,稳定性好,IO口资源丰富,易于进行功能扩展,处理速度快,但是适用于大规模实时性要求较高的系统,价格高,编程实现难度大。本系统只需要完成信号检测和电机驱动的控制,逻辑功能简单,对控制器的数据处理能力要求不高,所以不选择此方案。方案二:采用嵌入式系统作为主控制器。嵌入式系统工作频率较高,速度较快,控制能力很强,也有较强的数据处理能力。但同样价格较高,编程实现难度大。方案三:采用AT89S52单片机作为主控制器。AT89S52是一款低功耗,高性能的8位单片机,片内含有8KB的Flash片内程序存储器,256 Bytes的RAM,32个外部双向输入/输出(I/O)口,5个中断优先级,2层中断嵌套中断等。价格便宜,使用方便。编程实现难度低,适合用来实现系统的控制功能。综上分析,本设计使用方案三。1.3 传感器模块方案一:采用光敏电阻组成光敏传感器。光敏电阻原理简单,使用方便,价格低廉,但受光照强度影响很大,可靠性不高。方案二:采用角度传感器。实用角度传感器来测量车体水平方向和竖直方向的角度,感测到的倾角信号经编码后传感给单片机,由单片机控制电动机的运行。角度传感器灵敏度合适,响应速度好,但使用复杂,价格高昂,且不易购买。方案三:采用光电传感器。光电传感器原理简单,实现方便,价格低廉,可集发射器和接收器于一体。使用这类光电传感器电路简单,工作性能稳定,能完成需要的信号检测功能。综上分析,本设计选择方案三。1.4 电源模块方案一:电脑USB串口供电。能直接为单片机提供稳定的+5V直流电压。USB串口线又容易得到。需要很长的线,而且要有交流电和电脑配合。方案二:用4节五号电池串联6V直流电源。在不超过单片机工作电压范围的情况下,又能驱动直流电机。且这个电源结构简单,价格便宜,容易得到。综上所述,本设计选择方案二。2 硬件设计本设计硬件由一下三个模块组成:1.以驱动芯片L9110为主的电动小车模块。2.以AT89S52为控制器的控制器模块。3.以红外线传感器为主的传感器模块。整个设计由传感器模块向控制模块提供路面情况,控制模块根据情况控制电动小车移动,三个模块相互合达到设计要求 。2.1 主要元器件的介绍2.1.1 电机驱动芯片L9110L9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/COMS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每个通道能通过750800mA的持续电流,峰值电流能力可达1.52.0;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机、开关功率管的使用上安全可靠。L9110被广泛用于玩具汽车电机驱动、步进电机驱动和开关功率管等电路上。其特点有,低静态工作电流;宽电压电源范围2.5V12V;每个通道具有800mA连续输出能力;较低的饱和压降,TTL/COMS输出电平兼容,可直接连CPU;输出内置钳位二极管;适用于感性负载,控制驱动集成于单片IC中;具备管脚高压保护功能;工作温度-2080L9110。管脚定义:1 OA:A路输出脚。2 VCC:电源电压。3 VCC:电源电压。4 OB:B脚输出管脚。5 GND:地线。6 IA:A路输入管脚。7 IB:B路输入管脚。8 GND:地线。其管脚图如图2.1所示。其应用电路如图2.2 所示。管脚波形图如图2.3所示。T=25时的参数如表2.1。电器特性标如表2.2。图2.1 L9110管脚图图2.2 L9110的应用电路图标2.1 T=25时的参数表符号参数最小典型最大单位VCCmax 电源电压2.2512V Iout max 输出电流8001000mV VH in 输入高电平2.2512V VL in 输出低电平00.50.7V PD max 允许电源损耗800mW Topr 操作温度-302585表2.2 T=25 Vcc=5V时电器特性标范 围符号参数最小典型最大单位IDD静态电流0.12uAVo1输出饱和压降Io=500mA11.15VVo2输出饱和压降Io=200mA0.750.85VI in操作电流100200uAI out持续输出电流750800850mAI max电流峰值15002000mA图2.3管脚波形图2.1.2 AT89S52AT89S52单片机由以下功能部件组成:微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。1、微处理器:该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。2、数据存储器:片内为256 Bytes RAM,片外最多可外扩至64K字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。3、程序存储器:由于受集成度限制,片内有8KB Flash存储器,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64K字节。4、中断系统:具有5个中断源,2级中断优先权。5、定时器/计数器:片内有2个16位的定时器/计数器, 具有四种工作方式。6、串行口:1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。7、输入/输出(I/O)口:P1口、P2口、P3口、P4口为4个并行8位I/O口。8、特殊功能寄存器:共有21个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。下面对它的进行介绍:P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。定时器 2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。 中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位数据指针寄存器:位于SFR中82H83H的DP0和位于84H85。特殊寄存器AUXR1中DPS0 选择DP0;DPS=1 选择DP1。用户应该在访问数据指针寄存器前先初始化DPS至合理的值。辅助寄存器 AUXR 地址:8EH 复位值:XXX00XX0B不可位寻址预留扩展用DISALE ALE使能标志位 :DISALE 操作方式 :为0时 ALE 以1/6晶振频率输出信号。为1时 ALE 只有在执行MOVX 或MOVC指令时激活。DISRTO 复位输出标志位:为0时看门狗(WDT)定时结束,Reset 输出高电平。为1时Reset 只有输入。WDIDLE 空闲模式下WDT 使能标志位 :为0时空闲模式下,WDT继续计数。为1时空闲模式下,WDT停止计数。掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期间POF置“1”。POF可以软件控制使用与否,但不受复位影响。辅助寄存器1:AUXR1地址A2H 复位值:XXXXXXX0B不可位寻址。预留扩展用DPS 数据指针选择位DPS:为0时选择DPTR寄存器DP0L和DP0H1,为1时选择DPTR寄存器DP1L和DP1H。存储器结构MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以64K寻址。 程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。 对于 89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:2000HFFFFH。 数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。 当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。 例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV 0A0H , #data使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。 MOV R0 , #data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。看门狗定时器WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。WDT 在默认情况下无法工作;为了激活WDT,用户必须往WDTRST 寄存器(地址:0A6H)中依次写入01EH 和0E1H。当WDT激活后,晶振工作,WDT在每个机器周期都会增加。WDT计时周期依赖于外部时钟频率。除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。当WDT溢出,它将驱动RSR引脚一个高电平输出。 WDT的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。当计数达到8191(1FFFH)时,13 位计数器将会溢出,这将会复位器件。晶振正常工作、WDT激活后,每一个机器周期WDT 都会增加。为了复位WDT,用户必须向WDTRST 写入01EH 和0E1H(WDTRST 是只读寄存器)。WDT 计数器不能读或写。 当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。为了很好地使用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。 掉电和空闲方式下的 WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。在这种方式下,用户不必喂狗。有两种方式可以离开掉电模式:硬件复位或通过一个激活的外部中断。通过硬件复位退出掉电模式后,用户就应该给WDT 喂狗,就如同通常AT89S52 复位一样。 通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复位器件,WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中复位。 为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复位WDT。 在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。 默认状态下,在待机模式下,WDIDLE0,WDT继续计数。为了防止WDT在待机模式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进入待机模式。 UART在AT89S52 中,UART 的操作与AT89C51 和AT89C52 一样。为了获得更深入的关于UART 的信息,选择“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“ProductOverview”即可。 定时器 0 和定时器1在AT89S52 中,定时器0 和定时器1 的操作与AT89C51 和AT89C52 一样。为了获得更深入的关于UART 的信息,选择“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“ProductOverview”即可。 定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作方式由特殊寄存器T2CON中的C/T2位选择。定时器2有三种工作模式: 捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3 所示,工作模式由T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成,因此,计数频率就是晶振频率的1/12。捕捉方式在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果EXEN2=1,定时器2做相同的操作。除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳变会引起T2CON 中的EXF2 置位。像TF2 一样,T2EX 也会引起中断。在计数工作方式下,寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1 期间,新的计数值出现在寄存器中。因为识别10的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。 自动重载当定时器2 工作于16 位自动重载模式,可对其编程实现向上计数或向下计数。这一功能可以通过特殊寄存器T2MOD中的DCEN(向下计数允许位)来实现。通过复位,DCEN 被置为0,因此,定时器2 默认为向上计数。DCEN 设置后,定时器2就可以取决于T2EX向上、向下计数。 DCEN=0 时,定时器2 自动计数。通过T2CON 中的EXEN2 位可以选择两种方式。如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。计数溢出也使得定时器寄存器重新从RCAP2H 和RCAP2L 中加载16 位值。定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。如果EXEN2=1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2中断标志位。 T2EX 上的一个逻辑0 使得定时器2 向下计数。当TH2 和TL2 分别等于RCAP2H 和RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。 定时器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能触发中断。T2MOD 地址:0C9H 复位值:XXXXXX00B不可位寻址。中断AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。这些中断如图10所示每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。 如表5所示,IE.6位是不可用的。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。它们为AT89系列新产品预留。 定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。 定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。2.1.3 红外线传感器红外线传感器采用反射接收原理。一个红外线传感器配置了一个红外线发接受器、一个红外线接受器及其上拉电阻。其应用电路如图2.4所示。红外线发射器通电后不断会发射一定强度的红外线照射物体。红外线接收器在接受到一定强度的红外线会后导通。如图通过在红外线的正极接出一个信号来观察红外线接收器是否导通。当红外线接收器导通时,输出信号为0;反之则为1。红外线在不同颜色的物体上反射程度是不同的,当红外线传感器在黑色物体时,黑色物体吸收大量红外线,反射少量红外线,红外线接收其不足以导通,输出信号为1。当红外线传感器在白色物体上时,白色物体吸收的红外线少,反射的红外线少,红外线接收器导通,输出信号为0。因此本设计采用红外线传感器模块与有黑线的路面组合使用。图2.4红外线传感器的应用电路2.2 模块介绍2.2.1车头传感器模块图2.5 车头传感器模块本系统共设计三个红外线传感器固定在底盘前沿,贴近地面,分别放置在电动车车头的正前方、左下方和右下方两。正常行驶时,发射管发射红外光照射地面,光线经白纸反射后被接收管接收,输出高电平信号;电动车经过黑线时,发射端发射的光线被黑线吸收,接收端接收不到反射光线,传感器输出低电平信号。正前方的传感器用于检测障碍物。应用图如图2.5所示。2.2.2 电动小车模块电动小车由两个直流电机与其驱动芯片组成。一左一右位于小车前端两边。电机通过齿轮组带动轮胎。后端是用于平衡的轮胎。小车电动机模块如图2.6所示图2.6 电动小车模块2.2.3 控制模块1、时钟电路AT89S52虽然有内部振荡电路,但要形成时钟,必须外部附加电路。AT89S52单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,CX1、CX2可在20pF到100pF之间取值。所以本设计中,振荡晶体选择11.0592MHZ,电容选择30pF。2、复位电路AT89S52的复位是由外部的复位电路来实现的。复位引脚RST通过在每个机器周期的对复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要VCC的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用11.0592MHZ时C取10uF,R取10K。本设计就是用就是最简单的上电复位。控制器模块如图2.7所示。图2.7 控制器模块2.3 整体方案小车的寻迹原理是当左侧传感器在黑线上时,传感器输出高电平,在白色地板上时输出低电平。电平信号进入单片机P3.5口,同理右侧传感器将电平信号传送到单片机P3.7口。单片机通过P0.0和P0.1口控制左电机组,通过P0.2和P0.3口控制右电机组。当正前方传感器检测出小车前方有物体阻挡时,正前方传感器输出低电平信号到单片机的P3.6口,单片机控制小车行动。整体硬件示意图如图2.8所示。当左右传感器都在黑线上时,单片机控制左右电机同时一同速度正向转动,小车向前行驶。当左侧传感器在黑线外,右侧传感器在黑线上,单片机控制右侧的电机停止(或反向转动),左侧的电机正向转动(或停止)来控制小车向右转。当右侧传感器在黑线外,左侧传感器在黑线上,单片机控制左侧的电机停止(或反向转动),右侧的电机正向转动(或停止)来控制小车向左转。从而来实现小车的自动寻迹。当正前方的有物体阻挡时,单片机控制小车停下来。图2.8 小车整体示意图3 软件设计3.1 程序设计程序要的任务是,让单片机查询传感器模块发出的路面信号,根据信号作出反应,控制电动机工作实现自动寻迹。其程序流程图3.1所示。初始化前方是否有障碍物是否检测到黑线是否偏离黑线行驶停 车停 车NN转向子程序 NYYYN图3.1 程序流程图3.1.1 程序的模块化设计在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。为了完成要求设计,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:1、单个模块比起一个完整的程序易编写及调试;2、模块可以共存,一个模块可以被多个任务在不同条件下调用;3、模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序延时子程序转向子程序构成。具体程序见附录1。 3.1.2 部分程序设计1、延时子程序。制作一个延时子程序,让指令执行足够长的时间。Void Delay(

温馨提示

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

评论

0/150

提交评论