




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要本文介绍的是基于单片机89S52控制的自动往返电动小汽车控制系统的硬件和软件设计。该设计采用89S52单片机为控制核心,对送入的脉冲信号进行检测分析,利用超声波传感器检测道路上的障碍,通过脉宽调制使电机转速能自动调节,从而实现电动小汽车的自动避障,快慢速行驶,以及自动停车的控制要求。由4位数码管进行对里程、时间的显示。整个系统的电路结构简单,可靠性能高。采用的技术主要有:通过编程来控制小车的速度;传感器的有效应用;新型显示芯片的采用。关键词:自动往返电动小汽车;AT89S52单片机;脉宽调制;光电检测器AbstractThis paper is based on89S52 single-c
2、hip microcomputer controlled electric car from the automatic control system hardware and software design. The design using 89S52MCU as the control core, is sent into a pulse signal detection and analysis, the use of ultrasonic sensors detect obstacles on the road, by a pulse width modulated so that
3、the motor speed can be adjusted automatically, so as to realize the electric cars automatic obstacle avoidance, low speed, as well as the automatic parking control requirements. By 4digital tube on the mileage, time display. The system has the advantages of simple circuit structure, reliable perform
4、ance and high.Using the technology are: programmed to control the car speed;the effective application of the sensor;the adoption of the new display chip.Key words: automatic motor-driven car; AT89S52 MCU; pulse width modulation; photoelectric detector目录 TOC o 1-3 h z u HYPERLINK l _Toc325235391 第1章
5、绪论 PAGEREF _Toc325235391 h 1 HYPERLINK l _Toc325235392 1.1设计背景和研究意义 PAGEREF _Toc325235392 h 1 HYPERLINK l _Toc325235393 1.2 工作原理和技术要求 PAGEREF _Toc325235393 h 1 HYPERLINK l _Toc325235394 第2章 方案设计与论证 PAGEREF _Toc325235394 h 2 HYPERLINK l _Toc325235395 2.1单片机的选择 PAGEREF _Toc325235395 h 2 HYPERLINK l _T
6、oc325235396 2.2电动小车 PAGEREF _Toc325235396 h 3 HYPERLINK l _Toc325235397 转向和动力分开的电动小车 PAGEREF _Toc325235397 h 3 HYPERLINK l _Toc325235398 转向和动力结合的电动小车 PAGEREF _Toc325235398 h 3 HYPERLINK l _Toc325235399 2.3控制系统方案设计 PAGEREF _Toc325235399 h 3 HYPERLINK l _Toc325235400 2.3.1 数字电路控制 PAGEREF _Toc325235400
7、 h 3 HYPERLINK l _Toc325235401 2.3.2 89S52系统控制 PAGEREF _Toc325235401 h 3 HYPERLINK l _Toc325235402 2.4调速系统方案设计 PAGEREF _Toc325235402 h 4 HYPERLINK l _Toc325235403 2.4.1 电压调速 PAGEREF _Toc325235403 h 4 HYPERLINK l _Toc325235404 脉宽调速 PAGEREF _Toc325235404 h 4 HYPERLINK l _Toc325235405 2.5制动方案 PAGEREF _
8、Toc325235405 h 5 HYPERLINK l _Toc325235406 机械刹车 PAGEREF _Toc325235406 h 5 HYPERLINK l _Toc325235407 电机反电压刹车 PAGEREF _Toc325235407 h 5 HYPERLINK l _Toc325235408 2.6电机驱动模块 PAGEREF _Toc325235408 h 5 HYPERLINK l _Toc325235409 2.6.1 L298N驱动步进电机 PAGEREF _Toc325235409 h 5 HYPERLINK l _Toc325235410 2.6.2 功率
9、管缓冲电路驱动电机 PAGEREF _Toc325235410 h 5 HYPERLINK l _Toc325235411 2.7信号检测模块 PAGEREF _Toc325235411 h 6 HYPERLINK l _Toc325235412 光敏探测器 PAGEREF _Toc325235412 h 6 HYPERLINK l _Toc325235413 光电传感器 PAGEREF _Toc325235413 h 6 HYPERLINK l _Toc325235414 2.8行程计算 PAGEREF _Toc325235414 h 7 HYPERLINK l _Toc325235415
10、2.9系统原理 PAGEREF _Toc325235415 h 7 HYPERLINK l _Toc325235416 第3章 硬件设计 PAGEREF _Toc325235416 h 8 HYPERLINK l _Toc325235417 3.1电动驱动模块 PAGEREF _Toc325235417 h 8 HYPERLINK l _Toc325235418 3.2信号检测模块 PAGEREF _Toc325235418 h 8 HYPERLINK l _Toc325235419 3.3单片机控制处理模块 PAGEREF _Toc325235419 h 8 HYPERLINK l _Toc
11、325235420 3.4显示模块 PAGEREF _Toc325235420 h 9 HYPERLINK l _Toc325235421 3.5最小应用系统设计 PAGEREF _Toc325235421 h 9 HYPERLINK l _Toc325235422 时钟电路 PAGEREF _Toc325235422 h 9 HYPERLINK l _Toc325235423 复位电路 PAGEREF _Toc325235423 h 10 HYPERLINK l _Toc325235424 第4章 软件设计 PAGEREF _Toc325235424 h 11 HYPERLINK l _To
12、c325235425 4.1 主程序设计 PAGEREF _Toc325235425 h 11 HYPERLINK l _Toc325235426 4.2 显示子程序设计 PAGEREF _Toc325235426 h 12 HYPERLINK l _Toc325235427 4.3 避障子程序设计 PAGEREF _Toc325235427 h 12 HYPERLINK l _Toc325235428 4.4可编程逻辑器件 PAGEREF _Toc325235428 h 12 HYPERLINK l _Toc325235429 附录 PAGEREF _Toc325235429 h 15 HY
13、PERLINK l _Toc325235430 参考文献 PAGEREF _Toc325235430 h 22 HYPERLINK l _Toc325235431 致谢 PAGEREF _Toc325235431 h 23第1章 绪 论1.1设计背景和研究意义智能电动小车是一种无人操纵的自动寻迹往返小车。随着全球经济的飞速开展,现代化生产观念日益受到企业的重视,这也为智能小车产业的开展提供了契机。本设计就是在这样的背景下提出的。设计一款智能电动小车,智能电动小车应该具有自动寻找轨迹的功能。AT89S52是一款八位单片机,它的易用性和多功能性受到了广阔使用者的好评。它是第三代单片机的代表,其最主
14、要的技术特点是向外部接口电路扩展,以完善控制功能。外部可接其他功能单元如A/DPWMPCAWDT计数器的捕获/比较逻辑等。在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式1。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的根底。 本设计采用的AT89S52是一种低功耗、高性能 CMOS8 位微控制器,可用于很多小型设备中。该设计具有实际意义,稍作修改就可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的开展前景;在考古方面可用超声波传感器进行检测。所以本设计与实际相结合,现实意义很强。1.2
15、工作原理和技术要求本设计以AT89S52为控制核心,利用超声波传感器进行信号和障碍物的实时检测;信号经过外围电路处理送至单片机,经过单片机的运算和处理来控制电机的转速,进而实现小车的自动加速、限速、减速、前进、后退、左右转,显示行驶速度、路程、时间等功能,实现对电动小车的运动状态进行实时控制。第2章 方案设计与论证根据题目的要求,最终确定了如下的方案:以AT89S52单片机为控制核心,附以外围电路,利用超声波传感器进行信号和障碍物的检测,从而实现对路面特殊轨迹的实时测量,然后将测量数据传送至主控制器进行处理,随后由主控制器根据所接收到的数据对电动车进行控制,实现按照路径自动行驶。这种方案如图1
16、-1能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。电动小车控制器传感器路面数据控制信号图1-1 自动寻迹小车原理图2.1单片机的选择20世纪80年代以来,单片机的开展非常迅速,就通用单片机而言,世界上一些著名的计算机厂家已投放市场的产品就有50多个系列,数百个品种。尽管单片机的品种很多,但是在我国使用比较广泛的还是Intel公司的MCS51系列单片机和美国Atmel公司的单片机。CS51系列单片机包括三个根本型8031、8051、8751。8031片内无程序存储器,需外扩EPROM芯片,比较麻烦,不予采用;8051适合与应用在程序已定,且批量大的单片机产
17、品中。也不予采用;8751是在8031根底上,增加了4K字节的EPROM,它构成了一个程序小于4KB的小系统。用户可以将程序固化在EPROM中,可以反复修改程序。但其价格相对8031较贵。8031外扩一片4KB EPROM的就相当与8751,它的最大优点是价格低。随着大规模集成电路技术的不断开展,能装入片内的外围接口电路也可以是大规模的,也不予采用1。AT89S52 Atmel公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制,与工业80C51产品指令和引脚完全兼容。片上 Flash 允许程序存储器
18、在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。因此采用AT89S52单片机13。2.2电动小车 转向和动力分开的电动小车转向和动力分开的电动小车是将轮胎分为两组,一组与电动机相连输出动力控制小车的行驶;另外一组控制小车的方向。此种方案只需一个电动机,一个转向器。由主控制器分别进行控制,控制程序较多。 转向和动力结合的电动小车转向和动力结合的电动小车是使用两个独立的电动机各自带动一个轮胎位于两侧,通过两个轮胎速度的改变实现小车的转向。控制所用程序较少,控制器控制起来简
19、单这种转向方式类似于坦克的转向方式。为了小车的平衡再装上万向轮。综合以上两种方案的比较,选择转向和动力结合的电动小车。2.3 控制系统方案设计 数字电路控制 此种方案采用数字电路的构成计数器、分频器和信号振荡器,并采用硬件译码显示,可以实现控制方案。 89S52系统控制以AT89S52系统为控制核心,完成对电动机驱动、转速和前进或后退的控制,以及往返时间和行驶距离的显示。此系统的硬件和软件都比较容易实现,且满足精度要求,性价比较高。AT89S52具有以下特点:AT98S52是一款低功耗,高性能的8位单片机,片内含有8KB的Flash片内程序存储器,256 Bytes的RAM,32个外部双向输入
20、/输出(I/O)口,8个中断源,一个6向量2级中断结构等16。比较以上两种控制方案,方案一程序实现简单,控制性能较差。方案二是以AT89S52单片机为核心的系统可以实现显示,控制速度,向前或向后,保持与计算机通讯功能大大提高了智能化控制速度,精度和系统的控制精度结果都能很好的满足根本要求,而且该系统还可以扩展。综合分析,选择第二种方案。2.4调速系统方案设计 电压调速由单片机发出调速数码指令,利用数/模转换电路将指令转换成电压值,以此到达控制速度的目的。这种方案需专门的数模转换电路,且控制不精确,在电压比较低的时候,启动困难,容易停车此时通过电动机的电流很大,容易烧毁。 脉宽调速20世纪70年
21、代以前,以晶闸管为根底组成的相控整流装置是运动控制系统直流传动中主要使用的变流装置,但由于晶闸管属于半控型器件,使其构成的VM系统的性能受到一定的限制;20世纪70年代以后,随着电力电子技术的开展,出现了全控型器件门极可关断晶闸管GTO、电力场效应晶体管PowerMOSFET、绝缘栅极双极晶体管IGBT;直流电机控制领域向高精度方向开展;PWM驱动装置在中小功率场合,有着晶闸管驱动装置无法比较的优点,例如:调速范围宽、快速性好、电流波形系数好、功率因数好等17。比较以上两种调速方案,本系统采用方案二,脉宽调速方案。由单片机直接产生脉冲信号,通过桥式双电路驱动电动机,实现调速。此方案电路简单明了
22、,控制精确,改变程序即可改变速度。2.5 制动方案 机械刹车机械刹车没有任何的助力装置,主要靠施加再踏板上的力量的大小来取决于制动力的大小,制动效果相当的差,一般用于简单车辆且负载不大的情况下使用。 电机反电压刹车此种刹车方案是在需要刹车的时候给电机加一个一定宽度的反向电压,迫使电动机快速停止,这种方法称为“软刹车。比较以上两种制动方案,方案一虽然可行,但机械结构制作困难,且易出故障。方案二,不需要特别加机构,制作容易,可靠性好,缺点是需屡次调试,控制反电压的宽度。综合比较,本系统采用方案二,软刹车。2.6电机驱动模块 L298N驱动步进电机L298N是一个恒压恒流桥式2A驱动芯片,内部包含4
23、通道逻辑驱动电路,可以方便的驱动两个直流电机,或一个两相步进电机,相应频率较高,稳定性较好。单本系统两个电机时序不同,会出现两个不同延时程序的情况,系统处理负荷大,影响电机工作,同时价格相对较高18。 功率管缓冲电路驱动电机用功率管如TP132,8A,70W构成驱动电路来驱动电机。采用功率管缓冲电路来驱动电机降低了电路的热损耗,提高了电机的功率和可靠性。而且结构简单,价格低廉,可以完成控制功能18。综合以上两种驱动方案分析,选择方案二。2.7信号检测模块 光敏探测器光敏电阻探测器在光照下改变自身的电阻率,光照愈强,其自身的电阻愈小,这种方案原理简单,使用方便,价格低廉,但受光照强度影响很大,可
24、靠性不高。 光电传感器作为光电检测系统中实现光电转换关键元件的光电传感器,是把光信号转变成为电信号的器件。光电式传感器是以光电器件作为转换元件的传感器。它可用于检测直接引起光量变化的非电量,如光强、光照度等;也可用来检测能转换成光量变化的其他非电量,如位移、振动、速度等。光电式传感器具有非接触、响应快、性能可靠等特点,因此在工业自动化装置和机器人中获得广泛应用2。光电传感器的优点: 检测距离长;对检测物体的限制少;响应时间短;分辨率高;可实现非接触的检测;可实现颜色判别;便于调整等11。综上分析,选择光电传感器方案。红外光线照射到路面并反射,由于黑带和白纸的系数不一样,可根据接收到的红外线的强
25、弱判断是否到达或者偏离黑带。通过采用反射式光电检测电路对跑道上的黑线进行检测,并用两个遮光套管套住发光管和接收管以一定的角度贴近跑道,这样可以消除外界光线的干扰,信号检测如图2-3。图2-3信号检测2.8行程计算本设计采用红外检测,因为它具有定位精度高、可靠性强等优点,故采用红外光电码盘测速方案。具体电路图如图2-3所示。安装在电动机轴上的光栅会随着电动机的转动而转动,红外发光二极管和红外三极管分装在光栅两侧,当红外发光二极管点亮时,三极管就会接收到二极管的红外信号。这样当电机转动起来时,光栅随着电机转动,三极管就会不断接收到红外信号。然后将这些信号传送至单片机,经过计数器的计数就可计算出行车
26、距离19-20。通过车轮转一圈,记录一个脉冲,储存在计数器中,进行二进制乘法及BCD码转换以获得准确里程。那么:里程=脉冲数*车轮周长。图2-4 行程检测2.9系统原理最初启动时,由按键启动小车,复位。将小车放置在黑线跑道上,由外围电路的超声波传感器和红外光电传感器进行检测,检测小车是否在黑道轨道上行驶,是否偏离轨道,然后将检测到的数据送至单片机计数显示,单片机经过数据处理后,经过脉宽调速技术,控制小车的实时运动,由数码管显示小车的行驶路程和时间,这样就提高了小车的总体性能。如以下图2-4。左电动机组右电动机组P0.0 P3.5P0.1 P3.6P0.2 P3.7P0.3左下方传感器正前方传感
27、器右下方传感器电动小车模块 控制器模块 车头传感器模块图 2-4 系统原理图第3章 硬件设计系统硬件以AT89S52为核心,包括4个模块电路:电动驱动模块、信号检测模块、单片机控制处理模块和显示模块。3.1电动驱动模块电动驱动采用的是上下电平进行信号控制。当00输入时是截止状态,当01输入时,电机正转,当10输入时,电机反转,但不能高电平同时输入其中1代表高电平,0代表低电平。利用改变脉冲宽度控制电机的转速,使具有不同的转速,分高速和低速两种状态。3.2信号检测模块信号检测模块主要是由红外发光二极管、超声波传感器、红外三极管和光敏二极管构成。当小车在黑线上行驶时输出高电平,在白纸上时输出低电平
28、。3.3单片机控制处理模块用光电传感器检测不同的信号,并经过单片机对信号进行处理,配合脉宽调速程序,使其控制电机的正反转,实现加速减速和转向。通过单片机内部定数器计数器进行定时、计数,再用单片机串行输入输出口进行显示控制。这种控制系统电路成熟、工作稳定、容易实现控制。3.4显示模块此设计的显示模块主要是往返时间和行驶里程的显示。里程显示和往返时间的显示利用的是4位数码管的共用,采用数码管动态扫描的方式。行驶里程显示用霍尔集成块作检测头,当磁钢经过时输出一个低电平0。3.5最小应用系统设计一般最小系统都具有载入程序,在线调试,复位,数据传输和数字、模拟信号之间的相互转换等功能。最小系统硬件一般包
29、括下载口,扩展端口,串口和相关功能的芯片组成。AT89S52是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。在用AT89S52单片机构成最小应用系统时,将时钟电路和复位电路接在单片机接上构成最小应用系统。以实现单片机片上硬件功能,包括A/D,对LED的控制和与计算机串口进行通信等功能,并且方便今后对该单片机系统的直接使用和扩展。3.5.1时钟电路时钟电路可以简单定义如下: 1.就是产生象时钟一样准确的振荡电路。 2.任何工作都按时间顺序。用于产生这个时间的电路就是时钟电路。时钟电路一般由晶体震荡器、晶震控制芯片和电容组成。AT89S52片内设有一个由反相放大器所构成的
30、振荡电路,XTAL1和XTAL2分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式时钟电路是在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体可以在1.2MHz-12MHz之间选择,电容值在50PF-30PF之间选择,电容的大小可以起到频率微调作用。如图3-1。外部时钟电路是XTAL1接地,XTAL2接外部振荡器。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可
31、靠地工作。为了提高温度稳定性,应采用NPO电容10。图3-1 内部时钟电路图3.5.2复位电路AT89S52的复位是由外部的复位电路来实现的。AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。复位电路通常采用上电自动复位和手动复位两种方式。在RESET输入端出现
32、高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期24个振荡周期的高电平。CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RST端电平变低。复位期间不产生ALE及信号。内部复位操作使堆栈指示器SP为07H,各端口都为1,特殊功能存放器都复位为0,但不影响RAM的状态。当RST引脚返回低电平以后,CPU从0地址开始执行程序。对于加电复位电路,加电瞬间,RST端的电位与Vcc相同,随着RC电路充电电流的减小,RST端的电位逐渐下降。只要RST端保持10ms以上的高电平就能使单片机有效地复位。复位电路中的RC参数通常由实验调
33、整。当振荡频率选用6MHz,使CR选22uF,RR选1k便能可靠地实现加电复位。假设采用RC电路接施密特电路的输入端,施密特电路输出端接单片机和外围电路的复位端,即可使系统可靠地同步复位10。第4章 软件设计系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。为了完成上述任务,在进行软件设计时,通常把整个过程分成假设干个局部,每一局部叫做一个模块。所谓“模块,实质上就是为完成某一功能所需的一段程序或子程序段,这种程序设计方法叫模块程序设计法。模块程序设计法
34、的特点是:模块相对独立,功能单一,编写相对简单,可以独立编写调试;可集体开发,缩短开发周期。不同的模块可以由不同的人员开发,最终能够合成完整的程序;开发出的模块,可在不同的应用程序中屡次使用,减少重复劳动,提高开发效率;测试、更新以模块为单位进行而不会影响其他模块。本系统软件采用模块化程序设计,由主程序、中断子程序、显示子程序等构成。4.1 主程序设计主程序清单见附表录1。软件流程 如图3-1流程图所示:图3-1 流程图4.2 显示子程序设计程序清单见附录1。.4.3 避障子程序设计程序清单见附录1。4.4可编程逻辑器件可编程逻辑器件GAL16V8是LATTICE公司研制的一种电可擦除的可重复
35、编程的低密度PLD器件。 GAL16V8以最大3.5ns的传输延迟时间,结合高性能的CMOS工艺与电可擦E2悬浮栅工艺可为PLD市场提供最高速度的性能。高速擦写时间100ns允许快速和有效的重复编程。依靠输出逻辑宏单元OLMC允许用户来构建,这种通用的结构提供了最大的设计灵活性。作为GAL16V8的许多可能结构形式中最重要的一个子集,PAL结构被列在宏单元描述局部的表里面。GAL16V8借助于全部功能/ 熔丝图/参数的兼容性能够仿真任何一种PAL结构。 因此,实现了所有的GAL产品100%的现场可编程性和可操作性。此外,规定100次的擦写循环和超过20年的数据保持能力5-9。GAL16V8技术
36、特性 高性能E2CMOS工艺 最大传输延迟3.5ns Fmax250MHz 时钟输入到数据输出最大3.0ns UltraMOS先进的CMOS工艺 功耗比双极型减少50%到75% 低功率器件上的Icc典型值为75mA 1/4功率器件上的Icc典型值为45mA 对所有引脚有效上拉 E2CEEL工艺 可重组合逻辑电路 可重编程单元 100%测试/100%合格率 高速电可擦 (100ms) 数据保存20年 8个输出逻辑宏单元 复杂逻辑设计的最大灵活性 可编程输出极性 具有全部功能、熔丝图、参数兼容性的仿真20引线的PAL设备 所有存放器的预载和开电源复位 100%的功能可测性 应用包括: DMA控制
37、状态机控制 高速图形处理 标准逻辑速度提升 用于识别的电子签名11-12附录程序清单#include /包含52相关的头文件typedef unsigned char uchar; /重定义char数据类型typedef unsigned int uint; /重定义int数据类型#define ShowPort /定义数码管显示端口uchar code LedShowData=0 x03,0 x9F,0 x25,0 x0D,0 x99, /定义数码管显示数据 0 x49,0 x41,0 x1F,0 x01,0 x19;/0,1,2,3,4,5,6,7,8,9static unsigned i
38、nt RecvData; /定义接收红外数据变量static unsigned char CountData; /定义红外个数计数变量static unsigned char AddData; /定义自增变量static unsigned int LedFlash; /定义闪动频率计数变量unsigned char HeardData; /定义接收到数据的高位变量bit RunFlag=0; /定义运行标志位bit EnableLight=0; /定义指示灯使能位/*完成根本数据变量定义*/sbit S1State=P10; /定义S1状态标志位sbit S2State=P11; /定义S2状
39、态标志位sbit B1State=P12; /定义B1状态标志位sbit IRState=P /定义IR状态标志位sbit RunStopState=P14; /定义运行停止标志位sbit FontIRState=P15; /定义FontIR状态标志位sbit LeftIRState=P16; /定义LeftIR状态标志位sbit RightIRState=P17; /定义RightIRState状态标志位/*完成状态指示灯定义*/sbit S1=P32; /定义S1按键端口sbit S2=P34; /定义S2按键端口/*完成按键端口的定义*/ sbit LeftLed=P20; /定义前方左
40、侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口/*完成前方指示灯端口定义*/sbit LeftIR=P35; /定义前方左侧红外探头sbit RightIR=P36; /定义前主右侧红外探头sbit FontIR=P37; /定义正前方红外探头/*完成红外探头端口定义*/sbit M1A=P00; /定义电机1正向端口sbit M1B=P01; /定义电机1反向端口sbit M2A=P02; /定义电机2正向端口sbit M2B=P03; /定义电机2反向端口/*完成电机端口定义*/sbit B1=P04; /定义话筒传感器端口sbit RL1=P05; /定义光敏
41、电阻端口sbit SB1=P06; /定义蜂鸣端口/*完成话筒,光敏电阻,蜂鸣器.端口定义*/sbit IR1=P33; /定义红外接收端口/*完成红外接收端口的定义*/void Delay() /定义延时子程序 uint DelayTime=30000; /定义延时时间变量 while(DelayTime-); /开始进行延时循环 return; /子程序返回void ControlCar(uchar CarType) /定义小车控制子程序 M1A=0; /将电机1正向电平置低 M1B=0; /将电机1反向电平置低 M2A=0; /将电机2正向电平置低 M2B=0; /将电机2反向电平置低
42、LeftLed=1; /关闭前方左侧指示灯 RightLed=1; /关闭前方右侧指示灯 Delay(); /将此状态延时一段时间 switch(CarType) /判断小车控制指令类型 case 1: /前进 /判断是否是前进 M1A=1; /将电机1正向端口置高 M2A=1; /将电机2正向端口置高 ShowPort=LedShowData1; /数码管显示前进状态 break; /退出判断 case 2: /后退 /判断是否是后退 M1B=1; /将电机1反向端口置高 M2B=1; /将电机2反向端口置高 ShowPort=LedShowData2; /数码管显示后退状态 RightLe
43、d=0; /将前方右侧指示灯置低(亮) LeftLed=0; /将前方左侧指示灯置低(亮) break; /退出判断 case 3: /左转 /判断是否是左转 M1B=1; /将电机1反向端口置高 M2A=1; /将电机2正向端口置高 ShowPort=LedShowData3; /数码管显示左转状态 LeftLed=0; /将前方左侧指示灯置低(亮) break; /退出判断 case 4: /右转 /判断是否是右转 M1A=1; /将电机1正向端口置高 M2B=1; /将电机2反向端口置高 ShowPort=LedShowData4; /数码管显示右转状态 RightLed=0; /将前方
44、右侧指示灯置低(亮) break; /退出判断 default: /默认情况下的判断 break; /直接退出判断 void Timer0_IR1() interrupt 1 using 3 /定义红外定时器子程序 TH0=0 xFF; /向定时器定时间存放器填入高八位值 TL0=0 x19; /向定时器定时间存放器填入低八位值 AddData+; /自增变量加1void Int1_IR1() interrupt 2 /定义红外接收中断子程序 TR1=0; /将定时/计数器1关闭 IRState=!IRState; /将红外接收指示灯状态取反 if(4=AddData) /0 /判断接收到的数
45、据是0 RecvData=RecvData | 0; /判断到0就将当前位写0 RecvData=RecvData 1; /将当前位向左移动1位 else if(8=AddData)/1 /判断接收到的数据是1 RecvData=RecvData | 1; /将当前位写1 RecvData=RecvData 1; /将当前位向左移动1位 CountData+; /将红外接收位计数器加1 if(CountData=8) /判断是否接收到8位数据 HeardData=RecvData; /是8位数据时,那么将数据暂存到高位变量中 else if(CountData=16) /判断是否接收到16位数
46、据 ET0=0; /关闭红外定时器0 EX1=0; /关闭红外外部中断1 TR1=1; /翻开定时/计数器1 AddData=0; /定时时间间隔变量清零 if(HeardData=226 | HeardData=112) /判断用户码是否正确 HeardData=RecvData; /取出接收到的低八位数据 switch(HeardData) /判断低八位数据的值以下那一位 case 32: /电源 /说明按下了电源键 ControlCar(8); /将小车停止 RunFlag=1; /将运行标志位置1 break; /返回 case 0: /1 /说明按下数字1键 ShowPort= Le
47、dShowData1; /数码管显示数字1 ControlCar(1); /将小车置于前进状态 break; /返回 case 8: /2 /说明按下了数字2键 ShowPort= LedShowData2; /数码管显示数字2 ControlCar(2); /将小车置于后退状态 break; /返回 case 4: /3 /说明按下了数字3键 ShowPort= LedShowData3; /数码管显示数字3 ControlCar(3); /将小车置于左转状态 break; /返回 case 12: /4 /说明按下了数字4键 ShowPort= LedShowData4; /数码管显示数字
48、4 ControlCar(4); /将小车置于右转状态 break; /返回 case 2: /5 /说明按下了数字5键 ShowPort= LedShowData5; /数码管显示数字5 break; /返回 case 10: /6 /说明按下了数字6键 ShowPort= LedShowData6; /数码管显示数字6 break; /返回 case 6: /7 /说明按下了数字7键 ShowPort= LedShowData7; /数码管显示数字7 break; /返回 case 14: /8 /说明按下了数字8键 ShowPort= LedShowData8; /数码管显示数字8 br
49、eak; /返回 case 64: /9 /说明按下了数字9键 ShowPort= LedShowData9; /数码管显示数字9 break; /返回 case 72: /0/30 /说明按下0/30键 ShowPort= LedShowData0; /数码管显示数字0 break; /返回 RecvData=0; /将接收到的数据清零 CountData=0; /将接收计数器清零 HeardData=0; /将接收上下数据变量清零 return; /返回 AddData=0; /将定时器计数器清零 ET0=1; /翻开定时器中断void ComBreak() interrupt 4 /定义
50、串口通信子程序unsigned char RecvData; /定义串口数据接收变量 if(RI=1) /判断是否接收数据 RecvData=SBUF; /将接收到的数据放入暂时变量 if(RecvData10) /判断接收到的数据是否小于10 ShowPort=LedShowDataRecvData;/将接收到的数据通过数码管显示出来 ControlCar(RecvData); /将串口数据置于小于状态 SBUF=RecvData; /向电脑返回当前接收到的数据 RI=0; /去除接收中断标志位 if(TI=1) /判断是否是发送中断 TI=0; /去除发送中断标志位 void main(v
51、oid) /主程序入口 bit ExeFlag=0; /定义可执行标志位变量 RecvData=0; /将接收变量数值初始化 CountData=0; /将计数器变量数值初始化 AddData=0; /将定时器计数器初始化 HeardData=0; /将上下计数器初始化 LedFlash=1000; /对闪灯数据进行初始化 TMOD=0 x01; /选择定时器0为两个16位定时器 TH0=0 xFF; /对定时器进行计数值进行初始化 TL0=0 x19; /同上,时间大约为25uS TR0=1; /同意开始定时器0 EX1=1; /同意开启外部中断1 IT1=1; /设定外部中断1为低边缘触发
52、类型 ET0=0; SCON=80; /设置串口模式为8位数据 TMOD=33; /设置定时/计数器模式 TH1=0 xFD; /给定时器1高八位初始化初值 TL1=0 xFD; /给定时器1低八位初始化初值 TR1=1; /开启定时器1 ES=1; /开启串口通信功能 REN=1; /开启接收中断标志 EA=1; /总中断开启 ControlCar(1); /将小车置于前进状态 ShowPort=LedShowData0; /数码管显示数字0 while(1) /程序主循环 while(LedFlash-) /闪灯总延时 if(RL1=0) /判断光敏电阻的状态 RightLed=1; /将
53、前方右侧指示灯点亮 LeftLed=1; /将前方左侧指示灯点亮 else /在光敏电阻为不通的状态下 RightLed=0; /将前方右侧指示灯熄灭 LeftLed=0; /将前方左侧指示灯熄灭 if(IR1=0) /判断延时期间是否有红外信号输入 ExeFlag=1; /将可执行标志位置1 if(S1=0) /判断是否有S1按下 ControlCar(8); /将小车置于停止状态 RunFlag=1; /改变小车运行状态标志位 S1State=!S1State; /改变S1按键标志位 goto NextRun; /跳转到NextRun标签 if(S2=0) /判断是否有S2按下 Contr
54、olCar(1); /将小车置于前进状态 RunFlag=0; /改变小车运行状态标志位 S2State=!S2State; /改变S2按键标志位 goto NextRun; /跳转到NextRun标签 FontIRState=FontIR; /前方红外指示灯显示正前方红外探头状态 LeftIRState=LeftIR; /左侧红外指示灯显示前方左侧红外探头状态 RightIRState=RightIR; /右侧红外指示灯显示前主右侧红外探头状态 if(FontIR=0 | LeftIR=1 | RightIR=1) /判断正前方,前左侧,前右侧红外探头状态 ControlCar(2); /改
55、变小车状态为后退 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) /判断
56、运行标志位 RunStopState=!RunStopState; /改变小车运行停止状态标志位 else RunStopState=1; /将运行停止状态标志位置1 LedFlash=1000; /运行闪动时间重设定 if(ExeFlag=0) /判断可执行标志位 EX1=1; /开启外部中断1 TR1=1; /开启定时/计数器1 ExeFlag=0; /可执行标志位置0 参考文献何立民.MCS-51单片机应用系统设计M. 北京航空航天大学出版社方佩敏.新编传感器原理应用与电路详解M. 电子工业出版社1998周秉功.继电器选型手册M. 机械工业出版社,19984 李仁.电器控制M. 机械工业
57、出版社,2002 5常斗南主编.可编程序控制器原理应用实验M.北京:机械工业出版社,19986 戴明宏主编.电器控制与PLC应用.M.北京:北京航空航天大学出版社,20077 黄净主编.电气控制与可编程控制器M.北京:机械工业出版社,20048 李向东主编.电器控制与PLCM.北京:机械工业出版社,2007 9 蔡美琴.MCS-51系列单片机系统设计及其应用M.高等教育出版社,2021.410 刘灿军.实用传感器M. 国防工业出版社,2004.14-1511 张万忠.?可编程控制器入门与应用实例?北京,中国电力出版社,200412 常斗南主编.可编程序控制器原理*应用*实验.北京,机械工业出版
58、社, 200513王质朴,吕运朋.MCS51单片机原理接口及应用 M. 北京理工大学出版社,2021.221-22214李广弟,单片机根底,北京:北京航空航天大学出版社,2001,566415 何希才,新型实用电子电路400例,电子工业出版社,2000年,606516 赵负图,传感器集成电路手册,第一版,化学工业出版社,2004,59059117 陈伯时,电力拖动自动控制系统,第二版,北京:机械工业出版社,2000年6月,12713018陈清泉,现代电动车、电机驱动及电力电子M.机械工业出版社,200519 Clark D W. The memory system of a high perf
59、ormance personal computer. Xeox Palo Alto Research Center, Tech Rep: CSL-81-1, 198120 MC88100 RSIC Microprocessor Users Manual (Second edition). Englewood Cliffs: Prentice Hall, 1990致谢四年的大学生活已接近尾声,历时三个多月的毕业设计也即将结束。在此我衷心对各位机电工程学院、其他教过我的老师、同学对我的指导和帮助表示感谢。在本次毕业设计过程中通过参考、查阅大量有关单片机方面的参考资料,请教各位老师有关单片机控制系统
60、设计制造方面的有关问题,特别是单片机控制系统设计在实际中可能遇到的具体问题,使我在这短短的时间里,对单片机这个领域的认识有了一个很大的提高。同时也使我对单片机自动控制系统设计设计的过程有了深刻的理解。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的开展打下了良好的根底。由于自身水平有限,设计中一定存在很多缺乏之处,敬请各位老师批评指正。再次感谢学院领导、缑亚楠老师的指导以及同学对我的帮助。 附件毕业学位论文结构与格式标准 毕业学位论文是一种严肃的科学研究文体,其逻辑结构与写作格式必须要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学校园活动方案
- 地税诵读活动方案
- 2025-2030中国农业科技应用现状与未来投资价值评估报告
- 大带线小活动方案
- 大昭寺贴金活动方案
- 地产答谢活动方案
- 大象巡游活动方案
- 高档时装行业行业风险投资发展分析及投资融资策略研究报告2025-2028版
- 全屋定制闭口合同装修设计与施工
- 茶园资产重组与股权承包合同
- 咖啡有关知识
- 医院感染管理制度培训
- 防风固沙造林施工承包合同
- 2024进户门、单元门、防火门采购及安装合同 标准版 模板
- 《工业园区物业服务》课件
- 新版中国食物成分表
- 团员发展纪实簿
- 机动车查验员(中级)职业鉴定理论考试题及答案
- 国开(贵州)2024年秋《地域文化(专)》形考任务1-2答案
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- 信创的基础知识培训课件
评论
0/150
提交评论