APP下载

基于STC89C52超声波测距仪设计

2016-09-27南通开放大学江苏城市职业学院南通校区顾添翼

电子世界 2016年16期
关键词:方波数码管子程序

南通开放大学 江苏城市职业学院南通校区 顾添翼

基于STC89C52超声波测距仪设计

南通开放大学江苏城市职业学院南通校区顾添翼

在现有的测距方案中,超声波测距是目前应用最为普遍的一种,它广泛应用于倒车雷达、水位测量、防盗、建筑施工工地等一些工业现场。本系统以STC89C52最小系统为核心,主要部件有超声波发射接收器、检波接收芯片CX20106A以及数码管显示部分等,实现了测距以及简单的方位判断功能。

超声波传感器;测距;CX20106A;STC89C52单片机

1.系统的工作原理及组成

1.1系统的工作原理

超声波测距是利用超声波波长较短,其绕射能力较差,反射能力较强的特性,使超声波发射器向某一方向发射超声波,并且在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,当超声波接收器收到反射波就立即停止计时。由此假设超声波在空气中的传播速度为v,根据记录的发射超声波和接收发射波的时间差t,即可以计算出发射点距障碍物的距离s为:s=(v×t)/2。

1.2系统的组成

该系统由单片机控制系统、超声波发生电路、超声波接收处理电路和显示电路等构成。单片机是整个系统的核心部件,它协调和控制各部分电路的工作。工作过程:开机,单片机复位,然后控制程序使单片机产生的多个40KHz的方波信号加到超声波传感器上,触发超声波发射器发射超声波。在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波立即立即停止计时,并经过超声波接收电路的处理产生一个低电平触发单片机的外部中断0,然后单片机进行中断处理,通过计算将测出的结果以十进制送数码管显示。系统原理框图如图1所示。

图1.1 系统原理框图

2.系统硬件设计

2.1单片机最小系统

2.1.1 主控芯片STC89C52简介

本系统选用的是STC89C52系列的单片机,它是一种带8K字节闪烁可编程、高性能、低功耗、采用CMOS工艺的8位微处理器。STC89系列单片机大部分具有在系统可编程(ISP)特性,可以省去购买通用编程器的麻烦。此外由于一般的距离测量中,距离的变化速度并不太快,而且单片机us级的精度完全可以满足系统测量的要求,并且成本较低。STC89C52引脚图如图2.1所示。

VCC(Pin40):电源输入,接+5V电源VSS(Pin20):接地线

XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin18):片内振荡电路的输出端RST(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

EA(Pin31):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。

图2.1 STC89C52引脚图

PO口(Pin39~Pin32):P0.0~P0.7。P0口是一个8位漏极开路的双向I/O口。作为输出口,每位驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。

P1口(Pin1~Pin8):P1.0~P1.7。P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

P2口(Pin21~Pin28):P2.0~P2.7。P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

P3口(Pin10~Pin17):P3.0~P3.7。P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

2.1.2时钟电路

本系统采用的是内部时钟方式,在XTAL1和XTAL2引脚上外接12MHZ石英晶体和两个20pF电容组成并联谐振回路,使单片机内部振荡器产生自激振荡。

2.1.3复位电路

本系统中采用上电/按键手动复位,除了具有上电自动复位功能外,若工作过程中需要复位,只需按复位键,在RESET端就产生一个复位高电平。

2.2超声波发射电路设计

本系统利用软件程序产生40KHz方波信号,由单片机P1.0端口输出,将方波信号经反响器加到超声波换能器的两端,提高超声波发射强度。超声波发射电路原理图如图2.2所示。

图2.2 超声波发射电路原理图

2.3超声波接收电路设计

超声波接收电路包括超声波接收探头和CX20106A处理两部分。超声波接收探头与发射探头型号,频率一致。CX20106是一款红外线检波接收的芯片,它由前置放大器、检波器、带通滤波器、限幅放大器、积分整型电路等组成,其中滤波器中心频率为30K-60KHz。CX20106更多的被用于电视机红外遥控接收器,这里由于红外遥控常用的载波频率38kHz与测距超声波频率40kHz较为接近,所以本系统中就可以利用它来进行超声波检测,并且该芯片内集成前置放大器,可以用来将超声波接收器是输出的毫伏级电压进行放大,以触发单片机中断处理。超声波接收电路原理图如图2.3所示。

图2.3 超声波接收电路原理图

2.4显示电路设计

本系统的测量结果采用十进制数通过LED数码管显示。利用P0口的低电平驱动方式。为增强其驱动能力,加入了74LS240反相器。数码管的位选通过P2口来进行选择,同样的,为了增强I/O口引脚驱动能力,在P2口与数码管公共端之间接入与门集成芯片SN75451(该芯片驱动能力比较强,输出电流可达几百mA),如图2.4所示。

图2.4 显示电路原理图

3.系统软件设计

软件设计运用模块化程序设计思想,对不同功能的程序进行分别编程,主要包含主函数程序,超声波发生子程序,超声波接收程序(中断处理)以及显示子程序。

3.1主程序设计

在主程序中,首先对系统环境初始化,其中包含对定时器,中断以及所涉及的I/O端口设置。然后进入主程序循环体,调用超声波发生子程序来发出超声波,等待声波遇到障碍物将反射回来,需要特别说明的是主函数中引入了变量flag用来区分以下三种情况,当无中断产生时,flag=0;当因为接收到超声波返回信号而产生的中断时,flag=1;当因为计时器溢出时还未检测到超声波返回信号而产生的溢出中断时,flag=2。因此当接收到返回的超声波信号时程序将进入相应的中断处理,并且flag标志将被置1,通过计算得到障碍物的距离。最后调用显示子程序将结果以十进制送LED显示。

3.2超声波发生子程序

在超声波发生程序中主要完成产生40KHz的方波信号的功能,用几个空操作语句进行延时,每隔半周期时间,将方波输出脚的电平取反,便可产生40kHz方波。此外由于测量盲区的存在,发射脉冲个数也需要仔细考虑,脉冲个数少,可以提高测量精度,但减少了发射能量减小了测距量程,脉冲个数过多会增大测量盲区,在设计中经过比较,选择发射5个40KHz的脉冲方波作为测量信号。实践证明此时的可测范围在6cm至4m左右。

3.3超声波接收子程序

超声波接收子程序即中断处理程序,主要是当接收到反射波时(即INT0引脚出现低电平),单片机立即响应外中断的请求,进入对应的中断服务程序,其中包含关闭定时器T0,关闭T0的中断允许位(ET0)和外部中断0中断允许位(EX0),并将标志位flag赋值1,表示本次测距成功。如果当计数器溢出时还未检测到反射波,则进入相应的定时器0中断的中断服务程序,其中包含关闭定时器和中断,并将标志位flag赋值2,表示本次测距失败。

图4.1 (1) 实物测试图左

图4.1 (2) 实物测试图右

4.系统测试

在检查完电路焊接,排除短路断路等情况后,接通电源,按下复位键将系统复位,然后将所有程序烧到芯片后,在距离超声波探头适当的位置用手遮挡,并且前后移动,观察数码管上显示的数字与实际距离是否相符。在测试完毕之后就可进行实际的测距,若要实现简单的方位判断,只需在超声波发射探头的另一边再增加一个超声波接收探头,然后比较一下左右两个接收探头接收回波信号的所耗时间即可。

测试结果:系统能很好的发射和接收超声波信号,可实现大约17cm至400cm范围内的距离测量,并且可以实现障碍物相对于超声波发生方位的简单判断。实物测试图如图4.1所示。

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

[2]刘瑞星.单片机原理及应用教程[M].机械工业出版社,2006.

[3]赵珂.高准确度超声波测距仪的研制[J].传感器技术,2003,22(2).

[4]藏日章.基于AT89C51单片机的超声波测距系统[J].电气时代,2005(7).

[5]牛余朋.基于单片机的高精度超声波测距电路[J].电子世界,2005(5).

[6]姜道连.用AT89C2051设计超声波测距仪[J].维普资讯,编号:00121.

[7]胡萍.超声波测距仪的研制[J].计算机与现代化,2003(10):10062 2475(2003)1020054203.

[8]吴银凤.红外线接收电路CX20106的应用[J].电气时代,2003(9).

[9]马殷元.基于新型单片机P89C51RD2的倒车雷达设计[J].甘肃科技,2004,20(9).

[10]刘凤然.基于单片机的超声波测距系统[J].传感器世界,2001,5.

顾添翼(1989—),女,硕士,研究方向:电路与系统,嵌入式系统设计。

猜你喜欢

方波数码管子程序
便携式多功能频率计的设计与实现
微课教学设计之“数码管动态显示”
Arduino编程
测绘技术在土地资源管理中的应用
一种基于555定时器的方波产生电路设计
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
浅谈子程序在数控车编程中的应用
一种防垢除垢的变频电磁场发生装置
子程序在数控车加工槽中的应用探索