基于51单片机超声波测距.docx
- 文档编号:7982219
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:13
- 大小:964.67KB
基于51单片机超声波测距.docx
《基于51单片机超声波测距.docx》由会员分享,可在线阅读,更多相关《基于51单片机超声波测距.docx(13页珍藏版)》请在冰豆网上搜索。
基于51单片机超声波测距
一设计要求
(1)设计一个以单片机为核心的超声波测距仪,可以应用于汽车倒车、工业现场的位置监控;
(2)测量围在0.50~4.00m,测量精度1cm;
(3)测量时与被测物无直接接触,能够清晰稳定地显示测量结果。
二超声波测距系统电路总体设计方案
本系统硬件部分由AT89S52控制器、超声波发射电路及接收电路、温度测量电路、声音报警电路和LCD显示电路组成。
汽车行进时LCD显示环境温度,当倒车时,发射和接收电路工作,经过AT89S52数据处理将距离也显示到LCD上,如果距离小于设定值时,报警电路会鸣叫,提醒司机注意车距。
超声波测距器的系统框图如下图所示:
图5系统设计总框图
由单片机AT89S52编程产生10us以上的高电平,由指定引脚输出,就可以在指定接收口等待高电平输出。
一旦有高电平输出,即在模块中经过放大电路,驱动超声波发射探头发射超声波。
发射出去的超声波经障碍物反射回来后,由超声波接收头接收到信号,通过接收电路的处理,指定接收口即变为低电平,读取单片机中定时器的值。
单片机利用声波的传播速度和发射脉冲到接收反射脉冲的时间间隔计算出障碍物的距离,并由单片机控制显示出来。
由时序图可以看出,超声波测距模块的发射端在T0时刻发射方波,同时启动定时器开始计时,当收到回波后,产生一负跳变到单片机中断口,单片机响应中断程序,定时器停止计数。
计算时间差,即可得到超声波在媒介中传播的时间t,由此便可计算出距离。
图6时序图
三超声波发射和接收电路的设计
分立元件构成的发射和接收电路容易受到外界的干扰,体积和功耗也比较大。
而集成电路构成的发射和接收电路具有调试简单,可靠性好,抗干扰能力强,体积小,功耗低的优点,所以优先采用集成电路来设计收发电路。
3.1超声波发射电路
超声波发射电路包括超声波产生电路和超声波发射控制电路两部分,可采用软件发生法和硬件方法产生超声波。
在超声波的发射电路的设计中,我们采用电路结构简单的集成电路构成发射电路:
图7由反相器构成的超声波发射电路
图7是由反相器74HC04构成的发射电路,用反相器74HC04构成的电路简单,调试容易,易通过软件控制。
单片机输出的方波经过反相器接到发射器T1的两极,用图中的推挽形式将方波信号加到发射器T1两端,可以提高发射器T1的发射强度。
图中把两个非门的输出接到一起的目的是为了提高其吸入电流,电路驱动能力提高。
74HC04是一个高速CMOS六反相器,具有对称的传输延迟和转换时间,而相对于LSTTL逻辑IC,它的功耗减少很多。
另外,上拉电阻R1、R2一方面可以提高反相器74HC04输出高电平的驱动能力,另一方面可以增加发射器T1的阻尼效果,缩短其自由振荡的时间。
3.2超声波接收电路
图8是由CX20106构成的接收电路,在实物的制作过程中,我们将用CX20106A这一型号代替。
CX20106A是索尼公司生产的彩电专用红外遥控接收器,是CX20106的改进型,也可用于超声波测试,有较强的抗干扰性和灵敏度。
CX20106A采用单列8脚直插式,超小型封装,+5V供电。
管脚1是超声波信号输入端,其输入阻抗约为40K;管脚2的R1、C4决定接收器R的总增益,增大电阻R1或减小电容C4,将使放大倍数下降,负反馈量增大,电容C4的改变会影响到频率特性,实际使用中一般不改动;管脚3与GND之间连接检波电容C2,考虑到检波输出的脉冲宽度变动大,推荐参数为3.3uF;管脚5上的电阻R2用以设置带通滤波器的中心频率,阻值越大,中心频率越低,取R2=200K时,中心频率约为42KHZ;管脚6与GND之间接入一个积分电容C3,电容值越大,探测距离越短;管脚7是遥控命令输出端,它是集电极开路的输出方式,因此该引脚必须接上一个上拉电阻到电源端,没接收信号时,该端输出为高电平,有信号时则会下降;管脚8接+5V电源。
图8CX20106构成的接收电路
综合以上的分析,在由集成电路构成的接收和发射电路中,发射电路我们选用由反相器构成的电路,接收电路采用由红外接收检波芯片CX20106A构成,主要是考虑到系统的调试简单,成本低以及可靠性好。
四单片机主机系统电路
4.1复位电路
单片机在RESET端加一个大于20ms正脉冲即可实现复位,上电复位和按钮组合的复位电路如图9。
在系统上电的瞬间,RST与电源电压同电位,随着电容的电压逐渐上升,RST电位下降,于是在RST形成一个正脉冲。
只要该脉冲足够宽就可以实现复位。
当人按下按钮SW1时,使电容C1通过R1迅速放电,待SW1弹起后,C1再次充电,实现手动复位。
图9复位电路
4.2时钟电路
当使用单片机的部时钟电路时,单片机的XTAL1和XTAL2用来接石英晶体和微调电容,如图10所示。
图10时钟电路
4.3按键电路
我们通过P1.0来启动测量,程序过查询P1.0的电平来检测是否按键被按下,在软件过软件延时来消除按键的机械抖动。
图11按键电路
4.4蜂鸣器电路
本次设计通过一只蜂鸣器来提示用户按键按下了,现在单片机开始了测距。
蜂鸣器是一块压电晶片,在其两端加上3-5V的直流电压,就能产生3KHz的蜂鸣声,电路如图12。
通过单片机软件产生3KHz的信号从P3.7口送到三极管9013的基极,控制着电压加到蜂鸣器上,驱动蜂鸣器发出声音。
图12蜂鸣器电路
4.5温度测量电路
由于超声波的传播速度c会受温度、湿度、压强等的影响,其中温度的影响尤为严重。
因此在测量精度要求高的场合,应通过温度补偿对超声波的传播速度进行校正,以减小误差。
图13温度检测电路
本系统采用DALLAS公司的DS18B20数字式温度传感器进行温度测量,它所测量的温度值用9位二进制数直接表示,这些值通过DS18B20的数据总线直接输入CPU,无需A/D转换,而且读写指令、温度转换指令都是通过数据总线传入DS18B20,无需外部电源。
DS18B20数字温度传感器与AD590、LM35等温度传感器相比,具有相当的测温围和精度,温度测量精确、不受外界干扰等优点。
4.6LCD显示电路
本设计采用LCD液晶显示屏来显示距离和温度,具有体积小、功耗低、界面美观大方等优点,这里使用YB1602液晶屏,它具有16个引脚,其正面左起为第一脚,如图14所示:
图14LCD1602实物
第一脚VSS:
接地。
第二脚VDD:
+5V电源。
第三脚VEE:
对比度调整端。
使用时通过接一个10K的电阻来调节。
第四脚RS:
寄存器选择信号线,H为数据选择,L为指令选择。
第五脚RW:
读写信号线。
第六脚E:
使能端,当E由高电平跳变为低电平时执行命令。
第7-14脚:
8位数据线D0-D7。
第十五脚BLA:
背光电源正极输入端。
第十六脚BLK:
背光电源负极输入端。
图15LCD显示电路
4.7电源电路
电源电路采用普通可调电源供电,该电源不含稳压器,所以在设计中需要用稳压器进行稳压。
我们选用LM7805来获得稳定的+5V直流电压。
输入电压(<21V)经过7805的稳压输出+5V的电压,图中的D2为保护7805,防止电源极性接反损坏7805,滤波电容采用100uF电解和104瓷片电容并联使用,电磁兼容的实践证明,两个差100倍的电容并联使用效果很好。
本设计电源电路如下:
图16电源电路
五.系统软件设计
5.1系统程序的结构
(1)DS18B20温度传感器接口模块,分为初始化程序、写入命令以及读取子程序等部分;
(2)基于YB1602的显示模块,分为初始化子程序、写入子程序以及显示子程序;
(3)温度补偿与距离计算模块,分为超声波发送控制程序、接收处理程序、温度补偿子程序等。
本次设计使用C语言编写程序,C语言相比汇编有许多的优势,编译器使用Keil
Version2进行程序编译,Keil功能强大使用方便。
在编译完成后,通过Proteus软件进行仿真,对设计进行验证和优化。
如图17所示描述了各个模块的关系:
图17系统软件方框图
5.2系统主程序
本设计主程序的思想如下:
(1)温度为两位显示,距离为四位显示单位为mm;
(2)温度每隔900ms采样一次,DS18B20在12位精度下转换周期为750ms,故900ms满足该速度要求;超声波每隔60ms发送一次。
(3)按键SW2为测量启动键;
(4)系统采用AT89S52的时钟:
12MHz,每记一次数为1us;
图18主程序流程图
5.340KHz超声波发送子程序
超声波每过60ms发送一次,通过定时器T0中断发送超声波,超声波发送后延时一段时间后返回,防止余波被接收头接收误判,流程图如下:
图19超声波发送子程序流程图
5.4DS18B20温度采集程序
DS18B20的工作流程是,初始化
ROM操作指令
存储器操作指令
数据传输。
其工作时序包括:
初始化时序、写时序和读时序。
图20温度采集程序流程图
5.5距离计算子程序
距离计算中,实行了温度补偿和角度补偿。
流程图如下:
图21距离计算子程序流程图
5.6数据转换子程序
经过程序求出的数据原码无法直接用于显示,必须转换为LCD所接受的BCD码的形式。
图22数据转换子程序流程图
5.7LCD显示子程序
LCD液晶显示程序分为液晶初始化、读忙、写指令和写数据操作,液晶显示器是一块慢器件,所以在执行每条指令之前必须确定模块忙标志为低电平(不忙),否侧此指令无效。
液晶显示子程序流程图如下:
图23LCD显示子程序
在程序中,我们将测量的各种结果存放到一个数组num[]中,然后通过这个数组的数据到预先存放字符的数组中去按num[]中的数据的顺序去读取出预存在numcode[]中的字符然后送到LCD中显示。
5.8基于Proteus的软件仿真
图24Proteus仿真图
图25波形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 超声波 测距