历史上的今天
今天是:2025年01月22日(星期三)
2018年01月22日 | 51单片机设计测距仪原理及其应用
2018-01-22 来源:eefocus
5l系列 单片机 中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时/计数器TO和T1,4个8 b的工/O端I:IP0,P1,P2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(E~PROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。该系列单片机引脚与封装如图1所示。

5l系列 单片机 提供以下功能:4 kB存储器;256 BRAM;32条工/O线;2个16b定时/计数器;5个2级中断源;1个全双向的串行口以及时钟电路。
空闲方式:CPU停止工作,而让RAM、定时/计数器、串行口和中断系统继续工作。
掉电方式:保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。
5l系列 单片机 为许多控制提供了高度灵活和低成本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。
2 单片机 实现测距原理
单片机 发出超声波测距是通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射和接收回波的时间差tr,然后求出距离S=Ct/2,式中的C为超声波波速。
限制该系统的最大可测距离存在4个因素:超声波的幅度、反射的质地、反射和入射声波之间的夹角以及接收换能器的灵敏度。接收换能器对声波脉冲的直接接收能力将决定最小的可测距离。为了增加所测量的覆盖范围、减小测量误差,可采用多个超声波换能器分别作为多路超声波发射/接收的设计方法。由于超声波属于声波范围,其波速C与温度有关,表1。列出了几种不同温度下的波速。

在测距时由于温度变化,可通过温度传感器自动探测环境温度、确定计算距离时的波速C,较精确地得出该环境下超声波经过的路程,提高了测量精确度。波速确定后,只要测得超声波往返的时间r,即可求得距离5。其系统原理框图如图2所示。

单片机 (AT89C51)发出短暂的40kHz信号,经放大后通过超声波换能器输出;反射后的超声波经超声波换能器作为系统的输入,锁相环对此信号锁定,产生锁定信号启动单片机中断程序,得出时间t,再由系统软件对其进行计算、判别后,相应的计算结果被送至LED显示电路进行显示,若测得的距离超出设定范围系统将提示声音报警电路报警。
AT89C51通过外部引脚P2.0输出脉冲宽度为25/us、载波为40kHz的超声波脉冲串,加到射随器的基级,经功率放大推动超声波发射器发射出去。超声波接收器将接收到的反射超声波送到放大器进行放大,然后用锁相环电路进行检波。经处理后输出低电平,送到AT89C51的引脚利用该原理设计的实例:汽车防撞雷达
3.1 系统硬件设计
汽车防撞雷达可以帮助驾驶员及时了解车周围阻碍情况,防止汽车在转弯、倒车等情况下撞伤、划伤。其接收部分硬件电路如图3所示,发射、预置\控制、显示部分硬件电路如图4所示。

sP3.2,提供给软件进行处理。经过AT89C51对接收到的信息进行处理后,被测的距离茬LED上显示,显示的数据由串口线RXD和TXD输出到74LSl64,转化为并行数据控制LED的显示,采用动态显示。两位LED可表示4.9~0.1 m的距离,满足显示精度;若该距离小于预置的汽车低速安全刹车范围(如:1 n)或0.5m),报警电路发出适当的警告提示音,由P2.1的输出控制报警电路的工作。
3.2 系统软件设计
汽车防撞雷达根据超声测距原理用AT89C51 单片机 开发设计。整个软件采用模块化设计,由主程序、预置子程序、发射子程序、接收子程序、显示子程序等模块组成。
软件设计的主要思路是将预置、发射、接收、显示、声音报警等功能编成独立的模块,在主程序中采用键控循环的方式,当按下控制键后,在一定周期内,依次执行各个模块,调用预置子程序、发射子程序、查询接收子程序、定时子程序,并把测量的结果进行分析处理,根据处理结果决定显示程序的内容以及是否调用声音报警程序。当测得距离小于预置距离时,声音报警程序被调用。图5所示为程序的流程图。

4 结 语
利用51系列 单片机 设计的测距仪便于操作、读数直观。经实际测试证明,该类测距仪工作稳定,能满足一般近距离测距的要求,且成本较低、有良好的性价比。由于该系统中锁相环锁定需要一定时间,测得的距离有误差,在汽车雷达应用中此误差为3C111可忽略不计;但在精度要求较高的工业领域如机器人自动测距等方面,此误差不能忽略,只有通过改变--些硬件的应用实现对超声波的快速锁定,使误差进一步减小到0.31llnl,可以满足更高要求。
上一篇:单片机定时器程序
下一篇:X5045和X5043的读写程序
史海拾趣
|
前段时间买了2440开发板也没怎么搞,惭愧:$ 最近没啥其它事情就好好啃啃吧,哎……没什么基础啊,先欣赏下别人的东西吧 【mini2440开发板实现国际象棋人机对弈 】 我在机子上跑了一下,好像不太能跟电脑对弈啊,不知道哪个地方还有问题 ...… 查看全部问答> |
|
VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包? VC如何发彩信,已经实现ATDT*99***1#这一步了,下一步应该是什么,内容打包?如果打包? ATE AT+CMGF=0 AT+CIMI AT+CIMI获得IMSI IMSI 国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别 ...… 查看全部问答> |
|
/*进行SAA7121H的初始化*/ GPIO_RSET(GPVAL,0x0); addrI2C = 0xB8 >>1; /*选择第0路的I2C的地址*/ /*将第0路的视频输入口的数据口设为高阻状态, 使能SCLK,将第27脚设为输入*/ _IIC_write(hSeeddm642i2 ...… 查看全部问答> |
|
问题是这样的:我用flash烧写了一个控制电机的程序,不能运行,就把代码改了一下,再进行烧程序的时候就烧不进去啦,我也没有动“lock”和密码(在flash烧写的时候一直很小心的),怎么会锁住呢?很是不解。请EEWORLD老师和各位高手解答一下,谢谢 ...… 查看全部问答> |
|
各位高手,小弟近日在学习关于修改BSP的内容,有一种想法,设置多个引导行,然后在系统启动时按照需要选择相应的引导顺序,然后将config.h中的引导行 #define DEFAULT_BOOT_LINE \\ \"fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=ta ...… 查看全部问答> |
|
我是一个只有初中毕业没有读过多少书的人从小就爱好无线电记得很小的时候当通讯兵的父亲带回来几本电子方面的书籍从此就迷上了无线电那种痴迷程度决不亚于现在的小孩迷恋游戏机至今仍然清楚的记得曾经因为装成功一台6管收音机而兴奋的几天几夜没睡 ...… 查看全部问答> |




