找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7274|回复: 13
收起左侧

51单片机超声波测距报警系统Proteus仿真+程序 亲测可用

  [复制链接]
ID:753230 发表于 2020-7-18 23:14 | 显示全部楼层 |阅读模式
Proteus仿真图及程序文件由附件下载
要想做超声波测距系统的仿真,核心是怎么解决这个问题:实物系统实际存在的超声波并利用它测距如何在仿真图中实现。我也下载过很多别人的仿真图,可是自己一运行就是没显示,全部都不能用,其实问题就是出在仿真图中超声波发射接收模块。经过修改的仿真图如下(亲测可用)
1.png
这个仿真图还包含按键设置模块和报警模块(前者用于设置报警值,后者在测得距离小于设置报警值时候蜂鸣器报警),由上图中标注的按键模块和报警模块实现,按键设置模块用法如下:
按下一次KEY1,显示屏显示当前设置的报警值,按下KEY2最小值加1CM,按下KEY2减1CM,设置完成后按下KEY1保存,显示屏返回显示距离,如此往复循环。


KEIL程序框架图
2.png

单片机源程序如下:
  1. #include "task.h"

  2. extern unsigned int S;        //声明距离缓存变量,在文件"task.c"中定义
  3. extern unsigned int dis_buf[4];        //声明显示缓存数组,在文件"task.c"中定义
  4. extern unsigned int code duan_ma[16];
  5. extern unsigned int S_H, S_L;        //S_H:报警上限值,默认400cm,S_L:报警下限值,默认10cm



  6. /* 主函数 */
  7. void main(void)
  8. {
  9.         digDuan = 0x40;                //显示"----"
  10.         digWei1 = 0;
  11.         digWei2 = 0;
  12.         digWei3 = 0;
  13.         digWei4 = 0;
  14.         delayms(1000);                //延时大约1s
  15.         InitTimer0();                //定时器0初始化

  16.         while(1)
  17.         {
  18.                 count();                                        //计算距离
  19.                 if(S>=S_H || S<=S_L)                //如果超出设定的范围,则显示"---"
  20.                 {
  21.                         dis_buf[3] = 0x00;
  22.                         dis_buf[2] = 0x40;                 //显示"---"
  23.                         dis_buf[1] = 0x40;
  24.                         dis_buf[0] = 0x40;       
  25.                         BEEP = 0;                        //蜂鸣器鸣叫
  26.                         delayms(1000);
  27.                 }
  28.                 else
  29.                 {
  30.                         BEEP = 1;                        //关闭蜂鸣器
  31.                         dis_distance();                //显示距离
  32.                 }

  33.                 if(key_scan() == 1)                //如果按下设置键,则进入设置报警功能
  34.                 {
  35.                         BEEP = 0;                        //按键提示音
  36.                         delayms(50);
  37.                         BEEP = 1;
  38.                         delayms(100);
  39.                          key_fuction();                //进入设置报警功能
  40.                 }                       
  41.         }
  42. }
复制代码

所有资料51hei提供下载:
雷达测距.rar (120.28 KB, 下载次数: 454)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:262 发表于 2022-12-16 03:18 | 显示全部楼层

这是个无源的蜂鸣器,怎么可能会有声音,换成有源的就行了,看教程
http://www.51hei.com/bbs/dpj-209241-1.html

换好了蜂鸣器的版本.7z

117.37 KB, 下载次数: 55, 下载积分: 黑币 -5

回复

使用道具 举报

ID:242753 发表于 2020-7-19 07:42 | 显示全部楼层
的确网上很多关于超声测距的仿真都有楼主说的问题
回复

使用道具 举报

ID:750491 发表于 2020-12-20 14:26 来自手机 | 显示全部楼层
加个温度补偿
回复

使用道具 举报

ID:864717 发表于 2020-12-22 13:43 来自手机 | 显示全部楼层
程序运行结果:
51hei.png
回复

使用道具 举报

ID:864717 发表于 2020-12-23 08:47 来自手机 | 显示全部楼层
qiaodou 发表于 2020-12-22 13:43
程序运行结果:

我的代码显示错误,让师傅给调师傅说缺的东西太多了调不出来,能分享一下代码吗,感谢大佬
回复

使用道具 举报

ID:864717 发表于 2020-12-23 08:52 来自手机 | 显示全部楼层
我的代码运行出来是错的,让师傅给调说是缺的太多了,什么问题呢能分享一下代码吗谢谢大佬孩子要交设计了能分享能分享
回复

使用道具 举报

ID:864717 发表于 2020-12-23 08:58 来自手机 | 显示全部楼层
qiaodou 发表于 2020-12-22 13:43
程序运行结果:

能分享一下代码吗
回复

使用道具 举报

ID:830448 发表于 2021-3-18 18:38 来自手机 | 显示全部楼层
发射模块和接收模块是一起的吗
回复

使用道具 举报

ID:1056758 发表于 2022-12-15 20:54 | 显示全部楼层
蜂鸣器没声音
回复

使用道具 举报

ID:45879 发表于 2022-12-16 09:29 | 显示全部楼层
当年的毕设跟这个类似
回复

使用道具 举报

ID:1058975 发表于 2023-1-8 09:53 | 显示全部楼层
不错,可以参考
回复

使用道具 举报

ID:802770 发表于 2023-2-9 15:01 | 显示全部楼层
请问左下角的模拟脉冲是为了增加真实度吗?有别的具体作用吗?
回复

使用道具 举报

ID:914036 发表于 2024-3-22 15:40 | 显示全部楼层
不会用超声波,试试看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表