51单片机的超声波测距系统【proteus仿真+程序+报告+原理图】 您所在的位置:网站首页 电路程序设计实验报告 51单片机的超声波测距系统【proteus仿真+程序+报告+原理图】

51单片机的超声波测距系统【proteus仿真+程序+报告+原理图】

2024-07-05 16:04| 来源: 网络整理| 查看: 265

1、主要功能

该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。

利用51单片机实现超声波测距功能。利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器计时,读取时间,计算距离,测量结果输出给数码管显示。同时可以通过按键设定报警距离,如果距离过大或者过小,蜂鸣器都会报警。

可实现基本功能:

1、超声波测量距离

按键功能:

1、设置报警值的上限

2、设置报警值的下限

2、仿真

protues 仿真使用的是8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)

3、程序代码

只是放上来了部分代码,仅供参考。

/* 启动超声波程序 */ void StartModule(void) { Ttig = 1; //启动一次模块 _nop_(); //延时一段时间,至少10us以上 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); Ttig = 0; } /* 计算测距 */ void count(void) { StartModule(); //启动一次超声波 while(!Echo); //等待超声波模块输出IO拉高 TR0 = 1; //开启定时器计时 while(Echo); //等待超声波模块输出IO拉低 TR0 = 0; //关闭定时器计时 /* 计算距离 */ time = TH0 * 256 + TL0; //得到的时间,专业写法应该是这样:time = TH0 =S_H || S


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有