基于STC89C52的超声波测距系统设计.docx
《基于STC89C52的超声波测距系统设计.docx》由会员分享,可在线阅读,更多相关《基于STC89C52的超声波测距系统设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于STC89C52的超声波测距系统设计
基于STC89C52的超声波测距系统设计
接口实验报告
题目:
基于STC89C52的超声波测距系统设计
一.实验目的
通过本次实验,掌握单片机的C语言程序设计,利用VC设计界面程序,实现单片机和PC机的通信。
深入了解单片机内部结构,增强分析能力,并在实践过程中发现问题、解决问题,提高设计和调试微机应用系统的能力。
二.实验方案论证
本实验采用了三个定时器和串口直接下载,在本科使用过的AT89S52只要两个定时器,并且只能用专门的下载器去下载程序,所以它已经不能满足本次实验所设计的系统的要求。
而微处理器STC89C52单片机内部有三个定时器。
还支持ISP下载,只要一个MAX232和一些廉价的元件就能写程序,就不用专门的下载口和下载器,直接用串口下载。
并且它是一款增强型51单片机,完全兼容MCS-51,价格较低,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B数据存储器,8K程序存储器等,这大大方便了本系统的设计。
本实验设计的系统选用的超声波传感器为T/R40,可以通过控制产生40kHz的方波,来人工控制超声波传感器对超声波的收发。
产生40kHz的方波我首先想到的是用NE555产出,经过实践调试特难。
通过在网上查阅资料,发现用单片机的定时器产生既避免了调试困难,又精确。
所以本系统由单片机使用定时器1编程产生40kHz的方波。
由P1.6口输出,再经过74LS04驱动超声波传感器T40发射超声波。
发射出去的超声波经障碍物反射回来后,由超声波传感器R40接收到信号.通过接收电路的检波放大、积分整形及一系列处理送至单片机。
单片机将发射脉冲到接收反射脉冲的时间间隔通过串口发送给上位机,上位机利用声波的传播速度与时间数据计算出到障碍物的距离。
另外,为了提高测距的精度,本系统采用温度补偿修正声速。
测温模块主要由18B20完成。
三.系统整体框图
T40
单片机
MAX232
串口RS232
PC
机PIC16F877
74LS04
R40
CX20106
18B20测温
蜂鸣器报警
四.系统软硬件设计
1系统硬件设计
1.1RS232电平转换电路
52单片机的串口是RS-232C标准串口.RS-232标准时在RS-232标准的基础上经过改进形成的。
其适合于数据速率在0至20kb/s范围内的通信,本次实验传送数据时波特率为9600,8位数据,无校验。
具体电路图如下:
图1RS232电平转换电路
1.2单片机及电源接口部分电路
单片机部分的复位及晶振电路都是常见的接法,电源用一个按键控制接通与断开,使得程序下载变得方便。
具体电路如下:
图2单片机部分电路
图3电源部分电路
1.3超声波发射电路
为了提高发射强度,发射电路由反相器74LS04和超声波换能器构成,用推免形式将方波信号加到超声波换能器两端,可以提高超声波的发射强度。
输出端采用两个反相器并联,用于提高驱动能力。
图4是数字电路构成的超声波发射电路,它有单片机输出的40KHZ的方波信号一路径一级反相器后送到超声波换能器的一个电极,另一路径两级反相器后送到超声波换能器的另一个电极。
具体电路如下:
图4超声波发射电路
1.4超声波接收电路
超声波接收电路主要由CX20106A构成。
集成电路CX20106A是日本索尼公司的一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。
CX20106A用于在输入信号过强时防止前置放大器过载,内部设有带通滤波器,频率f0可由5脚的外接电阻或电位器调节。
使用时调节方便,抗电磁干扰能力强。
考虑到红外遥控常用的载波频率38kHz与测距的超声波频率40kHz较为接近,可以利用它制作超声波检测接收电路,实验证明,用CX20106A接收超声波(无信号时输出高电平)具有很高的灵敏度和抗干扰能力。
适当的更改电容C11的大小,可以改变接收电路的灵敏度和抗干扰能力。
具体电路如下:
图5超声波接收电路
1.5温度修正电路
电路主要采用MAXIM公司的DS18B20作为温度传感和测量装置,测量分辨率可选9位或12位。
因此完全可以满足普通条件下的测温要求。
DS18B20采TO一92型封装只有3个引脚,一根电源线,一根地线,一根数据线,每片DS18B20有一个64位串行代码存储器。
这里用P3.6口作为与DS18B20的数据输入输出口。
具体电路如下:
图6温度修正电路
1.5出错报警电路
若上位机和下位机传输数据时出错则通过P1.7控制蜂鸣器产生报警。
具体电路如下:
图7出错报警电路
2.系统软件设计
软件设计主要包括两个部分,一是单片机程序设计,二是上位机程序设计。
单片机部分主要包括两部分,一是超声波发射程序的设计;二是超声波接收程序的设计。
2.1.1超声波发射程序的设计
超声波发射所需的40KHZ的方波脉冲是通过单片机定时器/计数器T1工作在定时器工作方式2下产生的。
定时器/计数器工作方式2具有自动重装计数初值的功能。
不但省去了用户程序中的重装指令,而且也有利于提高计时精度,非常实用与循环定时或循环计数的应用。
超声波的发射频率f0=40KHZ即周期T=1/f0=25us那么超声波发射口P1.6口的输出电平经过1/2T即1/2*25us=12us就要跳变一次,可以使用定时器/计数器T1定时12us产生中断,在中断程序中改变P1.6口的输出电平。
正因为在工作方式2下当计数溢出后可以将计数初值重新加载到TL0中重新计数,所以可以通过软件对超声波脉冲数进行控制,产生一串符合要
求的超声波脉冲。
2.1.2超声波接收中断程序的设计
与超声波发射程序相比,接收程序的设计要简单的多。
主程序用外部中断0检测超声波返回信号,一旦接收到返回的超声波(P3.2引脚出现低电平),立即进入中断程序。
进入该中断后就立即关闭计时器T0,T1停止计时,并将计数值赋给变量,同时测距成功标志位赋1.如果当T0溢出时还未检测到超声波返回信号,则将外部中断0关闭,并准备下一个超声波的发射。
总起来说下位机程序主要实现采集超声波传播时间值和温度,即时将数据传送给上位机。
为确保数据正确,系统采集三次时间值,取三者中间值为最后结果。
然后数据传送过程中单片机先发送0xff、0xaa作为握手信号,然后再将两字节定时器定时数据和两字节温度数据进行传送,最后传送校验和。
系统运行中,单片机还要接收来自PC机的报警控制信息以及校验出错重传信息。
单片机串口接收采用中断方式。
下位机软件主流程图如下图7所示:
N
Y
Y
N
系统初始化
等待返回超声波
读取定时值置接收成功标志位
Y
N
发送超声波
测温,清接收次数
开总中断
开始
接收成功标志位
根据接收数据控制报警或数据重传
发送超声波
接收次数加1
接收次数为3
取中间值,传送数据
2.2上位机程序设计
1KHZ正弦波时的图形
100HZ正弦波时的图形
20HZ正弦波时的图形
2HZ正弦波时的图形
六.总结
通过这次接口实验,从查找资料、原理图及PCB设计、电路板制作及焊接、编写程序,到最后的调试,我学到了很多东西。
在这次实验中,遇到了很多的问题,通过慢慢分析问题,使我收获很多,有很多知识是在其中收获到的。
通过这次实验,我深刻地理解了周期信号采集中的很多问题,怎样利用MSC控件和单片机通信以及VC画出波形等一系列问题。
另外思考了怎样用软件的方法测几种常见波形的频率并自己编写相应的实现代码,这进一步提升了我在编程方面的信心。
总之,收获很大。