基于单片机的高精度超声波测距系统 - 范文中心

基于单片机的高精度超声波测距系统

09/16

1 前言

1.1 研究背景

随着科技的迅猛发展越来越多的科技成果被广泛的运用到人们的日常生活当中,给我们的生活带来了诸多方便。本设计就是本着这个宗旨出发,利用超声波的特性来为我们服务。

声波是物体机械振动状态(或能量)的传播形式。所谓振动是指物质的质点在其平衡位置附近进行的往返运动。譬如,鼓面经敲击后,它就上下振动,这种振动状态通过空气媒质向四面八方传播,这便是声波。 超声波是指振动频率大于20000Hz以上的,其每秒的振动次数(频率)甚高,超出了人耳听觉的上限(20000Hz),人们将这种听不见的声波叫做超声波。超声和可闻声本质上是一致的,它们的共同点都是一种机械振动,通常以纵波的方式在弹性介质内会传播,是一种能量的传播形式,其不同点是超声波频率高,波长短,在一定距离内沿直线传播具有良好的束射性和方向性。

由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量。超声波测距由于其能进行非接触测量和相对较高的精度,越来越被人们所重视。超声波测量技术利用回波测距原理,技术发展已经成熟,应用也积累了很多经验。

超声波测距仪,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于液位、井深、管道长度的测量等场合。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时监控,并且在测量精度方面能达到工业实用的要求。

随着科学技术的快速发展,超声波在测距仪中的应用越来越广。展望未来,超声波测距仪作为一种非常重要的工具在各方面都将有很大的发展空间,它将朝着更加高精度的方向发展,以满足日益发展的社会需求。

1.2 国内外研究情况

国内超声波技术现已日趋成熟,稳定度也相当高,适合大部分环境下使用;应用领域。包括:测距、避障、机器人定位、曲面仿真等。虽然如此,但也存在一些急待攻克的问题,主要包括:测量精度的级别有待提高,测量距离不够远,普遍只有10米之内,最远也只有几十米;一些高精度或远距离的产品的电路复杂,成本较高;依然存在一定距离的育盲区等等;这些问题限制了超声波的应用。

针对上述存在的问题,国内外的相关人员进行了努力的攻关。研究主要集中在以下

几个方面:超声波回波处理、新型换能器研发、发射脉冲选取等等,并且针对超声测距仪器的常见影响因素提出了温度补偿、接收回路串入自动增益调节环节等提高超声波测距精度的措施。目前在国内的研究成果主要有:超声波回波处理方面,最小均方自适应时延估计算法;一体化换能器;专用脉冲发生器;采用功率驱动芯片和升压变压器等,还通过超声波测距仪专用集成电路通过分析超声波测距误差产生的原因,来提高测量时间差到微秒级,以及用温度传感器来进行声波传播速度的补偿后,其高精度超声波测距仪也可以达到毫米级的测量精度。这些新的技术都大大提高了超声波

测距的精度和距离。国内的超声波测量品牌有古大,飞鹰,百特等。他们的技术在国内应该处于领先地位,但是低端的很多。而在国外,超声测量技术也有迅速发展。国外西门子,HAWK的产品比较齐全,质量比较稳定。

1.3 本文主要内容及安排

本文主要内容是对超声波测距系统的分析。本文的安排为:第1章是研究背景的介绍;第2章是对控制系统主要硬件的介绍,包括单片机、超声波模块、数码管;第3章是介绍硬件电路设计;第4章是介绍系统软件设计;第5章是介绍实物性能测试;第6章编程和下载软件;第7章是总结与未来展望。

2 控制系统主要硬件介绍

2.1 单片机STC89C52的选型

2.1.1 STC89C52介绍

STC89C52是由深圳宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外, STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。

其PDIP封装如图2.1所示。

图2.1 STC89C52 PDIP封装图

2.1.2 STC89C52引脚介绍

管脚说明:

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:来自反向振荡器的输出。

2.2 超声波测距模块选型

2.2.1 HC-SR04介绍

HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。

基本工作原理:

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。

(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;

(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声 波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

超声波时序图如图2.2所示:

图2.2 超声波时序图

以上时序图表明你只需要提供一个10uS 以上脉冲触发信号,该模块内部将 发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。 回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号 时间间隔可以计算得到距离。公式:uS/58=厘米或者uS/148=英寸;或是:距离= 高电平时间*声速(340M/S)/2;建议测量周期为60ms以上,以防止发射信号对 回响信号的影响。

2.3 显示器件的选型

2.3.1数码管的选型

led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2.3是共阴和共阳极数码管的引脚图,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图片10引脚的LED数码管。图2.4为常用的LED

图2.3 LED数码管引脚图 图2.4常用LED数码管

图2.3每一笔划都是对应一个字母表示DP是小数点.

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。

1)静态显示驱动:

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱

动,或者使用如BCD码二-十进位寄存器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口多,如驱动5个数码管静态显示则需要5×8=40根I/O口来驱动,要知道一个89S51单片机可用的I/O口才32个呢。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。

2)动态显示驱动:

数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。

透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。

下面介绍四位七段数码管引脚图,内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,图2.5是一个共阴的四位数码管的内部结构图,图2.6为四位共阳数码管。引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。

图2.5 四位共阴数码管

图2.6 四位共阳数码管

其中,6,8,9,12,引脚是四位数码管的四个公共端,控制着四个关键,就可以控制数码管的关断和

导通。

图2.7 四位共阳极数码管实物图

图2.7是四位共阳极数码的实物图,从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚。识别引脚是在实际焊接中非常重要的部分,否则可能出现烧毁数码管,或数码管不亮的情况。

3 硬件电路设计

本部分介绍系统的硬件电路设计,包括单片机最小系统,超声波传感器采集电路及距离显示电路。

3.1 单片机最小系统的设计

最小系统是指能进行正常工作的最简单电路。STC89C52最小应用系统电路如图3.1所示。它包含五个电路部分:电源电路、时钟电路、复位电路、片内外程序存储器选择电路、输入/输出接口电路。其中电源电路、时钟电路、复位电路是保证单片机系统能够正常工作的最基本的三部分电路,缺一不可。

图3.1 单片机最小系统

下面简单介绍下单片机最小系统的三个主要部分:

①电源电路 芯片引脚VCC一般接上直流稳压电源+5V,引脚GND接电源+5V的负极,电源电压范围在4~5.5之间,可保证单片机系统能正常工作。为了确定单片机是否供上电,在VCC和地之间连接了一个发光二极管和1K的电阻。

②时钟电路 单片机引脚18和引脚19外接晶振及电容, STC89C52芯片的工作频率可在2~33MHz范围之间选,单片机工作频率取决于晶振XT的频率,通常选用11.0592MHz晶振。两个小电容通常取值30pF,以保证振荡器电路的稳定性及快速性。

③复位电路 一般若在引脚RST上保持24个工作主频周期的高电平,单片机就可以完成复位,但为了保证系统可靠地复位,复位电路应使引脚RST保持10ms以上的高电平。如图复位电路带有上电自动复位功能,当电路上电时,由于C1电容两端电压值不能突变,电源+5V会通过电容向RST提供充电电流,因此在RST引脚上产生一高电平,使单片机进入复位状态。随着电容C1充电,它两端电压上升使得RST电位下降,最终使单片机退出复位状态。正常运行时,可按复位按钮对单片机复位

3.2 超声波测距显示电路系统设计

图3.2 数码管显示电路系统

本设计采用了四位共阳极数码管作为显示的器件,6,8,9,12引脚是数码管的位选信号端,1,2,3,4,5,7,10,11控制数码管的位选,四位数码管分别用一个S9015三极管进行驱动。

3.3 超声波系统设计

图3.3 数码管显示电路系统

4 系统软件设计

本次软件开发是基于windows平台下开发的,主要通过c语言为主要编程语言,使用的软件是Keil编程软件,电路的绘制使用AD6.9软件进行设计。主要的烧录器使用STC的USB转串口烧录器STC_ISP_V486。

4.1流程图

根据硬件电路图,综合自己的设计思路,先画出程序流程图,再根据流程图编好程序,经过整理后最后形成最终的程序。 根据要求绘制的本设计的流程图如图4.1所示。

4.1 程序流程图

4.2 单片机测距程序

//器件配置文件

#include #include sbit RX=P1^0; sbit TX=P1^1; unsigned int time=0; unsigned int timer=0; unsigned char posit=0; unsigned long S=0; bit flag =0;

unsigned char const discode[]

={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff};

unsigned char const positon[4]={ 0xfe,0xfd,0xfb,0xf7}; unsigned char disbuff[4] ={ 0,0,0,0,};

/********************************************************/ void Display(void)

{

if(++posit>=4) posit=0; }

//扫描数码管

P0=discode[disbuff[posit]]; P2=positon[posit];

/********************************************************/ void Conut(void)

{

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

S=(time*1.7)/10; //算出来是CM if((S>=7000)||flag==1) //超出测量范围显示"-" { flag=0;

disbuff[0]=10; //"-" disbuff[1]=10; //"-" disbuff[2]=10; //"-" disbuff[3]=10; //"-" } else {

disbuff[0]=S%10000/1000; disbuff[1]=S%10000%1000/100; disbuff[2]=S%10000%1000 %100/10; disbuff[3]=S%10000%1000 %100%10; }

}

//T0中断用来计数器溢出,超过测距范围

/********************************************************/ void zd0() interrupt 1 { flag=1; }

/********************************************************/ //中断溢出标志

void zd3() interrupt 3 { TH1=0xf8; TL1=0x30; Display(); timer++; if(timer>=400) { timer=0; TX=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

_nop_();

//T1中断用来扫描数码管和计800MS启动模块 //800MS 启动一次模块

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); TX=0; }

}

/*********************************************************/ {

TMOD=0x11;

while(1) {

while(!RX); TR0=1;

//当RX为零时等待 //开启计数 //当RX为1计数并等待

//关闭计数

TH0=0;

TL0=0; TH1=0xf8; TL1=0x30;

ET0=1; //允许T0中断 ET1=1; TR1=1; EA=1;

//允许T1中断 //开启定时器 //开启总中断 //2MS定时

//设T0为方式1,GATE=1;

void main( void )

while(RX); TR0=0;

Conut();

} }

//计算

5实物性能测试

5.1单片机测试

判断单片机是否处于正常工作的状态,就要判断单片机电源,复位电路及时钟电路是否正常工作有一个简单的办法,首先打开电源观察led是否亮起,如果亮起证明有电供应。接下来,用万用表检测单片机的20和40脚之间的电压是不是为5V,这两项测试表明单片机已经正常供电。接下来检查复位电路是否正常工作,将万用表的红色针放在9号引脚上,黑色针放在20脚上,检测电压为0V,按下复位按键,测到的电压为5V,说明复位电路工作正常。

5.2程序调试

调试程序是意见非常锻炼人的工作,写程序是需要一步步来的,有时是缺个符号,少个分号,有时是大小写的问题,有时候甚至不知道是什么问题,导致程序编译出现问题。有时,程序进行不下去,耽误很长时间。但是,经过不断的写程序,改程序,最后终于通过了编译。如图5.1所示,为编译成功后的KEIL编程的界面。

图5.1 编译成功的界面

6 编程和下载软件的介绍

6.1 Keil的简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。它是本设计的编程环境,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

单片机开发中除必要的硬件外,同样离不开软件,我们写的C语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

下面介绍KEIL的编程使用方法:

1. 使用Keil前必须先安装。安装过程简单,这里不在进行详细的叙述。 2. 安装好了Keil软件以后,我们打开它。打开以后界面如图6.1所示:

图 6.1

3. 我们先新建一个工程文件,点击“Project->New Project…”菜单,如图6.2所示:

图6.2

4.选择工程文件要存放的路径 ,输入工程文件名 LED(名字根据需要可以随便设置), 最后单击保存。

图 6.3

5.在弹出的对话框中选择 CPU 厂商及型号。

图 6.4

6.选择好 Atmel 公司的 AT89S52(在实际使用中根据自己的芯片的型号选择) 后 , 单击确定。

图 6.5

7.在接着出现的对话框中选择“是”。

图 6.6

8.新建一个 C51 文件 , 单击左上角的 New File 如图6.7所示。

图 6.7

9.保存新建的文件,单击SAVE如图6.8所示。

图 6.8

10.在出现的对话框中输入保存文件名MAIN.C(注意后缀名必须为.C),再单击“保存”,如图6.9所示;

图 6.9

11.保存好后把此文件加入到工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to Group „Source Group 1' 如图6.10所示:

图 6.10

12.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击 Close 。

图 6.11

13.在编辑框里输入如下代码 :

图 6.12

14.到此我们完成了工程项目的建立以及文件加入工程 , 现在我们开始编译工程如下图6.13和6.14所示 : 我们先单击编译, 如果在错误与警告处看到 0 Error(s) 表示编译通过 。

6.13

图6.14

15.生成 .hex 烧写文件,先单击Options for Target,如图6.15所示。

图6.15

16.在图6.16中,我们单击 Output, 选中 Create HEX F。再单击“确定”。

图6.16

17.打开文件夹‘实验1’,查看是否生成了HEX文件,生成的hex文件如图6.17所示。如果没有生成,在执行一遍步骤10到步骤12,直到生成。

图6.17

6.2 Altium Designer 6.0的简介

2005年年底,Protel软件的原厂商 Altium公 司推出了Protel系列的最新高端版本Altium Designer 6.0。 Altium Designer 6.0,它是完全一体化电子产品开发系统的一个新版本,也是业界第一款也是唯一一种完整的板级设计解决方案。Altium Designer 是业界首例将设计流程、集成化 PCB 设计、可编程器件(如 FPGA)设计和基于处理器设计的嵌入式软件开发功能整合在一起的产品,一种同时进行PCB和FPGA设计以及嵌入式设计的解决方案,具有将设计方案从概念转变为最终成品所需的全部功能。

这款最新高端版本Altium Designer 6.除了全面继承包括99SE,Protel2004在内的先前一系列版本的功能和优点以外,还增加了许多改进和很多高端功能。Altium Designer 6.0拓宽了板级设计的传统界限,全面集成了FPGA设计功能和 SOPC设计实现功能,从而允许工程师能将系统设计中的FPGA与PCB设计以及嵌入式设计集成在一起。

首先:在PCB部分,除了Protel2004中的多通道复制;实时的、阻抗控制布线功能;SitusTM自动布线器等新功能以外,Altium Designer 6.0还着重在:差分对布线,FPGA器件差分对管脚的动态分配, PCB和FPGA之间的全面集成,从而实现了自动引脚优化和非凡的布线效果。还有PCB文件切片,PCB多个器件集体操作,在PCB文件中支持多国语言 (中文、英文、德文、法文、日文),任意字体和大小的汉字字符输入,光标跟随在线信息显示功能,光标点可选器件列表,复杂BGA器件的多层自动扇出,提供 了对高密度封装(如 BGA)的交互布线功能, 总线布线功能,器件精确移动,快速铺铜等功能。

交互式编辑、出错查询、布线和可视化功能,从而能更快地实现电路板布局,支持高速电路设计,具有成熟的布线后信号完整性分析工具. Altium Designer 6.0 对差分信号提供系统范围内的支持,可对高速内连的差分信号对进行充分定义、管理和交互式布线。支持包括对在FPGA项目内部定义的LVDS信号的物理设计 进行自动映射。 LVDS 是差分信号最通用的标准,广泛应用于可编程器件。Altium Designer 可充分利用当今FPGA 器件上的扩展I/O管脚。 其次,在原理图部分,新增加“灵巧粘帖”可以将一些不同的对象拷贝到原理图当中,比如一些网络标号, 一页图纸的BOM表,都可以拷贝粘帖到原理图当中。原理图文件切片,多个器件集体操作,文本筐的直接编辑,箭头的添加,器件精确移动,总线走线,自动网标 选择等! 强大的前端将多层次、多通道的原理图输入、VHDL开发和功能仿真、布线前后的信号完整性分析功能。在信号仿真部分,提供完善的混合信号仿真,在对 XSPICE 标准的支持之外,还支持对Pspice模型和电路的仿真。对FPGA设计提供了丰富的IP内核,包括各种处理器、存储器、外设、接口、以及虚拟仪器 。

第三 在嵌入式设计部分,增强了JTAG器件的实时显示功能,增强型基于FPGA的逻辑分析仪,可以支持32位或64位的信号输入。除了现有的多种处理器内核 外,还增强了对更多的32位微处理器的支持,可以使嵌入式软件设计在软处理器,FPGA内部嵌入的硬处理器,分立处理器之间无缝的迁移。使用了 Wishbone 开放总线连接器允许在FPGA上实现的逻辑模块可以透明的连接到各种处理器上。Altium Designer 6.0支持 Xilinx MicroBlaze,TSK3000 等32位软处理器,PowerPC 405 硬核,并且支持AMCC 405和Sharp BlueStreak ARM7 系列分立的处理器。对每一种处理器都提供完备的开发调试工具。

图6.18 Altium Designer 6.0软件打开界面

图6.19 Altium Designer 6.0绘图界面

6.3 STC_ISP_V480的简介

STC_ISP_V480是下载程序用的软件,在运行STC_ISP_V480下载软件之前,应该先给出ISP的C程序源代码ISP.C.要注意的是:此程序是在Keil-C中要建立工程文件,包含IAP.C函数,并且在IAP.C和ISP.C中都要保留STC的定义.传入用户代码时,需要与计算机进行通信,一般采用RS232串行通信,数据协议采用简单协议。 具体的使用方法:

一、先把学习实验板和计算机连接好(接好串口线和电源)

二、打开STC-ISP v480,在MCU Type栏目下选中单片机,如STC89C52RC:根据您的9针的数据线连接情况选中COM端口,最好把波特率适当下调一些,按图6.18所示选中各项:

图6.20 STC-ISP v480的界面图

三、先确认硬件连接正确,按下图点击“打开文件”并在对话框内找到您要下载的HEX文件: 四、选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击

“Download/下载”:

五、手动按下电源开关便即可把可执行文件HEX写入到单片机内,图6.19所示是正在写入程序截图:

图6.21 单片机程序下载截图

7 总结与展望

本课题介绍了一种基于单片机的超声波测距系统的设计。给出了硬件和软件的设计方案。 超声波传感器是本系统的核心器件,本论文详细地介绍了超声波传感器的原理、结构、检测方式以及它的一些特性。只有深入地了解超声波传感器的工作原理,才能更好的设计测距电路。单片机是本系统的控制部分,采用STC89C52单片机。驱动超声波传感器的40kHz的方波信号,就是由单片机编程产生的。通过检测发射和接受的时间差值,通过计算得到距离。本系统的LED显示当前的距离。单片机内部采用C语言编程,方波信号的产生、时间差的读取、距离的计算以及显示输出都由单片机编程完成。 本课题所设计的超声波测距系统具有测量精度较高、速度快、控制简单方便等优点。测距范围从1cm到500cm,测量精度在±3mm内。测距系统在许多工业现场和自动控制场合,都有很重要的作用。

通过调试,最终实物可以实现功能,达到了设计的目的。但由于经验不足,电路硬件、软件部分还有不够完善的地方,在今后的学习中会进一步改进。 总体来说,最重要的是在本课题的设计过程中我学到了很多知识,从中受益匪浅。了解了超声波传感器的原理,学会了各种放大电路的分析、设计,也掌握了单片机的开发过程和利用单片机设计电路的方法。对一块电路板的设计、焊板、调试、改进等整个过程,有了更深入的理解和掌握。这些对我今后的学习和工作都会有很大帮助的

参 考 文 献

[1]张洪润等,电子线路与电子技术[M],北京:清华大学出版社,2005.

[2]王松武等,电子创新设计与实践[M],北京:国防工业出版社,2005.

[3]李建忠,单片机原理及应用[M],西安:西安电子科技大学出版社,2002.

[4]黄智伟等,全国大学生电子设计竞赛训练教程[M],北京:电子工业出版社,2004.

[5]樊昌信等.通信原理[M].北京:国防工业出版社,2001.

[6]何希才,新型集成电路及应用实例[J],北京:科学出版社,2002.

[7]李朝青.单片机原理及接口技术[M].杭州:北京航空航天大学出版社,1998.

[8]李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994.

[9]阎石.数字电子技术基础[M].北京:高等教育出版社,1989.

[10]廖常初.现场总线概述[J].电工技术,1999.

[11]楼然苗.颖电子模块应用手册[J]. 北京:机械工业出版社,2005.

[12]楼然苗李光飞.单片机课程设计指导[M]. 北京:北京航空航天大学出版社,2007.

[13]赖寿宏.微型计算机控制技术[M]. 北京:机械工业出版社.2003.

[14]马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,1998.

[15]求是科技.单片机典型模块设计实例导航[M].人民邮电出版社,2004.

[16]何力民系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,2000.

[17]周航慈.单片机应用程序设计技术”(修订版)[M].北京航空航天大学出版社,2002.

[18]李华等.单片机实用接口技术[M]. 北京:北京航空航天大学出版社,2002.

致 谢

首先,感谢学校多年来对我的培养。为我们营造了一个良好的学习氛围,使我们身心愉快的投入到学习中。其次,感谢各位教过我指导过我的老师,没有他们授予的知识,我是不可能完成这次设计的,感谢你们的辛勤付出。

感谢那些默默奉献的网友们,有了他们提供的书本上没有的芯片资料、丰富例程,我才能够完成本次设计。

大学生活即将画上圆满的句号,感谢陪伴我生活的同学们,是你们使我变得成熟与稳重,是你们在默默的关心我并伴我前行。你们是我这辈子不会忘记的好朋友。

感谢我辛勤工作的父母,是你们的汗水换来了我的美满生活,提供我学习的机会。是你们的无私的爱使我度过了生活中的道道难关。我就要毕业了,我会努力工作,挣更多的钱来回报你们对我无微不至的关爱。孩子在这里深深的对你们说一声“谢谢”。

向所有评阅论文的老师致以最诚挚的谢意,感谢你们在百忙之中,为我们审阅论文。

谢谢!


相关内容

  • 基于单片机的超声波测距仪的设计与实现毕业论文
    基于单片机的超声波测距仪的设计与实现 中文摘要 本设计基于单片机AT89C52,利用超声波传感器HC-SR04.LCD显示屏及蜂鸣器等元件共同实现了带温度补偿功能可报警的超声波测距仪.我们以AT89C52作为主控芯片,通过计算超声波往返时间 ...
  • 基于单接收头的超声波多目标测距
    第20卷 第5期2007年5月 传感技术学报 CHIN ES E JOURNAL OF S ENSORS AND ACTUA TORS Vol. 20 No. 5May. 2007 Multi 2G oal Measure B ased o ...
  • 智能小车控制系统的设计 论文
    XXXX 学 院 本 科 生 毕 业 论 文 题 目: 专业班级: 学 号: 学生姓名: 指导教师: 论文完成日期年月 郑 重 声 明 本人的毕业论文是在指导老师 的指导下独立撰写并完成的.毕业论文没有剽窃.抄袭.造假等违反学术道德.学术规 ...
  • 20**年电子设计大赛四旋翼自主飞行器_(B_题)
    2013 年全国大学生电子设计竞赛论文 [本科组] 课题:四旋翼自主飞行器 (B 题) 1 摘要 为了满足四旋翼飞行器的设计要求, 设计了以微控制器为核心的控制系统 和算法.首先进行了各单元电路方案的比较论证,确定了硬件设计方案.四旋翼 飞 ...
  • 交流电量同步采集
    河南机电高等专科学校 毕业设计(论文) 交流电量同步采集 系 部: 自动控制系 专 业: 电气自动化 班 级: xxxxx xx 姓 名: xxxx xxx xx 学 号: xxx xxx xx x 指导老师: xxx 二零一二年五月 第一 ...
  • 测量运动物体姿态的三自由度定位算法的研究
    自动化测试 计算机测量与控制. 2002. 10(6) Computer Measurement &Control ・363・ 文章编号:1671-4598(2002) 06-0363-03 中图分类号:TM93 文献标识码:A 测 ...
  • 室内自主移动机器人定位方法研究综述
    第 卷第 期 年 月 机器人 × ∂ √ 文章编号 2 2 2 室内自主移动机器人定位方法研究综述 李群明 熊蓉 褚健 浙江大学工业控制技术国家重点实验室 浙江杭州 Ξ 摘 要 定位是确定机器人在其作业环境中所处位置的过程 应用传感器感知信 ...
  • 无线传输与定位技术
    <无线传输与定位技术>期末大作业 一.定位技术基本概述 1.什么是定位? 无线定位是指利用无线电波信号的特征参数估计特定物体在某种参考系中的坐标位置.按照唐策目标的方式,定位技术可以分为有源定位和无源定位.有源定位系统是通过主动 ...
  • 声波透射法
    10 声波透射法 10.1 适 用 范 围 10.1.1 声波透射法适用于混凝土灌注桩的桩身完整性检测,判定桩身缺陷的位置.范围和程度. [条文说明] 声波透射法是利用声波的透射原理对桩身混凝土介质状况进行检测.当桩径小于0.6m 时,声测 ...
  • 红外传感器制作
    第 I页 2.3设计框图 本次设计是基于STC89C52单片机的电动机保护装置,包括稳压模块.按键控制.红外发射接收模块.模数转换.电机部分. 稳压模块 红外发射 接收模块 模数转换 MCU 信号处理 电 机 按键控制 图2.1 电机保护装 ...