基于单片机的智能小车设计-毕业论文
湖南XXXXXXXXXXXXX学院
毕业论文(设计)
题 目:
作者姓名:
学 号:
专 业:
指导教师: 智能小车 xxxxxxxxx
2011 年 06 月
湖南XXXXXXXXXXXXX学院
毕业论文(设计)选题表
湖南XXXXXXXXXXXXX学院
毕业设计(论文)任务书
说明:此表一式两份,系部和学生各留存一份
湖南XXXXXXXXXXXXX学院
毕业设计(论文)开题报告
湖南XXXXXXXXXXXXX学院
毕业设计(论文)开题报告
摘 要
AT89C51单片机是一款八位单片机,他的易用性和多功能性受到了广大使用
者的好评。本系统以设计题目的要求为目的,采用AT89C51单片机为控制核心,
利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,
以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。整个
系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该
系统的硬件设计方法及测试结果分析。
在智能小车控制系统的设计中,以AT89C51为核心,用L293D驱动两个直流
电机,当产生信号驱动小车前进时,是通过寻迹模块里的红外对管是否寻到黑线
产生的电平信号通过LM393再返回到单片机,单片机根据程序设计的要求做出相
应的判断送给电机驱动模块,让小车来实现前进、左转、右转、停车等基本功能。
寻白线时,外部环境光线的强弱对小车的运动会产生很大的影响,基于此原因,
本实验中的寻迹是指在白色地板上寻黑线。寻迹是指通过红外发射管和接收管识
别路径。
采用的技术主要有:
(1) 通过编程来控制小车的速度;
(2) 传感器的有效应用;
(3) 新型显示芯片的采用;
该设计报告共分为五章:
第一章是智能小车总体概况。介绍了小车的功能及展示了小车模型。
第二章是系统要求。介绍了小车设计的要求及原理。详细阐述了各功能模块
的方案比较与论证,最后得出最终方案。
第三章是硬件实现及单元电路实现。详细阐述了各部分电路的设计,并给出
了原理图。
第四章是软件设计。介绍了设计思想、程序流程图及具体程序设计。
第五章是系统调试。介绍了调试软件WAVE ,以及软件调试过程;硬件测试
及测试仪器和设备等。
最后是参考文献和附录。
关键词: AT89C51单片机;光电传感器;PWM调速;电动小车
Smart cars design
the
AT89C51 microcontroller is one of eight, his versatility and
usability is the user high praise. This system to design for the purpose
of the topic request, AT89C51 microcontroller as control core, ultrasonic
sensor detection road barriers, the automatic control of electric car
obstacle-avoidance, speed, and speed, and can be automatically stop
recording time, mileage and speed, automatic tracing and light function.
The whole system of the circuit structure is simple, reliable performance.
The test results, this paper introduces the hardware design method of
system analysis and test results.
In the design of the control system of intelligent car, USES AT89C51
as the core, with L293D drive two dc motor driving car, when the signal
generation, is going through tracing module of the infrared tubes are
found by the black level signal generated LM393 single-chip
microcontroller, return again according to the requirement of design
procedure of judgment for motor driver module, let the car to achieve
progress, left, right, the basic function such as parking. Find the white
line, and the external environment of the strength of the light of sports
car produce very big effect, this based on the experiments of tracing
refers to the white striped floor found. Tracing is through infrared tubes
and receive tube recognition path.
Using the technology mainly include:
(1) through programming to control the speed of the car,
(2) sensor effective application,
(3) new display chip USES,
This design report is divided into five chapters:
The first chapter is intelligent car overview. Introduces the function
and the car show car model.
Chapter 2 is the system requirements. Introduces the design requirement
and the principle of car. Expounds the functional modules of the scheme
comparison and argumentation, the final solution.
The third chapter is hardware realization and unit circuit implementation.
Expounds each part of the circuit design, and gives the principle diagram.
Chapter four is a software design. Introduces the design idea and program
flow chart and design program.
The fifth chapter is debugging systems. Introduces the WAVE, and software
testing software debugging process, Hardware testing and testing
instruments and equipment, etc.
The references and appendix.
Keywords: AT89C51, photoelectric sensors, PWM control, electric cars
目 录
绪论..............................................................5
第一章 智能小车总体概况..........................................6
1.1 概况....................................................6
1.2 总体结构图..............................................6
第二章 系统方案设计..............................................7
2.1 方案论证................................................7
2.1.1 系统原理图..........................................7
2.1.2 路面情况检测方案的选择..............................8
2.1.3 电动机的选择........................................9
2.1.4 电动机驱动方案的选择................................9
2.1.5 路程检测方案的选择..................................9
2.1.6 障碍物探测方案的选择................................10
2.1.7 供电电源方案的选择..................................10
第三章 系统硬件电路设计..........................................11
3.1 系统硬件设计...........................................11
3.1.1 路面黑线检测设计与实现..............................11
3.1.2 电动机驱动电路设计与实现............................11
3.1.3 车轮检速与路程计算..................................13
3.1.4 红外避障电路........................................15
3.1.5 电源电路............................................15
第四章 主控芯片介绍.............................................16
4.1.1 AT89C51主控芯片介绍.................................16
4.1.2 电动机驱动芯片L293D.................................18
4.1.3 串口电路芯片MAX232..................................19
第五章 软件设计................................................19
5.1.1 软件设计思想......................................19
5.1.2 主程序设计........................................20
5.1.3 显示子程序设计.....................................24
5.1.4 避障子程序设计.....................................25
5.1.5 寻迹模块软件程序设计...............................26
第六章 系统调试与结论..........................................29
6.1 硬件调试.............................................29
6.1.1 测试方法与仪器....................................29
6.1.2 软件程序调试......................................30
6.1.3 测试经验总结......................................31
参考文献........................................................31
致谢............................................................31
附录A .........................................................33
附录B..........................................................34
绪 论
随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。设计的智能电动小车应该能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、准确定位停车。
根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加装光电、红外线、超声波传感器及金属探测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用MCS-51系列中的AT89C51单片机。以AT89C51为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。AT89C51是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表。
第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,还包括了Philips﹑Siemens﹑ADM﹑Fujutsu﹑OKI﹑Harria-Metra﹑ATMEL等公司以89C51为核心推出的
大量各具特色﹑与89C51兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/D﹑PWM﹑PCA(可编程计数器阵列)﹑WDT(监视定时器)﹑高速I/O口﹑计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列8xC592单片机引入了具有较强功能的设备间网络系统总线----CAN(Controller Area Network BUS).
新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。
本设计就采用了比较先进的89C51为控制核心,89C51采用CHOMS工艺,功耗很低。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景;在考古方面也应用到了超声波传感器进行检测。所以本设计与实际相结合,现实意义更强。 第一章 智能小车总体概况
1.1概况
智能小车以AT89C51为核心,经焊接相关芯片用电路板自制而成,通过I/O口检测信号,输出信号到L293D,从而驱动两个直流电机控制其前进、停止、左转、右转。检测信号则为三组红外发射和接收管,一组黑线时输出高电平,白线时输出低电平。另两组黑线时输出低电平,白线时输出高电平。
智能小车的控制器使用ATMEL公司的AT89C51单片机。程序设计上使用了时钟中断来控制小车行驶的状态检测,使用外部中断来记录小车行驶的距离,软件上设置了一个状态寄存器,来记录小车运行的状态,小车的运行为延黑线行驶状态,避障碍物状态等。
在黑线上行驶时,控制器检测红外传感器,如果小车行驶偏离方向,则控制小车转向轮进行转向。
在避障状态时,控制器检测红外传感器,判断前方是否有障碍物,如果有障碍物则控制汽车进行转向,躲避障碍物。
1.2总体结构图
单片机为小车的控制核心,电路由黑线检测模块,电机驱动模块,声光指示模块,红外线探测模块,方向控制模块,等几部分构成(金属探测、超声波测距及显示模块为发挥部分)系统框图如图所示:
系统框图
本设计采用两个小直流电机安装在小车后轮上带动小车运行,前轮只用一个方向轮方便小车在运行过程中的转向,结构图如下所示:
小车结构图
第二章 系统设计
2.1 方案论证 2.1.1 系统原理图
简易智能电动车采用80C51单片机进行智能控制。开始由手动启动小车,并复位,当经过规定的起始黑线,由超声波传感器和红外光电传感器检测,通过单片机控制小车开始记数显示并避障、调速;系统的自动避障功能通过超声波传感器正前方检测和红外光电传感器左右侧检测,由单片机控制实现;在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以提高系统的静动态性能;采用动态共阴显示行驶时间和里程。 系统原理图如图所示:
系统原理图
2.1.2 路面情况检测方案的选择
脉冲调制的反射式红外发射接收器。由于采用该有交流分量的调制信号,则可大幅度减少外界干扰;另外红外发射接受管的最大工作电流取决于平均电流,如果采用占空比小的调制信号,在平均电流不变的情况下,瞬时电流很大
(50~100mA),则大大提高了信噪比。并且其反映灵敏,外围电路也很简单。电路如下图所示:
2.1.3 电动机的选择
采用普通直流电机。直流电动机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转;能满足各种不同的特殊运行要求。 2.1.4 电动机驱动方案的选择
如下图所示采用四个大功率晶体管组成H桥电路,四个大功率晶体管分为
两组,交替导通和截止,用单片机控制使之工作在开关状态,进而控制电动机的运行。该控制电路由于四个大功率晶体管只工作在饱和与截止状态下,效率非常高,并且大功率晶体管开关的速度很快,稳定性也极强,是一种广泛采用的电路。
H桥控电路 2.1.5 路程检测方案的选择
采用光电码盘进行检测。光电码盘测距基本原理如图三所示。旋轴转动,带动码盘转动,码盘上刻有许多狭缝,码盘转动时发射光透过狭缝被接受元件接受。用计数器对接受到的信号进行计数。用这种方案能很精确的算出小车已经走过的距离。
2.1.6 障碍物探测方案的选择
脉冲调制的反射式红外发射接收器。由于采用该有交流分量的调制信号,则可大幅度减少外界干扰;另外红外发射接受管的最大工作电流取决与平均电流,如果采用占空比小的调制信号,在平均电流不变的情况下,瞬时电流很大(50~100mA),则大大提高了信噪比。并且其反映灵敏,外围电路也很简单。
超声波检测电路 2.1.7 供电电源方案的选择
采用单一电源供电。电源直接给电动机供电,因电动机启动瞬间电流较大,会造成电源电压波动,因而控制与检测部分电路通过集成稳压块供电。其供电电路比较简单,
第三章 系统硬件电路设计
3.1 系统硬件设计
3.1.1 路面黑线检测设计与实现
当检测到黑线时,红外光管接收到反射回来的红外光,其输出立即发生高低电平跳变,该信号经放大整形后送单片机分析处理。为保证小车延黑线行驶,采用了两个检测器并行排列。在小车行走过程中,若向左方向偏离黑线,则右侧的探头就会检测到黑线,把信号传给单片机。,单片机控制车头向右转。路面黑线检测电路如下图所示:
3.1.2 电动机驱动电路设计与实现
由四个大功率晶体管组成H 桥电路组成,四个晶体管分为两组,交替导通和截止,以保证小车完成前进、后退、左传、右转等运行动作。
电机驱动电路
3.1.3 车轮检速与路程计算
测距原理:将光栅安装在电机轴上,当电机转动时,光栅也随之转动,同时安装在光栅一侧的红外发光二极管点亮,在光栅的另一侧设有红外三极管,用于接收红外发光二极管发出的红外线信号。由于光栅随电机高速转动,则红外线三极管接收到的就是一系列脉冲信号。将该信号传输到AT89C51单片机的内部计数器计数,根据预先实测的数据换算关系即可计算出电动车的行车距离。
在车轴上固定有一个沟槽状的断式红外开关,共有18个沟槽,用尺测得小车后轮周长,在单片机控制时,每检测到一个脉冲,认为小车前进了一定距离。由光电装置检测得到的波形不是很理想,因而对其进行了放大和施密特整形后送
入单片机计数。放大和施密特整形电路如图八所示。其中40106为施密特触发器。 由于红外检测具有反应速度快、定位精度高,可靠性强以及可见光传感器所不能比拟的优点,故采用红外光电码盘测速方案。具体电路如下所示:
行车距离检测电路
红外测距仪由测距轮,遮光盘,红外光电耦合器及凹槽型支架组成的。测长轮的周长为记数的单位,最好取有效值为单一的数值(如本设计中采用0.1米),精度根据电动车控制的需要确定。测距轮安装在车轮上,这样能使记数值准确一些。
遮光盘有一缺口,盘下方的凹形物为槽型光电耦合器,其两端高出部分的里面分别装有红外发射管和红外接收管。遮光盘在凹槽中转动时,缺口进入凹槽时,
红外线可以通过,缺
口离开凹槽红外线被阻挡。由此可见,测距轮每转一周,红外光接收管均能接收到一个脉冲信号经过整形器后送入计数器或直接送入单片机中。
为实现可逆记数功能,我们在测距仪中并列放置了两个槽型光电耦合器,遮光盘先后通过凹槽可产生两个脉冲信号。根据两个脉冲信号发生的先后顺序与两个光电耦合器的位置关系,即可计算出玩具车的行驶方向(前进或后退)。
遮光盘及槽型光电耦合器均安装在不透光的盒子里,以避免外界光线的干扰,使电路不能正常工作。
3.1.4 红外避障电路
红外发射二极管发射的红外线遇到障碍物后,被反射回来,接收管接收到红外线,信号被LM358放大后再经LM567锁相环后输出低电平,并送给单片机进行处理。
5 红外避障电路
3.1.5 电源电路
为了保证电压的稳定性,特别制作了稳压电路。使用7805三端稳压集成块,使得电压保持+5V不变。LED灯进行指示。开关的作用是便于为最小系统板上的程序的烧写提供电源。
vcc
稳压电源电路 4.1.1 AT89C51主控芯片介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 1. 主要特性 ·与MCS-51 兼容
·4K字节可编程闪烁存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 2.管脚说明: VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
4.1.2 电动机驱动芯片L293D
L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:低速平稳性好等。L293D通过内部逻辑生成使能信号。H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转.
4.1.3 串口电路芯片MAX232
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。
内部结构基本可分三个部分:
第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。15脚GND、16脚VCC(+5v)。
第五章 软件设计
5.1 软件设计思想
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法的主要优点是:
1、 单个模块比起一个完整的程序易编写及调试;
2、 模块可以共存,一个模块可以被多个任务在不同条件下调用;
3、 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序﹑定时子程序、避障子程序﹑中断子程序显示子程序﹑调速子程序﹑算法子程序构成。
5.1.1 主程序设计
主程序清单如下:
limiw equ 30h ;厘米位
miao equ 31h ;秒位
fenmi equ 32h ;分米位
fmiao equ 33h ;分秒位
meter equ 34h ;米位
fenzh equ 35h ;分位
point equ 36h ;小数点位
shimi equ 37h ;十米位
shifn equ 38h ;十分位
sudu equ 39h ;速度控制 jishk equ 3ah ;记时开始
zhond equ 3bh
zhodu equ 3ch
zhon equ 3eh
maicho equ 3fh
jinweb equ 40h
bhcs equ 41h
dpan equ 42h
fenchu equ 43h
fencun equ 44h
pand equ 45h
fenmc equ 51h
org 0000h
ajmp main
org 000bh
ajmp st0
org 001bh
ajmp st1
org 0100h
main:
mov limiw,#00h
mov miao,#00h
mov fenmi,#00h
mov fmiao,#00h
mov meter,#00h
mov fenzh,#00h
mov point,#0bh
mov shimi,#00h
mov shifn,#00h
mov jishk,#00h
mov zhond,#00h
mov zhodu,#00h
mov zhon,#00h
mov maicho,#00h mov jinweb,#03h mov bhcs,#00h
mov sp,#6fh
mov tmod,#21h
mov th0,#3ch
mov tl0,#0b0h
mov th1,#9ch
mov tl1,#9ch
setb ea
setb et0
setb et1
mov p1,#0aah
acall xianshi
软件流程图如下所示:
5.1.3 显示子程序设计 程序清单如下:
xianshi:
mov p1,#0aah
mov p1,#0cch
mov a,limiw
swap a
add a,miao
mov p1,a
nop
nop
mov p1,#0ddh
mov a,fenmi
swap a
add a,fmiao
mov p1,a
nop
nop
mov p1,#0eeh
mov a,#0b0h
add a,point
mov p1,a
nop
nop
mov p1,#0eeh
mov a,meter
swap a
add a,fenzh
mov p1,a
nop
nop
mov p1,#0ffh
mov a,shimi
swap a
add a,shifn
mov p1,a
ret
5.1.4 避障子程序设计 程序清单如下:
zhangai:
jb 25h,stop
jnb 22h,youzhuan jnb 23h,youzhuan jnb 24h,zuozhuan jnb 26h,zuozhuan ajmp jiance
zuozhuan:
clr p0.5
clr p0.4
mov sudu,#05h
acall delaa
setb p0.4
setb p0.5
mov sudu,#07h
ajmp jiance
youzhuan:
clr p0.6
clr p0.7
mov sudu,#05h
acall delaa
setb p0.7
setb p0.6
mov sudu,#07h
ajmp jiance
stop:
acall delay
jnb 25h,zhangai clr tr0
mov a,fenmi
mov fenmc,a
mov a,#02h
add a,fenmc
mov fenmc,a
here: cjne a,fenmi,here
clr tr1
setb p2.6
acall delaa
setb p2.7
ajmp $
5.1.5 寻迹模块软件程序设计 程序清单:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP LEFT
ORG 0013H
LJMP RIGHT
MAIN:
MOV SP,#60H
MOV P3,#0FFH
LCALL DELAY5S
MOV IE,#85H
LOOP: JB P1.4,ZX
JB P1.5,YX
QIANJIN:ANL P1,#0F0H
ORL P1,#0AH
LCALL DELAY1
ANL P1,#0F0H
ORL P1,#00H
LCALL DELAY1
AJMP LOOP
ZX: JB P1.5,QIANJIN
ANL P1,#0F0H
ORL P1,#09H
LCALL DELAY1
ANL P1,#0F0H
LCALL DELAY1
AJMP LOOP
YX: JB P1.4,QIANJIN
ANL P1,#0F0H
ORL P1,#06H
LCALL DELAY1
ANL P1,#0F0H
LCALL DELAY1
AJMP LOOP
LEFT: PUSH ACC
PUSH PSW
ANL P1,#0F0H
ORL P1,#08H
LCALL DELAY1
JNB P3.2,$
ANL P1,#0F0H
ORL P1,#0AH
POP PSW
POP ACC
RETI
RIGHT: PUSH ACC
PUSH PSW
ANL P1,#0F0H
ORL P1,#02H
LCALL DELAY1
JNB P3.3,$
ANL P1,#0F0H
ORL P1,#0AH
POP PSW
POP ACC
RETI
DELAY5S: MOV R1,#28
LP3: MOV R2,#0F0H
LP4: MOV R3,#0F0H
DJNZ R3,$
DJNZ R2,LP4
DJNZ R1,LP3
RET
DELAY1: MOV R4,#14
OP1: MOV R5,#0F9H
OP: NOP
END NOP DJNZ R5,OP DJNZ R4,OP1 RET
第六章 系统调试与结论
6.1 硬件调试
1、测试仪器
测试仪器包括秒表、数字万用表、信号发生器、示波器、MCS51仿真机、直流稳压电源等。
2、测试方法
数字万用表主要用来测试分立元件的电阻、压降、漏电流、截止/导通状态等参数;
信号发生器与示波器用于测试各光电传感器信号的接收与传输;
MCS51仿真机用于测试软件;
直流稳压电源在测试期间为各待测系统供电;
秒表用于产品测试,按照任务书的基本要求对制成的电动车进行产品测试。 测试数据及测试结果分析:
⑴ 计时精度分析 计时系统采用了新型显示芯片。理论上的误差不到1秒/年。 ⑵ 测距精度分析 测速系统采用了电机轴光电码盘检测技术。电机轴与车轮轴之间采用了齿轮箱二级减速,变比1/16。车轮周长135mm,光电码盘与电机轴安装在一起,电机轴每一转产生2个脉冲,车轮每转产生32个脉冲,理论测量精
度可达135mm/32=4.22mm
⑶ 定位精度分析 本设计采用实际测量与软件补偿技术,理论上可使定位精度提高到误差
6.1.2 软件程序调试
调试的主要方法和技巧
在使用WAVE软件时,调试的方法和技巧最为重要,不同的情况采用不同的调试方法,有助于程序的实现。在设计过程中显示运行结果一般用全速调试,调试时主要使用了跟踪调试、断点调试。
( 1 )跟踪调试
跟踪应用程序用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,WAVE提供了跟踪型单步和通过型单步。
跟踪型单步仅执行一条源语句程序,有利于观察变量。但是,如果调用函数,则进入函数中,在执行函数的第一条源泉语句行前停止。有利于用在延时子程序中。
通过跟踪型单步仅执行一条源语句程序,然后又停止。
( 2 )断点调试
如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大多数调试程序通过使用断点中止程序执行。如果用断点调试,由比较容易观察出程序变量的改变及程序运行的结果。
( 3 )查看变量
WAVE软件提供了以下几种方法以变量进行查看:观察窗口、数据窗口(程序空间窗口、内部数据窗口、外部数据窗口。)通过添加窗口菜单可以将用户希望观察的变量添加到观察窗口及数据窗口观察。在设计过程中常用观察窗口观察程序中的变量,修改程序中的错误。
( 4 )更改数值
如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的内容是很有交往的方法以确保该值在正确范围内不会产生错误。WAVE软件提供一系列更改变量数值的方法,以便用户能检查程序对整个变量值范围的反
应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据。
6.1.3 测试经验总结
1.在调试程序之前,先检查各模块间的连接是否连接无误,有无断路现象。
2.调试程序时,首先用全速运行的方法进行总体调试,以便快速发现程序中存在问题的部分。然后设置断点调试。主要针对有问题的程序调试,更快地确定出现问题的位置。最后,利用单步调试方法,分析程序中出现的问题,解决问题,使程序正常运行。
3.在多次调试不成功的基础上,考虑思路是否正确,如果确定思路无误,考虑两个问题:一是程序中是否有笔误的地方;二是运行软件是否正常。
参考文献:
1 何立民,单片机应用系统设计,北京:航天航空大学出版社,2~5,46~50
2 李广弟,单片机基础,北京:北京航空航天大学出版社,2001,56~64
3 何希才,新型实用电子电路400例,电子工业出版社,2000年,60~65
4 赵负图,传感器集成电路手册,第一版,化学工业出版社,2004,590~591
5 陈伯时,电力拖动自动控制系统,第二版,北京:机械工业出版社,2000年6月,127~130
6 张毅刚,彭喜元,新编MCS-51单片机应用设计,第一版,哈尔滨工业大学出版社,2003,25~27,411~417
致 谢
历时一个月的设计过程中,我首先边查资料,边在实验室焊接小车的线路板。在焊接过程中,我感觉到即使是一个简单的电路,要想很轻松的焊好,也不是很容易的事情。有时是“虚焊”的原因,有时可能是阻值选错。在焊接显示电路时,我就错将680欧的电阻焊成了6.8千欧。这使我深深感受到理论与实际间的差距。通过这样的设计,提高了我的动手能力。每天在实验室除了焊接线路板,还可以上机编程,使我软件调试知识也提高了。本次毕业设计已经告一段落。经过自己
不断的搜索努力以及曾老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,曾老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学两年来的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这一个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。
由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。