您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页基于单片机的倒车系统设计

基于单片机的倒车系统设计

来源:好走旅游网


毕业论文(设计)

基于单片机的倒车系统设计

学 生 姓 名: 王彤 指专所

导业在

教名学

师: 姜凤娇 副教授 称: 电子信息工程 院: 信息工程学院

2015 年 6 月

目录

摘 要 .................................................................................................................. I Abstract ............................................................................................................. II 第一章 前言 ..................................................................................................... 1

1.1研究目的和意义 ........................................................................................ 1 1.2国内外发展现状 ........................................................................................ 1 1.3本文研究的主要内容 ................................................................................. 1

第二章 系统硬件电路的设计 ......................................................................... 2

2.1系统总体方案设计 .................................................................................... 2 2.2系统相关器件的介绍 ................................................................................. 2 2.3系统硬件方案的设计 ................................................................................ 12

第三章 系统软件方案的设计 ........................................................................ 17

3.1主程序设计及其流程图 ............................................................................ 17 3.2超声波测距的计算 .................................................................................. 18 3.3程序的主要算法 ....................................................................................... 20

第四章 系统误差分析及解决方案 ................................................................ 25

4.1影响超声波探测的因素 ............................................................................ 25 4.2超声波测距的误差分析 ............................................................................ 25 4.3误差解决方案 .......................................................................................... 26

结论 .................................................................................................................. 29 致谢 .................................................................................................................. 30 参考文献 .......................................................................................................... 31 附录 .................................................................................................................. 32

大连海洋大学本科毕业论文(设计) 摘要 摘 要

随着交通运输业进入一个兴盛的时代,以及社会经济技术水平不断地提高,汽车的数量日益增加,呈现出大幅增长的趋势。但是就在汽车的日益普及的同时,在倒车以及停车的过程中出现的事故也越来越多。为了减少事故的发生,具有反应灵敏、安全可靠以及成本较低的汽车防撞预警系统成为人们日益迫切的需求。在这种情况下,在倒车以及停车具有有利作用的倒车报警器就产生了。

在本文中主要阐述了以单片机为平台设计的脉冲反射形式的利用超声波进行距离测量和红外传感循迹的系统。此设计中采用的核心单片机芯片为STCC52,发挥超声波和红外传感的优点,综合STCC52单片机与利用超声波测量距离和红外传感循迹的模块。介绍了利用超声波设计的传感器,整个电路分为了主程序以及很多的子程序模块构成,其中子程序模块包括预置、发射、接收、显示以及报警等。论文中阐述了用到的软件的构造,以及功能的完成需要经过编程来实现。其中滤波、放大以及整形等方面的电路都属于硬件电路。对系统的干扰原因以及产生的误差进行分析,最后得出解决问题的方法。

这个系统对于软件与硬件的结合合理,具有较强的抗干扰性能以及较好的实时性能等优势,对系统进行升级扩展之后就能够在汽车倒车时完成报警。

关键字:超声波传感器,红外传感器,单片机,测量距离,汽车倒车系统,报警

I

大连海洋大学本科毕业论文(设计) Abstract Abstract

In order to reduce the happening of the accident, a responsive, safe and reliable and low cost of automotive anti-collision warning system become increasingly pressing needs. In this case, has favorable effect in reverse and parking of the reverse alarm is generated.

In this article mainly expounds the design with the single chip processor as the platform of the pulse reflection in the form of an ultrasonic distance measurement and infrared sensor tracking system. Used in the design of the core for STCC52 single-chip microcomputer, play advantage of the ultrasonic and infrared sensors, integrated STCC52 microcontroller and the use of ultrasonic distance measurement and infrared sensor tracking module. Introduces the design of using ultrasonic sensors, the whole circuit is divided into the main program and a lot of subroutine modules, subroutine modules including presets, launch, receive, display and alarm, etc. The thesis expounds the use of software structure, and function of programming to implement the complete needed. Including filtering, amplifying and shaping circuit belong to hardware circuit. Disturbance to the system reason and the error is analyzed, finally it is concluded that the method to solve the problem.

The system for the combination of software and hardware is reasonable, with strong anti-interference performance and good real-time performance and other advantages, the system upgrade expansion when you will be able to reverse the car after complete report to the police.

Key words:ultrasonic sensors, infrared sensor, single chip microcomputer, the measured distance,

car reversing system, call the police

II

大连海洋大学本科毕业论文(设计) 第一章 前言 第一章 前言

1.1研究目的和意义

随着交通运输业进入一个兴盛的时代,以及社会经济技术水平不断地提高,汽车的数量日益增加,呈现出大幅增长的趋势。但是就在汽车的日益普及的同时,在倒车以及停车的过程中出现的事故也越来越多。为了减少事故的发生,具有反应灵敏、安全可靠以及成本较低的汽车防撞预警系统成为人们日益迫切的需求。在测量距离时使用较为广泛的就是利用超声波测量距离,这种方法较多的用在汽车倒车的防止碰撞的报警系统中以及汽车的左右前后防撞的距离的测量。在车辆倒车时,根据反射的性质,超声波能够对车辆后面的物体的位置进行检测,并通过蜂鸣器以及指示灯将具体的距离以及位置的信息向驾驶员进行传递,这样就能够实现倒车的安全性。

根据调查显示,在中国因为车后的盲区而产生的交通安全问题占的比重约为30%,在美国比重约为20%,因此为了将车辆的安全系数提升,将车后的盲区范围缩小,交通管理部门提出用户安装的后视镜应该曲率多视野大,尽管这样事故的数目仍然没有被有效的降低。由于车后盲区具有较大的潜在性的不安全因素,这就意味着人的生命财产安全就会受到威胁,而且也严重伤害人的精神。初学者以及女司机在倒车时经受的压力就会更大。由此看来,解决这些问题的最好的办法就是将超声波倒车报警系统设计出来进行应用。

1.2国内外发展现状

随着社会的发展,辅助司机倒车的装置在技术方面经过了数次的改进,生产的这几代的产品无论从价格、性能上,还是外在构造上都具有独特的方面,当前用到的比较广泛系统包括倒车后视系统、超声波测量距离倒车报警系统以及车载监测系统等。在刚起步的阶段,只有奔驰以及宝马等高档的车辆才会采用具有倒车报警系统的装置。随着近几年汽车行业的兴旺发展,倒车报警系统在一些中高档的车辆中实现了普及。甚至在国内中档主流车型中几乎都配套倒车报警系统装置,而且很多汽车厂也纷纷开始配套生产倒车报警系统产品。

毫无质疑的是在车辆市场中,倒车报警系统的应用将越来越普及。而且智能化的轨迹报警系统已经成为当前市场发展的方向。

1.3本文研究的主要内容

在本文中主要阐述以单片机为平台设计的脉冲反射形式的利用超声波进行距离测量和红外传感探测循迹的系统。此设计中采用的核心单片机芯片为STCC52,发挥超声波的优点,综合利用STCC52单片机与超声波测量距离和红外传感器探测循迹的系统,使得小车实现倒车和循迹的功能。

1

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 第二章 系统硬件电路的设计

2.1系统总体方案设计

本设计采用STCC52单片机控制系统、电机驱动电路系统、超声波检测系统、红外循迹系统、液晶显示系统和电源系统。探头将超声波发射出来采用的控制电路为发射电路,超声波在碰到物体时会反射,接收探头接收返回的超声波,按照脉冲对其中的时间差进行推算,利用STCC52单片机中处理器将与物体之间的距离计算出来,然后计算出的距离会在LCD1602液晶显示屏上显示出来,预先输出一个最小距离,当距离小于了这个最小距离,小车就会自动发声报警。单片机实时检测红外循迹系统在黑线跑道上的状态,并自主调整小车的方向。在循迹的跑道上检测前方的距离,当前方距离小于20厘米时,小车避开障碍物往回继续循迹。小车把前方障碍物的距离显示在LCD1602液晶上,该设计还采用L298驱动芯片驱动小车的行走。

系统总体框图如图2-1所示:

图2-1 总体结构框图

电源部分 循迹模块 超声波检测 MCU L298驱动 减速电机 液晶显示

2.2系统相关器件的介绍

2.2.1 STCC52单片机

在本设计的系统中占有最重要位置的是STCC52单片机。单片机STCC52是由 STC公司生产出来的,它是一种性能相当高的CMOS 8位微控制器,具有功耗较低、性能较好等优势,并且在Flash存储器中可编程系统有8k之大。它的内核采用是MCS-51内核,并且在此基础上进行了一定的改善,使其拥有了一些传统的51单片机不能实现的性能。单芯片中包含的CPU为8位以及可编程Flash,这样使得STCC52就能将更多灵活度较高以及效果显著的方法提供给许多的嵌入式的控制使用体系。

2

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 它具有如下的性能:512字节的RAM,8k字节的Flash,看门狗式的定时器,I/O 口线为32位,4KBEEPROM,16 位定时器/计数器3个,MAX810式复位电路,外部中断包含4个,7向量的具有4级中断结构的有1个(与传统的51单片机的5量级2级中断构造实现兼容),全双工式的串行口。

而且STCX52的静态逻辑操作可以实现到0Hz之低,在省电的模式下可以兼容软件的使用。非工作形式下,CPU也处于非工作状态,但是定时器/计数器、中断、RAM以及串口可以继续进行;在掉电保护状态下,可以保留RAM中的内容,冻结振荡器,单片机中的所有结构都将停止工作,这种状态维持到硬件复位或者出现下一个中断。

STCC52单片机的基本组成框图如图2-2所示:

XTAL2时钟电路XTAL1RAM128BSFR 21个定时个/计数器2VccCPUROM/EPROM/Flash 4KB总线控制中断系统5个中断源2个优先级串行口全双工1个4个并行口VssRSTEAPSENALEP0P1P2P3

图2-2 STCC52单片机结构图

STCC52单片机的引脚如图2-3所示:

3

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计

图2-3 STCC52单片机引脚图

STCC52单片机部分引脚的介绍: 1.时钟电路引脚XTAL1 和XTAL2:

XTAL2(18 脚):接外部晶体和微调电容的一端;在片内它是振荡电路中反相放大器的输出端,晶体固有频率就是振荡电路的频率。如果需用外部时钟电路时,该引脚输入外部时钟脉冲。振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出来检查。

XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。 2.控制信号引脚RST,ALE,PSEN 和EA:

RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。输入端保持备用电源的输入端。当主电源VCC 发生故障,降低到低电平规定值时,将+5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。 ALE/PROG(30 脚):地址锁存允许信号端。当8051 上电正常工作后,ALE 引脚不断向外输出正脉冲信号,此频率为振荡器频率的1/6。CPU 访问片外存储器时,ALE 输出信号作为锁存低8 位地址的控制信号。平时不访问片外存储器时,ALE 端也以振荡频率的1/6 固定输出正脉冲,因而ALE 信号可以用作对外输出时钟或定时信号。如果想确定8051/8031 芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出。如有脉冲信号输出,则8051/8031 基本上是好的。ALE 端的负载驱动能力为8个LS 型TTL(低功耗甚高速TTL)负载。此引脚的第二功能PROG 在对片内带有4KB EPROM 的8751 编程写入(固化程序)时,作为编程脉冲输入端。 PSEN(29 脚):程序存储允许输出信号端。在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引肢接EPROM 的OE 端(见后面几章任何一个小系统硬件

4

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 图)。PSEN 端有效,即允许读出EPROM/ROM 中的指令码。PSEN 端同样可驱动8个LS 型TTL 负载。要检查一个8051/8031 小系统上电后CPU 能否正常到EPROM/ROM 中读取指令码,也可用示波器看PSEN 端有无脉冲输出。如有则说明基本上工作正常。

EA/VPP(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA 引脚接高电平时,CPU只访问片内EPROM/ROM并执行内部程序存储器中的指令,但是当PC(程序计数器)的值超过0FFFH(对8751/8051 为4K)时,将自动转去执行片外程序存储器内的程序。当输入信号EA 引脚接低电平(接地)时,CPU 只访问外部EPROM/ROM 并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无片内ROM 的8031 或8032,需外扩EPROM,此时必须将EA 引脚接地。此引脚的第二功能是VPP 是对8751 片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。 3.输入/输出端口P0/P1/P2/P3:

P0口(P0.0~P0.7,39~32 脚):P0口是一个漏极开路的8 位准双向I/O口。作为漏极开路的输出端口,每位能驱动8个LS 型TTL 负载。当P0 口作为输入口使用时,应先向口锁存器(地址80H)写入全1,此时P0 口的全部引脚浮空,可作为高阻抗输入。作输入口使用时要先写1,这就是准双向口的含义。在CPU 访问片外存储器时,P0口分时提供低8 位地址和8 位数据的复用总线。在此期间,P0口内部上拉电阻有效。

P1口(P1.0~P1.7,1~8 脚):P1口是一个带内部上拉电阻的8 位准双向I/O口。P1口每位能驱动4个LS 型TTL 负载。在P1口作为输入口使用时,应先向P1口锁存地址(90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平。

P2口(P2.0~P2.7,21~28 脚):P2口是一个带内部上拉电阻的8 位准双向I/O口。P口每位能驱动4个LS 型TTL 负载。在访问片外EPROM/RAM 时,它输出高8 位地址。

P3口(P3.0~P3.7,10~17 脚):P3口是一个带内部上拉电阻的8 位准双向I/O口。P3口每位能驱动4个LS型TTL负载。P3口与其它I/O 端口有很大的区别,它的每个引脚都有第二功能,如下:

P3.0:(RXD)串行数据接收。 P3.1:(RXD)串行数据发送。 P3.2:(INT0#)外部中断0输入。 P3.3:(INT1#)外部中断1输入。

P3.4:(T0)定时/计数器0的外部计数输入。 P3.5:(T1)定时/计数器1的外部计数输入。 P3.6:(WR#)外部数据存储器写选通。 P3.7:(RD#)外部数据存储器读选通。 2.2.2 超声波传感器

声波在频率达到20kHz以上时就被称为超声波,它具有较好的方向性,较强的穿透力,在集中的声音能量的获取方面较为简单,在水中也能有较远的传播,在距离测量,速度测量,焊接,清洗消毒杀菌等方面均有应用。可以广泛的应用在工业、军事以及医学方面。其频率的最

5

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 小值大概与人的听觉的最大值相等,这就是它被称为超声波的原因。

超声波具有如下的特性:(1)传播中具有较强的方向性,聚集能量比较简单。(2)各种介质中都可以实现超声波的传输,传输的距离可以达到很远。(3)传播声音的介质和超声波可以互相促进,能够较为简单的实现信息的传递。(4)超声波传播的能量很高。(5)干涉、反射、共振以及叠加等状况在超声波中都会在超声波下生成。(6)当超声波的传播介质为液体时,在界面上会有比较大的冲击以及空化等情况的产生。

超声波传感器产生所依据的就是超声波所具有的特点。超声波作为一种机械波,其振动频率比声波的频率要高,其生成是在电压激励的情况下经过换能晶片实现的。它有较高的频率,较短的波长以及存在的绕射状况较小,尤其是具有较好的方向性,可以变成射线实现定点的传输。在介质为固体或者液体时,超声波具有较强的穿透能力,在不能透过阳光的固体中,可以实现几十米的穿透。在遇到分界面或者杂质的情况时,超声波会发生明显的反射形成回波,在遇到移动的物体时会有多普勒效应发生。广泛应用在工业、国防、生物医学等方面。

超声波传感器具有频率特性、阻抗特性以及指向特性等方面的基本特性。 (1) 频率特性

图2-4 超声波传感器的频率特性

图2-4是超声波发射传感器的声压能级和灵敏度。超声波发射传感器的中心频率为40kHz,在此处超声波发射传感器生成最强的超声波的能量,因此我们可以说在此处超声波发射传感器生成了最高的超声声压能量级。随着向两侧的发展,声压的能级会有很大的衰减。所以在超声波发射传感器的应用中使用的交流电压应该靠近中间频率。

并且超声波在发射传感器频率特性上相似于接收传感器。频率为40kHz的曲线上是最为突起的地方,而且是输出幅度最大的电信号,因此可以看出具有最高灵敏度的频率值就是40kHz。超声波传感器在选用频率上具有较好的特性。超声波接收传感器在频率特征方面的曲线与输出端的外置电阻R存在的影响较大,在具有很大的R的情况下,频率具有高翘共振的特性,而且在此时的共振频率下具有很高的灵敏度。但在R很小的情况下,就会具有很平滑的频率特征,并且带宽较宽,此时灵敏度会减小。

(2) 指向特性

6

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 在超声波传感器中用到的压电晶片实际上就是个小圆片,表层的任何一个点都能够看作是振荡源,辐射出的波是半球形的,产生的这些是无指向性的子波。然而在远离超声波传感器的任何点的声压都需要将子波进行叠加得到总和,实际上就是衍射。如图2-5所示:

图2-5 超声波传感器的指向特性

超声波传感器的指向图的组成部分为一个主瓣以及一些副瓣,在物理方面所指的意思就是电压在0时达到最大,声压随着角度的增加而不断降低。此传感器所对应的大部分是40o到80o之间的角度。

(3) 阻抗特性

当输出达到最大时所产生的串联谐振频率就是发送传感器最常用的工作频率,具有最高灵敏度的接收的并联谐振频率就是接收传感器的最佳的工作频率。实验验证之后得到,发送传感器与接收传感器工作的频率基本上是一样的。如图2-6所示:

o

图2-6 超声波传感器的阻抗特性

因此超声波传感器在实际中使用均在靠近谐振频率的范围内。接收超声波的头的型号需要与发射头的型号相对应,最重要的是具有相同的谐振频率,不然就会没有办法达到共振,接收情况就会受到干扰,也有可能会接收失败。而且,超声波传感器的驱动需要较高的电压,是电压型的,具有较高的电阻,较小的驱动电流。

超声波传感器工作时依据的原理。在弹性介质中,超声波是一种机械型振荡,包括的两种形式分别为横波(横向振荡)和纵波(纵向振荡)。超声波的传播介质可以是固体、液体或者气体,

7

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 但是具有不一样的传播速度。而且超声波中存在反射以及折射的现象,其能量在传递时呈现下降趋势。超声波传播介质是空气时,具有比较低的频率,大概为几十kHz,但其介质是液体或者固体时,就具有较高的频率。其下降的速度在空气中大于固体和液体中,因此传递的距离也比液体和固体近。磁致伸缩的镍铁铝合金和电致伸缩的压电晶体,这两种材料是超声波传感器用到的最重要的材料。超声波传感器由压电晶体构成的是可逆的,它生成超声波的原理是实现电能到机械能之间的转化,当超声波接收到时,也能实现带能的转化,因此分为接收器和发送器两类。有的超声波传感器可以同时当作接收和发送。在此次设计中阐述的超声波传感器是小型的,在接收和发送之间存在着很小的不同,40-45kHz以及23-25kHz是它的工作频率,在空气中传递是其主要的应用。这种传感器可以应用在距离的测量、防盗以及遥控等方面。超声波传感器的构成主要包括接收传感器、接收传感器、电源以及控制模块。接收传感器的构成部分为放大电路与陶瓷振子换能器;发送传感器的构成包括陶瓷振子换能器与发送器;其中换能器实现波的接收从而发出机械振动,完成电能的转换,并将其当作接收器输出,因此实现检测发出的超声波。

运用超声波完成距离测量的原理:利用超声波进行测量的电路中,脉冲方波会由输出端进行输出,接收超声波同发射超声波之间的时间差就是脉冲方波的宽度,脉冲的宽度与其被测的距离的远近呈正相关的关系,并且距离也正比于脉冲的数量。利用超声波测量距离具有往返时间检测、声波幅值检测以及相位检测等方法。其中声波幅值检测法中反射波会干扰声波检测的结果,相位检测的方法虽然具有较高的准确度,但其检测的距离是一定的。所以在本次设计里我采用了超声波往返时间检测法,其测量原理图如图2-7所示:

图2-7 超声波测距原理图

8

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 发射40kHz脉冲接收到的信号信号经过接收电路后tT1T0图2-8 超声波时序图

如图2-8所示,通过计算超声波往返时间是本设计中用到的方法。在T0时刻单片机会有方波的发射,而且会开启定时器进行计时,在回波被接收到时,会在单片机的端口有一个负向的跳变,单片机中的中断部分就会被响应,此时定时器的计数就会中断。通过对时间差的推算,介质中超声波的传递时间t就会获得,这样距离障碍物的长度就可以通过计算得到。 2.2.3 L298电机驱动芯片

本设计选用了L298电机驱动芯片,如图2-9和2-10所示。ST公司生产的L298芯片,它的驱动电机具有的电压较高以及电流较大的特点。此芯片具有以下的特征:(1)工作时需要较高的电压,其中46V是可以到达的最高的电压。(2)电流的输出较大,瞬时电流的峰值能够达到3A,连续的工作电流能够到2A。(3)其中还包括电压较高以及电流较大的H桥的全桥形式的驱动器2个,它能够实现对步进机、直流电动机、感性负载以及继电器等的驱动。(4)控制电平信号时应用的逻辑是标准TTL。(5)包含的使能控制端为2个,禁止或者准许设备工作不会受到输入信号的干扰。(6)包含的一个输入端为逻辑电源,在低压的状况下就可以实现内在逻辑电路的工作。(7)能够将检测电路进行外置,控制电路对反馈的变化量进行接收。

9

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 图2-9 L298

图2-10 L298

2.2.4 红外传感器

光电对管中的RPR220型光电探测器是反射型的,砷化镓的红外线LED是它的发射器,具有的灵敏度较高的平面为硅的光电三极管是它的接收器。RPR220用到的封装形式是DIP4封装,这种封装有以下几方面的特性:灵敏度可以通过塑料透镜来提升;受到的离散光的干扰会因内在的可见光的过滤器而降低;结构较为集中,体积较小;在LED发射的光被反射时,三极管实现导通低电平输出。这个电路较为简单,具有稳定的工作状态。因此,本设计采用RPR220型光电对管来做循迹传感器。 2.2.5 LCD1602液晶显示器

如图2-11所示,LCD1602液晶显示器就是我们通常说的1602字符型的显示器,这是一种液晶模块,特点是点阵型并且可以对数字、字母以及符号进行表示。这种显示器是由多个5X11、

1 0

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 5X7的点阵字符形成的,屏幕上显示出的一个字符都是由一个点阵字符实现的。但是,这种显示器有一个缺点,图形并不能在它上面很好的显示。这是由于每行和每点阵字符位都是有间隔的,它们就具有了行间距、字符间距的用处。LCD1602的每一行具有16个字符液晶模块并且具有两行,通常的表示方法为16X2。

图2-11 LCD1602液晶显示器

液晶显示器应用在生活中的很多方面,常见的电子器件以及家用电器中我们都能够看到,例如,万用表、计算器、电子表,电视机,电脑显示屏等等,我们看到的显示的东西主要是专用符号、图形、数字。LED数码管、发光管、液晶显示器一般是在单片机的人机交流界面里的。其中发光管和LED数码管是比较常用的,软硬件都比较简单。而LCD1602液晶显示器的优点很多,主要有丰富的显示内容、较低的功耗、较小的体积、较轻的重量及较薄的厚度等等,所以,在很多方面都有得到充分的应用,尤其是在应用系统的功耗低以及小而精的仪表中。因此,本设计采用这种液晶显示器。

11

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 2.3系统硬件方案的设计

2.3.1 主控制系统设计

图2-12 单片主控电路

主控制系统电路如图2-12所示,单片机主控制系统是由单片机、复位电路、时钟电路构成。因为STCC52 单片机的工作电压范围是4V-5.5V,所以通常给单片机外接5V的直流电源,连接方式为单片机中的40脚VCC接 +5V,而20脚VSS接电源地端。

复位电路,就是利用把电路恢复到起始的时候,从而就能够知道单片机开始时的工作设定,这样就能够对单片机的启动完成了。接下来就是启动过程,接通电源后,单片机就会产生复位信号。若外界环境影响比较严重时,运行中的单片机会出现程序上的错误,这时候就可以通过复位按钮进行纠正,程序就会自动重新开始执行。一般设备上有自动复位和外部按键手动复位,单片机的复位过程是在时钟电路中进行的,给出2个机器周期的高电平并且由RESET端供给。一是在给电路通电时马上进行复位操作;二是在必要时可以手动操作;三是根据程序或者电路运行的需要自动地进行。复位电路大都比较简单,只有电阻和电容组合,再复杂点就有三极等配合程序来进行了。该设计采用的是外部手动按键复位电路,需要接上拉电阻,从而提高输出高电平的值。

时钟电路就是单片机的心脏,它控制单片机的工作节奏。时钟电路为振荡电路,它会输出一个正弦波的信号给单片机。是向单片机提供一个正弦波信号作为基准,决定了单片机的执行速度。作为片内振荡器的反向放大器具有XTAL1和XTAL2。在时钟电路中,一个机器周期由

1 2

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 12个振荡周期组成,若有频率12MHz的石英晶体振荡器接在外电路中时,振荡周期就得1/12us。 2.3,2 超声波测距系统设计

图2-13 超声波模块实物

如图2-13所示,超声波测距系统选择的是技术成熟的HC-SR04,这种技术能够进行近距离的感应,而且不需要触及就能实现,最短距离为2cm,最长可以到40cm,准确度为3mm。这个模块主要包含了三个方面,分别为接收装置,发射装置以及控制系统。

这一系统主要的依据是:根据IO口TRIG的工作来进行距离的测量,把高电平的时间最低保持在10us,这时,该模块就会主动的传出8个在40kHz的方形波,来确定有没有数据的传送。当存在数据时,ECHO就会发生作用,产生高电平,而这种电平所耗费的时间就是超声波进行一个来回的记录。因此我们就能达到远近的计算,间隔为高电平耗费时间与声音传播速度乘积的二分之一。其中VCC 供5V 电源,GND 为地线,TRIG 触发控制信号输入,ECHO 回响信号输出等四支线。STCC52单片机传送出40kHz的信号,通过放大处理随后进行反射,然后作为输入信号传送到芯片,锁相环对其进行锁定,这时芯片的中断发挥作用,得到经历的时间,通过一系列的过程之后,将在数码显示器上得到结果。

图2-14 超声波测距系统框图

1 3

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 对检测到的超声波系统最大可测量距离的影响主要有以下几点,分别为:信号的变化,障碍物的自身特性,障碍物表面的光滑程度以及接收装置的灵敏度。最小可测量距离的大小受接收装置的能力影响。 2.3.3 循迹系统电路设计

图2-15 循迹原理图

如图2-15所示,对于实验设计依据的理论进行了详细的讲解,主要依据的是循迹的理论,小车在前行的过程中,主要在一张带有黑线的白色纸张上,由于两种颜色对于光的反射条件不同,就能在前行的过程中准确的知道哪种是“路线”。因此要想实现这种原理就用到了红外线,根据红外线进行发射,不仅容易实现,同时也得到了准确的结果。

在实验中采取红外线的方法,主要依据的是它的反射特性,将色彩能够准确的辨别出来。

1 4

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计 就像上文中提到的那样,在放出红外线的过程中,由于小车是在带有黑线的白纸上前行的,如果打在白纸上,就会发生漫反射,这样就能够收到信号;如果打在黑线上就不一样了,由于黑色可以吸收红外线,那么就不存在反射,此时就得到了区分,这两种结果的对比是通过LM339来实现的,这样就完成了判断。 2.3.4 液晶显示系统电路设计

液晶显示系统采用LCD1602液晶显示器,它能够在液晶上清晰的显示字符和数字。液晶的命令操作脚是RS、RW、EN接在单片机的P3^5、P3^6、P3^7脚。数据脚D0~D7分别接单片机的P1口。其电路图如图2-16所示

图2-16液晶显示电路

2.3.5 电机驱动系统的设计

电机主要是靠电路实现驱动的,通常情况下都会利用H桥式,L298N自身就可以完成这种电路的设计,不必外界电路辅助,因此采用了L298N,从系统接收对于小车的转动情况的信号来实现。驱动电路原理图如图2-15所示,L298N的5、7、10、12四个引脚接到单片机上,单片机通过编程就可以实现两个直流电机的正反转。

1 5

大连海洋大学本科毕业论文(设计) 第二章 系统硬件电路的设计

图2-17电机驱动电路

2.3.6 电源部分的设计

电源系统的设计主要采用7805芯片,使用7805芯片搭建电路的优点是简单、实用。因为78系列在形成稳压电源的过程中,不需要过多的外部元件的辅助,而且其本身对于电流也有一定的检测和维护,在散热方面,也存在一定的系统,因此安全问题有了最大的保障,同时所需资金较低,易于接受,并且能够完全满足小车单片机控制系统和L298N芯片的逻辑供电的供电需要,所以本设计采用该电源系统。7805芯片有3个引脚,分别为输入IN端、输出OUT端和接地GND端,通常情况下可以提供1.5A的电流,在散热足够的情况下可以提供大于1.5A的电流。7805芯片的输入电压可以为9V、12V、15V不等,输出电压稳定在5V,误差不超过正负0.2V。基于这样的情况,再结合电机的工作电压,选取了6节9V干电池作为7805芯片的输入电源,电源部分电路图如图2-18所示:

图2-18 电源接口电路

1 6

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计

第三章 系统软件方案的设计

3.1主程序设计及其流程图 循迹流程图如图所示:

开始

单片机初始化 读出前方的距离

显示当前检测的距离

Y N 小车调整角度回到跑道上 循迹是否调整

N Y 是否有障碍物 外小车避开障碍物

结束

图3-1循迹流程图

由主程序、超声波发生程序、超声波接收程序及显示程序构成了超声波测量距离的软件设计。因为其程序中涉及到复杂的计算,精细的计算程序运行时间,所以我采用C语言编程来设计本程序。

主程序是对系统环境的初始化,设计数为定时器0,定时为定时器1,EA为置位总中断允许位。主程序运行后,进行定时的测量距离判断,当程序中cl==1,小车完成一次测量,在程序的设计中,超声波测量距离的频度是2次/秒。在整个程序中,系统对测量结果进行循环显示。调用超声波测距的子程,单片机产生六到八个频率为38.46kHz超声波脉冲,释放在超声波发射

1 7

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 头上,当超声波发射头发送完超声波后,内部计时器T0被启动开始计时。有时超声波会被直接从发射头传送到接收头上,这样会造成直射波触发。为了避免这一现象,我们让单片机延时1.5 -2ms的时间(这个值被称为盲区值,以至于超声波测距仪会有一个最小可测距离的原因),然后再运行对单片机P3.7脚的电平判断程序。当检测到P3.7脚的电平由高电平转为低电平时,立即停止T0计时。由于本次设计所用到的单片机的晶振是12 MHz,所以计时器每计一个数所用的时间是1us。当接收成功的标志位被超声波测距子程序检测到时,计算计数器T0中的数(超声波来回所用的时间),于是障碍物与测距仪之间的距离就被计算出来了。

判断是否存在阻碍根据的是超声波传感器传出的信号。如果存在阻碍,那么信号碰到障碍物就会反射回去,但是在实际过程中我们需要提前设定一个时间,若超过了这个时间范围,反射信号不会被系统检测到,然后在此处系统又将会重新发送一个超声波信号;若在这个时间内,反射信号被系统检测到了,把信号在空气中的传播速度和接收与发射之间的时间差相乘,就能得到障碍物与小车之间的距离。

3.2超声波测距的计算

这种理论的依据是根据超声波传感器发出的超声波,在遇到阻碍时所反射回的信号,再根据在这段时间内所经历的时间差值,得到这个障碍物与超声波传感器的远近,这种远近所依据的公式为:l=s/2=ct/2。

在上面的公式中,障碍物与传感器的间距用l来表示,信号在传送和接收这两段时间内走的路程为s,在温度为20℃时声音的传播速度为c,在这个过程中完成的时间为t。在发送出超声波的同时还要将时间设定装置进行计时,利用定时器的计数功能记录超声波发射的时间和收到反射波的所具有的时间差。当收到超声波反射信号时,接收电路的输出端就会产生一个负跳变,并且在INT0或INT1端产生一个中断请求信号,即单片机响应外部中断请求,执行外部中断服务子程序,然后读取时间差,计算小车与障碍物之间的距离。超声波测距的过程可以用如图3-2所示的流程图来表示。

1 8

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计

测量标志 启动定时器 初始化 开始 =1 =0 超声波测距

Y 距离>上限值 N Y 距离<盲区值 显示值= 设定断码转换

显示值= N 测量断码转换 显示 N 距离<报警值

Y 报警输出 图3-2超声波测距程序流程图

1 9

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 3.3程序的主要算法

/********************循迹模块IO口定义*********************************/ sbit xun_ll = P0^4; //从左到右第1个 sbit xun_l = P0^3; //从左到右第2个 sbit xun_z = P0^2; //从左到右第3个 sbit xun_r = P0^1; //从左到右第4个 sbit xun_rr = P0^0; //从左到右第5个

/********************LN298电机驱动IO口定义***************************/ sbit qu_ll = P2^0; //左边电机控制IN1 sbit qu_zl = P2^1; //左边电机控制IN2 sbit qu_zr = P2^2; //右边电机控制IN1 sbit qu_rr = P2^3; //右边电机控制IN2 #define RS_H RS = 1 #define RS_L RS = 0

#define RW_H RW = 1 #define RW_L RW = 0

#define EN_H EN = 1 #define EN_L EN = 0

#define READ_DATA P1

void DelayMs(unsigned int z) //1ms延时函数 {

unsigned int x; for(;z>0;z--)

for(x=110;x>0;x--); }

void LCDWriteCom(unsigned char com) { RS_L; RW_L; READ_DATA = com; EN_H; DelayMs(5); EN_L; }

void LCDWriteData(unsigned char dat) { RS_H; RW_L; READ_DATA = dat;

2 0

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 EN_H; DelayMs(5); EN_L; }

/**********************小车后退函数*************************************/ d go() { qu_ll = 1; qu_zl =0; qu_zr =0; qu_rr =1; }

/**********************小车前进函数************************************/ void back() {

qu_ll =0; qu_zl =1; qu_zr =1; qu_rr =0; }

/**********************小车左转函数 只有一个轮子动********************/ void left() { qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 1; }

/**********************左转函数 左边轮子后退 右边轮子前进*************/ void left_s() { qu_ll = 0; qu_zl = 1; qu_zr = 0; qu_rr = 1; }

/**********************小车停下函数***********************************/ void stop() { qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 0; }

2 1

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 /**********************小车右转函数 只有一个轮子动********************/ void right() { qu_ll = 1; qu_zl = 0; qu_zr = 0; qu_rr = 0; }

/*********************右转函数 左边轮子前进 右边轮子后退**************/ void right_s() { qu_ll = 1; qu_zl = 0; qu_zr = 1; qu_rr = 0; }

/***********************小车左转90度*********************************/ void left_s_90_while() //小车向左转90度 {

go(); //前进一小会让小车转90度时刚好让黑线在小车的中间 DelayMs(120); left_s(); //左转90度注意这个延时不能太长,只要能让寻迹模块中间的传感离开黑线就好 DelayMs(180);

che_90_180_break(L); }

/**********************小车右转90度*********************************/ void right_s_90_while() // {

go(); //前进一小会让小车转90度时刚好让黑线在小车的中间 DelayMs(120); right_s(); //左转90度注意这个延时不能太长,只要能让寻迹模块中间的传感离开黑线就好 DelayMs(180);

che_90_180_break(R); }

// 白线为 1 黑线为 0 void xunnji() {

if((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_r==1) && (xun_rr==1)) { go(); //小车后退 }

if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun_r==0) && (xun_rr==0))

2 2

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 { stop(); }

if(((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_rr==1)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_rr==1)) || ((xun_ll==1) && (xun_z==1) && (xun_rr==0)) ||

((xun_ll==1) && (xun_l==1) && (xun_z==1) && ( (xun_rr==0))) { right(); }

if(((xun_ll==1) && (xun_l==0) && (xun_r==1) && (xun_rr==1)) || ((xun_ll==0) && (xun_l==0) && (xun_z==1) && (xun_rr==1)) ||

((xun_ll==0) && (xun_l==1) && && (xun_r==1) && (xun_rr==1))) { left(); }

if((xun_ll==1) && (xun_z==0) && (xun_rr==0)) { go(); DelayMs(1); if((xun_ll==1) && (xun_z==0)&& (xun_rr==0)) { right_s_90_while(); } }

if((xun_ll==0) && (xun_l==0) && (xun_rr==1)) { go(); DelayMs(1); if((xun_ll==0) && (xun_l==0) && (xun_rr==1)) { left_s_90_while(); } } }

void main(void) {

int Dis = 0; InitTimer(); Init_1602(); CsbInit();

Dis = GetDis(); while(1)

2 3

大连海洋大学本科毕业论文(设计) 第三章 系统软件方面的设计 { xunnji();

if(bTime_500Ms) { bTime_500Ms = 0 ; Dis = GetDis(); Lcd1602Printf(2,3,\"Dis = %4.2f\ }

}

}

if(Dis < 24) { right_s(); DelayMs(500); } 2 4

大连海洋大学本科毕业论文(设计) 第四章 系统误差分析及解决方案

第四章 系统误差分析及解决方案

4.1影响超声波探测的因素

在使用超声波传感器的过程中,发射和接受都利用的是这样的装置。通常情况下超声波的频率为40kHz。因此得到的是障碍物与小车的距离。但是毕竟一个超声波传感器不能传到所有的区域,其探测的范围是很有限的,有些阻挡物又被其他设备遮盖了,而在这种情况下是不是仍继续能够检测到,就跟下面所述的因素有关:

(1) 根据反射的理论我们可以得到这样的信息,入射角和反射角是相等的,但是这种反射是不是可以回到发射装置中是不确定的,主要还是得看障碍物的表面与传播的角度。

(2) 障碍物与传播角度的不同,同样也对强度有一定的影响。

(3) 在超声波发生反射的过程中,由于阻挡层的差异使得发射的多少也不同,有的物体会吸收,而有的会全部反射。这些都是与阻挡层本身的特性分不开的,对于相对柔软、含有缝隙的障碍物在检测的过程中更不容易被发现。

(4) 空气也可以对实验造成一定的影响,因此在其他条件都一致的情况下,间隔越大,超声波在发射和反射中的衰减越大,障碍物也就越不容易被发现。

综上所述,影响超声波探测的主要几个因素就是:角度、大小、表面材质和距离。 因此,归纳出了几种会对实验造成巨大影响的不利因素: (1)在草坪上前进或者在道路凹凸不定的情况下。 (2)阻挡物为比较尖锐的情况。

(3)在柔软的物质或者极易吸收波的情况下。

(4)在相同频率(40 KHz)下有其他杂音的混入,如重金属,强度较高的气体排放,汽车的轰鸣在正对传感器的范围内。

(5)在发射装置的外部有其他物品。 (6)一些类似于金属网和细线等小物件。

4.2超声波测距的误差分析

根据超声波测距公式L=c•t/2,可知测距的误差是由超声波的温度、传播速度和测量距离传播的时间引起的。 4.2.1 温度误差

由于超声波也是一种声波,其声速与温度有关,如表3-1所示,列出了几种不同温度下的声速。在测量时,如果温度变化不大,则可认为声速是基本不变的。

2 5

大连海洋大学本科毕业论文(设计) 第四章 系统误差分析及解决方案

表4-1超声波波速与温度的关系表 温度(℃) 声速(m/s)

-30 312

-20 320

-10 326

0 322

10 337

20 345

30 350

100 388

阻挡物与传感器的远近计算:S=V/2,V表示的是速度,T表示的是时间间距。从表4-1可以得到在温度不一致的情况下,超声波传播的速度也相差很大,相距最大的速度达到了70m/s。由此就可以得到很大的误差。 4.2.2 时间误差

在实验的过程中,当进行距离测试的时候要达到一定的要求,在误差低于1mm的情况下,如果将声速记为340m/s,而且不仅在空气中的损失,那么得到的距离的误差s△t<(0.001/340),相当于2.907ms。

如果不记超声波在空气中传播的损失,而且得到的时间差值达到足够的精度,那么就会把误差控制在1mm的范围之内。但是如果想要达到这种标准,那么我们就要把在传播中遇到的各种情况也作为参考。下面举例说明,超声波在常温下(18℃)的传播速度为340m/s,而在高出12℃的情况下(30℃)是350m/s,12℃的温度差别造成速度差别为10m/s。如果在这种温度下以常温的速度来进行计算的话,若距离相差100m,那么误差就会达到5m之高,即使是相距1m的距离也会达到误差为5mm。 4.2.3 回波检测对时间测量的影响

超声波在反射的过程中,在遇到接收装置时,是以最先接收到的为基准记录的,为了防止中间存在扰乱信号,就会设定门限值。当接收的包络线大于设定值时,记录为准确的达到时间,这里所得到的数据有一个相对的错后,如果这时的信噪比也相对较小,那么得到的误差也会相对较大。对接收到的尽心进行进一步的研究,当在收到信号的瞬间,最先接到的包络线呈现出e的关系增加,并且在第9个信号传播到达的时候关系达到最大值,第3个为最值的3/4,所以我们可以得到一种适合门限的措施。通常在外界环境没有特殊变换的情况下,我们选用40kHz的波作为传输信号,那么在第9个信号到达时经过了9/40 kHz=0.225ms;如果间距为一米或是两米的范围内,可以每隔16ms就发射一次,占空比为1/8。以8次为一个序列,而时间差为32ms,以第一次发射的最大值作为一个准则,而以这个数据的3/4记做门限值,得到t1,因而得到了接收的时间为t=t1-2.2/40kHz=t1-55×10-6,采用这种方法得到的结果比较准确,排出了其他因素的影响,因而在实验中采取这样的方法。

4.3误差解决方案

在具体实验的过程中,一些不确定的情况以及空气状况对精度都有一定的影响,因此得到

2 6

大连海洋大学本科毕业论文(设计) 第四章 系统误差分析及解决方案 的结果并不是完全准确的,多多少少都会存在一些偏差即误差,因此就要选择更好的措施来降低误差的产生。

针对温度对系统的影响,采用温度补偿装置,能够最大程度的降低对系统的影响。但是环境的不确定性又使得传输信号在这种情况下产生了巨大的误差,因此在外界环境复杂的情况下找出原有信号就成为了减小误差、提高精度的重要措施。 4.3.1 温度补偿

超声波在空气中进行传播时,其速度会受到很多因素的影响,比如温度和压强等,但这两种情况下,前者会产生更大的影响,所以我们就要寻求一种方法来弥补这一影响。在这里,通常情况下我们利用温度补偿来实现。

在进行实验的过程中外界的温度是不断地悄悄地进行变化的,过程相对比较缓慢,所以在原有的基础上增添一个AD590。它的作用就是对温度进行补偿,它的电压经过模数转换之后再传递到芯片,芯片在作出反应的情况下会对传送过来的信号进行处理,检测出当时情况下的速度,经过这种方法就把温度的变化减少的最小。AD590具有很高的线性度,同时不以电压为传输,所以不会因导线长短而受到干扰。如果相距的距离较大的时候,传播途径上的温度是不均匀的,难以测出其温度分布,为了消除影响可以在电路中添加自动校准装置。这种需要在距离探头相应距离的情况下加一个反射装置,也必须在反射装置附近要一定的接收信号。但是又必须让大多数的发射信号准确的通过,使得能够接收到信息。加入了这样的装置后就会使得一方面有信号由反射装置反射回来,达到校准的目的,由此得到的结果更加精确。 4.3.2 提高计时精度,减少时间量化误差

要想减少时间的量化误差,那么在进行设计的过程中,最好的选择就是直接利用芯片内部的技术装置,因为这种装置的计数频率相对较大,与晶振的频率进行比较的话,只能达到十二分之一的水平。同样举个例子进行说明,如果把晶振频率假设为6MHz,那么相应的技术频率就为0.5MHz,这时得到的误差的值为0.68mm;如果将两个数据分别变为12MHz、1MHz,那么得到的误差为0.34mm,除去这种方法,利用设计的其他装置,那么就在实验中引起芯片的晶振就能够以芯片为基准,由此误差也会变弱。 4.3.3 时间增益补偿电路

当超声波在空气中进行传播的过程中,随着传播距离的增加声强会进行减弱,即衰减。导致这种衰减现象的发生在于声速的自身扩散,在声波进行传递的过程中,由于一些反射或者散射也会导致这种衰减现象。但是这种现象的发生不会使能量的总数减少,相应的只是偏离了预先设定的路线。我们将信号原始的声音强度设为I0,传播了x的距离,上述过程的进行,使得声强最终得到了I,就可以得到这样的方法I=I0e-xα(α为空气衰减系数)。

通过上面的叙述以及最终的计算得到,超声波在空气中传输时,传播距离越远,到达时的

2 7

大连海洋大学本科毕业论文(设计) 第四章 系统误差分析及解决方案 总能量越少。由于介质中的影响不同,回波脉冲的声音程度也有差异,因此到达的也不一致,这种就造成了一定的误差。通常情况下接收信号上都设计有比较器,将这种信号与一个预先设定的信号进行对比,通常我们将其进行整形处理,最后得到方波;而这种间隔的远近对于误差的产生也有很大的影响。

时间增益补偿电路是放大电路的一种,其倍数与时间有关,呈指数关系。在进行研究的情况下,增益控制系统通常采取数字电位器,根据单片机本身的特性,把补偿数据应用在电位器上,由此就对超声波的衰减状态进行了控制,达到了时间增益补偿的效果。这种设计的实现相比其他的来讲比较容易,而且能够随着实验的进行做相应的改变,可以全面的发挥单片机自身的性能。 4.3.4 小波去噪

在进行实验的过程中,接收到的信号中经常掺杂很多的杂质,超过了原有的信号,这就造成了相应的误差的产生。研究过程中通常采取的方法就是小波去噪法,把得到的回波信号进行处理,并且精确地找出传播时间,进而得到精确的传播距离。这种方法的实现从根本上讲就是对接收波进行过滤,以得到准确的数据和滤波。这种方法最初对这种夹杂杂质的波进行小波变换,接着在对不同情况下进行参数提取,剔除掉干扰,然后再进行还原操作,最终得到了原始信号。通常我们常用的有以下四种方法:小波变换阀值去噪、小波分解与重构法去噪、平移不变量小波去噪以及小波变换模极大值法去噪。

杂质在各个尺度上都会对信号造成一定的干扰,但是我们要得到的信号只存在于相对较大的参数中,我们只对这样的信号进行小波变换,得到的结果更能将最初的信号还原出来,由此可以得到小波变换的实施能够在相应的数据中实现。将进行变换完成的信号系数做一些特殊处理,如消除、置零、缩小幅度、阀化等,就可以将杂质信息剥离出来,最终把得到的信号进行还原,就完成了消除噪音的目的,得到了较为精确的信号。

2 8

大连海洋大学本科毕业论文(设计) 结论

结论

我的毕业设计主要是利用STCC52单片机,设计一个倒车防撞循迹报警系统,这个系统具有的功能很多,在设计的过程中对这些功能的控制具有一定的难度,并且它具有很多的优点,主要可以在性能上、安全上、精度上、技术上等等都具有很强大优势,应用性比较高。对于这次设计,我还有一些地方由于一些原因的影响,并没有很好的完成,主要实现了测距循迹报警这三个功能。此次设计最终要实现的目标是超声波测距仪不仅能够产生超声波并且可以完成波的发送和接收,以及红外传感器能够探测路径实现循迹,从而实现在LCD上显示的测量距离。

在设计的过程中,我进行了大量的资料查找,并且结合学习到的关于单片机和超声波的知识,在导师的指导下对这个系统进行了设计,对课题要求也基本上完成了。但是,在本次设计中,我还有很多的不足的地方,由于知识的欠缺,在实验上不能达到很好的设计,这就使得器件在运用上显得比较粗燥,而且技术上的叙述也达不到特别精准、具体。

超声波测距仪的软件设计主要由主程序、超声波测距程序、循迹程序及显示程序组成。众所周知,C语言程序有利于实现较为复杂的算法,加之汇编语言程序具有比较高的效率,而且能够很容易的精细计算程序运行的时间,因为本设计的程序既有较为复杂的计算(计算距离时),又要求精细的计算程序运行的时间(超声波测距时),所以本设计对于控制程序采用了C语言和汇编语言的混合编程。但是由于汇编语言比较难,实现起来不是很容易,所以本设计基本都采用了C语言来实现所有功能。

本次毕业设计的完成,对我起到了一个很大的帮助,从中我学到了很多东西,对软件的编程,对硬件的焊接制作,以及单片机的一些功能都有了一定的认识。这使我认识到了只学习书本上的知识是远远不够的,因为书本大多都是理论概述的东西,很难再书本上体会到实践的内涵,所以我们要结合书本上的理论知识很好的运用到实践中,但是在理论与实践的结合过程中我们会有遇到很多的问题,需要考虑的东西也很多,因此我们必须要经过一些测试与验证才能得出结果。通过本次的毕业设计,我更加深信实践才是验证真理的唯一方法,而且在硬件的焊接制作中,动手能力也得到了提高。最后总结出最重要的一点就是,要充分认识到只有把理论与实践相结合,才能做好每一件事情。

2 9

大连海洋大学本科毕业论文(设计) 致谢

致谢

首先,要感谢我的导师姜凤娇老师在毕业设计中给予我了细心的指导和严格的要求,也感谢本专业的其他老师在毕业设计期间所给予的帮助。在我的毕业论文写作期间,各位老师给我提供了各种专业知识上的指导和技术,如果没有您们这样的帮助与支持,我不会这么顺利的完成这次的毕业设计,所以借此机会,我向您们表示由衷的感谢。同时还要感谢在毕业设计期间院实验室提供给我的优越的实验条件,以便我能够更好的完成本次的毕业设计。

接着,我要感谢和我一起做毕业设计的同学们。在毕业设计的短短3个月里,是你们给我提出了很多宝贵的意见,给了我相当多的帮助与支持,在此也真诚的谢谢你们。同时,我还要感谢我寝室的同学们和身边的朋友们,在毕业设计期间给予我很多帮助和照顾。正是在这样一个团结友爱、互帮互助的环境中,以及在他们的督促与启发中,才有了我今天小小的收获。

最后,我要深深地感谢我的家人,正是他们含辛茹苦地把我养育成人,在生活和学习上给予了我无尽的爱、理解与支持,才使我时时刻刻都充满着信心与勇气,不断克服成长路上的种种困难,不断前进不断成长,顺顺利利的完成了大学的学习和生活。

还有许许多多给予我学业上鼓励和帮助的朋友们,虽然无法一一列举了,但是在此表示忠心地感谢。

3 0

大连海洋大学本科毕业论文(设计) 参考文献

参考文献

[1] 韦穗林.基于单片机的倒车防撞预警系统设计和实现[J]. 广西水利电力职业技术学院学报, 2009.

[2] 曹双贵.汽车倒车防撞自动测距报警系统设计[D]. 淮海工学院, 2010. [3] 胡汉才.单片机原理及接口技术[M]. 北京: 清华大学出版社, 2003. [4] 孙蕙芊.单片机项目设计教程[M]. 北京: 电子工业出版社, 2009. [5] 袁锡全.近代超声原理及应用[M]. 南京: 南京大学出版社, 1996. [6] 何希才.传感器及其应用电路[M]. 北京: 电子工业出版社, 2001.

[7] 彭为, 黄科.单片机典型系统设计实例精讲[M].北京: 电子工业出版社, 2006. [8] 林申茂.8051单片机彻底研究[M]. 北京: 人民邮电出版社, 2004 [9]. 张谦琳.超声波检测原理和方法[M]. 北京: 中国科技大学出版社, 1993.

[10] 曹卫芳.基于MCS-51系列单片机的通用控制模块的研究[D].山东科技大学,2005. [11] 唐颖.单片机原理与应用及C51程序设计[M].北京: 北京大学出版社,2008.

[12] 李华.MCU-51系列单片机实用接口技术[M]. 北京: 北京航空航天大学出版社, 1993. [13] Han-Way Huang. Embedded System Design with C8051 [M]. New York : Thomson Engineering,2008.

[14] rotor S,ZHANG G X. Geometric Error Measurement and Compensation of Machines [M].Annals of the CIRP. 1995: 599-609

[15] Olton W. Instrumentation process measurement. Longman Scientific Technical [M]. 1991:3—372

3 1

大连海洋大学本科毕业论文(设计) 附录

附录

#include //单片机头文件 #include #include #include

#include //va_list 的头文件 #define uchar unsigned char #define uint unsigned int sbit RS = P3^5; sbit RW = P3^6; sbit EN = P3^7;

sbit RX = P3^3; //超声波接收 sbit TX = P3^2; //超声波发射 static bit flag = 0;

/********************循迹模块IO口定义*********************************/ sbit xun_ll = P0^4; //从左到右第1个 sbit xun_l = P0^3; //从左到右第2个 sbit xun_z = P0^2; //从左到右第3个 sbit xun_r = P0^1; //从左到右第4个 sbit xun_rr = P0^0; //从左到右第5个

/********************LN298电机驱动IO口定义***************************/ sbit qu_ll = P2^0; //左边电机控制IN1 sbit qu_zl = P2^1; //左边电机控制IN2 sbit qu_zr = P2^2; //右边电机控制IN1 sbit qu_rr = P2^3; //右边电机控制IN2 #define RS_H RS = 1 #define RS_L RS = 0

#define RW_H RW = 1 #define RW_L RW = 0

#define EN_H EN = 1 #define EN_L EN = 0

#define READ_DATA P1

void DelayMs(unsigned int z) //1ms延时函数 {

unsigned int x; for(;z>0;z--)

3 2

大连海洋大学本科毕业论文(设计) 附录 for(x=110;x>0;x--); }

void LCDWriteCom(unsigned char com) {

RS_L; RW_L; READ_DATA = com; EN_H; DelayMs(5); EN_L; }

void LCDWriteData(unsigned char dat) { RS_H; RW_L; READ_DATA = dat; EN_H; DelayMs(5); EN_L; }

/**********************************************************************/ **函数名称:LCD_Write_str()

**函数功能:在LCD上写入一串字符

**输 入 口:hang : 要写入的行,add 要写入列 *s要写入的指针数组 **输 出 口:无 **返 回 值:无

**备 注:strlen()是引用库函数string.h ,可以求出数组的长度 **日 期:2014.2.22

/**********************************************************************/ void LcdWriteStr(unsigned char hang,unsigned char add,char*s) {

unsigned char i;

unsigned char length = 0; if(hang==1) LCDWriteCom(0x80+add); else LCDWriteCom(0x80+0x40+add); length = strlen(s); for(i=0;iLCDWriteData(*s++); //指针送完数据后自加1 }

/*void LcdWriteChar(unsigned char hang,unsigned char add,char Ch) { if(hang == 1)LCDWriteCom(0x80+add);

3 3

大连海洋大学本科毕业论文(设计) 附录

else LCDWriteCom(0x80+0x40+add); LCDWriteData(Ch); }*/

//能像printf一样使用

void Lcd1602Printf( unsigned char x, unsigned char y, unsigned char *p,...) { char idata LcdBuf[17]; va_list ap; va_start(ap, p); vsprintf(LcdBuf,p,ap); va_end(ap);

LcdWriteStr(x,y,LcdBuf); }

void Init_1602(void) { LCDWriteCom(0x38); LCDWriteCom(0x0c); LCDWriteCom(0x06); LCDWriteCom(0x01); DelayMs(2); // Lcd1602Printf(1,0,\"Lcd1602 Normal\"); //测试液晶1602显示用 Normal:正常 }

//触发一个高电平时间

static void StartModule(void) //启动模块 { TX=1; //启动一次模块 _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); TX=0; }

/*************************************************************************/ * Function Name : Conut

* Description : 取出定时器的值,并通过计算得到距离,返回距离到调用函数 * Input : None * Output : None

* Return : 计算得到的距离 * Attention : 当距离大于5m时,返回3个8,表示超出量程

/*************************************************************************/ static int Conut(void) { uint S,time;

3 4

大连海洋大学本科毕业论文(设计) 附录

time=TH0*256+TL0; TH0=0; TL0=0;

S=(time*1.7)/100; //算出来是CM

if((S>=500)||flag==1) //超出测量范围 ,可以达到6M多,但是因为 { //跳动的很厉害,现改为5M flag = 0; S = 888; }

return S;

}

/************************************************************************/ * Function Name : GetDis

* Description : 发出一个10us的高电平脉冲,得到超声波测出的距离 * Input : None * Output : None

* Return : S 测得的距离,Uint型变量,比如返回124,则表示为1.24M * Attention : 调用的函数有:StartModule,Conut

/************************************************************************/ int GetDis(void) { StartModule(); //给一个高电平触发脉冲 while(!RX)xunnji(); //当RX为零时等待 TR0=1; //开启计数 while(RX)xunnji(); //当RX为1计数并等待 TR0=0; return Conut(); //计算 }

//定时器初始化

static void Timer0Init(void) { TMOD &= 0xf0; TMOD |= 0x01; //设T0为方式1 TH0=0; TL0=0; ET0=1; //允许T0中断 EA=1; //开启总中断 }

/************************************************************************/ * Function Name : CsbInit

* Description : 超声波初始化函数 * Input : None

3 5

大连海洋大学本科毕业论文(设计) 附录 * Output : None * Return : None * Attention : 调用的函数有:Timer0Init ,只调用了一个定时器初始化

/***********************************************************************/ void CsbInit(void) { Timer0Init(); }

/************************* 定时器0中断服务函数 ************************/ void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围 { flag=1; //中断溢出标志 }

/**********************小车后退函数*************************************/ d go() { qu_ll = 1; qu_zl =0; qu_zr =0; qu_rr =1; }

/**********************小车前进函数************************************/ void back() {

qu_ll =0; qu_zl =1; qu_zr =1; qu_rr =0; }

/**********************小车左转函数 只有一个轮子动********************/ void left() { qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 1; }

/**********************左转函数 左边轮子后退 右边轮子前进**************/ void left_s() { qu_ll = 0; qu_zl = 1; qu_zr = 0; qu_rr = 1;

3 6

大连海洋大学本科毕业论文(设计) 附录 }

/**********************小车停下函数************************************/ void stop() { qu_ll = 0; qu_zl = 0; qu_zr = 0; qu_rr = 0; }

/**********************小车右转函数 只有一个轮子动********************/ void right() { qu_ll = 1; qu_zl = 0; qu_zr = 0; qu_rr = 0; }

/*********************右转函数 左边轮子前进 右边轮子后退**************/ void right_s() { qu_ll = 1; qu_zl = 0; qu_zr = 1; qu_rr = 0; }

void che_90_180_break(uchar dat) { uchar i_z = 0; while(1) //循环等待中间寻迹传感器到黑线上 { if(xun_z == 0) //如果中间那寻迹传感器到了黑线上,要让小车停下来前进了 { i_z++; //消去干扰 if(i_z >= 10) //10次之后就确定寻迹模块的中间传感器到黑线上了 { if(dat == L) //如果是左转90度就让右转的方法制动 right_s(); else left_s(); //如果是右转90度就让左转的方法制动 DelayMs(50); go(); break; //break退出while(1)这个死循环 }

3 7

大连海洋大学本科毕业论文(设计) 附录 } else //没有在黑钱上就给i_z变量清零 { i_z = 0; } } }

/**********************小车左转90度***********************************/ void left_s_90_while() //小车向左转90度 { go(); //前进一小会让小车转90度时刚好让黑线在小车的中间 DelayMs(120); left_s(); //左转90度注意这个延时不能太长,只要能让寻迹模块中间的传感离开黑线就好 DelayMs(180); che_90_180_break(L); }

/**********************小车右转90度*********************************/ void right_s_90_while() // { go(); //前进一小会让小车转90度时刚好让黑线在小车的中间 DelayMs(120); right_s(); //左转90度注意这个延时不能太长 只要能让寻迹模块中间的传感离开黑线就好 DelayMs(180); che_90_180_break(R); }

// 白线为 1 黑线为 0 void xunnji() { if((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_r==1) && (xun_rr==1)) { go(); //小车后退 } if((xun_ll==0) && (xun_l==0) && (xun_z==0) && (xun_r==0) && (xun_rr==0)) { stop(); } if(((xun_ll==1) && (xun_l==1) && (xun_z==0) && (xun_rr==1)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && (xun_rr==1)) || ((xun_ll==1) && (xun_z==1) && (xun_rr==0)) || ((xun_ll==1) && (xun_l==1) && (xun_z==1) && ( (xun_rr==0)))

3 8

大连海洋大学本科毕业论文(设计) 附录 { right(); } if(((xun_ll==1) && (xun_l==0) && (xun_r==1) && (xun_rr==1)) || ((xun_ll==0) && (xun_l==0) && (xun_z==1) && (xun_rr==1)) || ((xun_ll==0) && (xun_l==1) && && (xun_r==1) && (xun_rr==1))) { left(); } if((xun_ll==1) && (xun_z==0) && (xun_rr==0)) { go(); DelayMs(1); if((xun_ll==1) && (xun_z==0)&& (xun_rr==0)) { right_s_90_while(); } } if((xun_ll==0) && (xun_l==0) && (xun_rr==1)) { go(); DelayMs(1); if((xun_ll==0) && (xun_l==0) && (xun_rr==1)) { left_s_90_while(); } } }

void main(void) { int Dis = 0; InitTimer(); Init_1602(); CsbInit(); Dis = GetDis(); while(1) { xunnji(); if(bTime_500Ms) { bTime_500Ms = 0 ; Dis = GetDis(); Lcd1602Printf(2,3,\"Dis = %4.2f\

3 9

大连海洋大学本科毕业论文(设计) 附录 if(Dis < 24) { right_s(); DelayMs(500); }

}

}

}

4 0

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务