找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 36738|回复: 78
打印 上一主题 下一主题
收起左侧

Proteus超声波测距仿真电路图+单片机源程序

  [复制链接]
跳转到指定楼层
#
ID:236171 发表于 2020-4-1 00:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大多数人感觉超声波测距proteus仿真是无法实现的,虽然proteus自带的库有GUR03和SRF04两种模型,但是却与实际传感器使用方法相差甚远,即使求助度娘也很难找到简单易懂的教程。



之前很多人想做超声波测距仿真但都没有找到很好的办法去实现,在软件里没有这样的元件,有人用一个按键开关去模拟仿真,这样仿真出来的效果,非常不好。还有人用555时基电路产生一个延时信号(555电路作为超声波仿真的内部元件),来模拟超声波头发送后遇到回波返射回来的这阶段时间,来对单片机超声波测距单片机系统进行模拟,能完成对超声波测距模块大致仿真,但需要繁杂的设计。

下面是一个超声波测距模块的proteus模型,能直接用于proteus仿真,且使用方法与实际传感器几乎一致,模型如下图。楼主千辛万苦终于完成了仿真,分享交流一下,请大家不啬赐教!

(library文件见附件)

下面是仿真效果:


单片机程序代码:
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <LCDcmd.h>

  4. #define Delay4us(){_nop_();_nop_();_nop_();_nop_();}

  5. sbit LEDRed=P2^4;        //测距指示灯,亮表示正在测距,灭表示测距完成
  6. sbit Trig=P1^7;                //HC-SR04触发信号输入
  7. sbit Echo=P1^6;                //HC-SR04回响信号输出

  8. float DistanceValue=0.0;        //测量的距离值
  9. float SPEEDSOUND;                                //声速

  10. //延时函数 20微秒 @12.000MHz
  11. void Delay20us()
  12. {
  13.         uchar i;
  14.         _nop_();
  15.         i = 7;
  16.         while (--i);
  17. }


  18. //测量距离
  19. float MeasuringDistance()
  20. {
  21.         //最大定时时间约65ms
  22.         TH0=0;
  23.         TL0=0;
  24.         
  25.         //生成20us的脉冲宽度的触发信号
  26.         Trig=1;                                
  27.         Delay20us();
  28.         Trig=0;

  29.         //等待回响信号变高电平
  30.         while(!Echo);        
  31.         TR0=1;                //启动定时器0

  32.         //等待回响信号变低电平
  33.         while(Echo);               
  34.         TR0=0;                //关闭定时器0

  35.         //返回距离值(mm)
  36.         return (SPEEDSOUND*(TH0*256.0+TL0))/2000;
  37. }

  38. //HCSR04初始化
  39. void HCSR04_Initialize()
  40. {

  41.         SPEEDSOUND=334.1+25*0.61;                                
  42.         Trig=0;        
  43.         Echo=0;
  44.         TMOD=0x01;
  45. }

  46. //测距的数值排序求平均
  47. float DistanceStatistics()
  48. {
  49.         uchar i;
  50.         float disData;
  51.         for(i=0;i<7;i++)          //连续测距
  52.         {
  53.                 disData+=MeasuringDistance();        
  54.                 delay(1);        
  55.         }
  56.         return disData/7.0;
  57. }

  58. void main()
  59. {

  60.         LcdInitiate();//1602初始化
  61.         HCSR04_Initialize();//HC-SR04初始化
  62.         while(1)
  63.         {
  64.                 DistanceValue= DistanceStatistics()        ;
  65.                 display_val((int)DistanceValue,0x45);//显示距离值
  66.                 delay(1000);
  67.                 LEDRed=~LEDRed;                //测距系统工作指示灯
  68.                
  69.         }
  70. }

复制代码

全部文件已打包,请自行下载(2个文件内容一样,推荐下载7z的):
7z: 7z压缩版.7z (96.58 KB, 下载次数: 263)
winrar: 超声波测距(仿真原理图+源程序).rar (102.08 KB, 下载次数: 1253)


评分

参与人数 3黑币 +72 收起 理由
15961840023 + 12 很给力!
Jeff_BlindCat + 10 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏29 分享淘帖 顶7 踩
回复

使用道具 举报

78#
ID:1006117 发表于 2022-2-21 21:07 | 只看该作者
高级的设计
回复

使用道具 举报

77#
ID:1005758 发表于 2022-2-18 22:02 | 只看该作者
午夜蹦迪丶 发表于 2020-4-1 10:16
我用的软件版本是proteus 8.8 SP1,低于此版本的软件可能会打不开,现在将我的软件安装包和原理图单独发出 ...

非常感谢你的分享,让还属于小白的我能学到挺感兴趣的东西
回复

使用道具 举报

76#
ID:995633 发表于 2021-12-22 13:45 | 只看该作者
真的牛呀,大佬做的很全
回复

使用道具 举报

75#
ID:974642 发表于 2021-10-24 21:22 | 只看该作者
怎么实现距离呢
回复

使用道具 举报

74#
ID:944175 发表于 2021-6-24 19:58 来自手机 | 只看该作者
楼主能讲一下仿真的使用方法吗?
回复

使用道具 举报

73#
ID:940324 发表于 2021-6-22 08:49 | 只看该作者
楼主,那个超声波的元器件是怎么找到的?
回复

使用道具 举报

72#
ID:913669 发表于 2021-5-26 23:19 | 只看该作者
yilun123 发表于 2020-4-17 15:41
楼主你好,我想问一下你:在你这个超声波模块仿真中,我们怎么才能看出他已经测到前面地距离了,因为我从新 ...

我也是
回复

使用道具 举报

71#
ID:913669 发表于 2021-5-19 21:42 | 只看该作者
Gflgfl 发表于 2020-5-15 23:46
问一下楼主这个超声波器件怎么仿真,滑动变阻器啥用处,还有怎么知道超声波测得距离(好检验看看显示的对不 ...

我也想知道,同问
回复

使用道具 举报

70#
ID:922592 发表于 2021-5-18 16:29 来自手机 | 只看该作者
第一次打开里面有波形图,第二次打开没有了,然后在仿真非运行状态下点击菜单栏的debug,找到
回复

使用道具 举报

69#
ID:922592 发表于 2021-5-18 15:48 来自手机 | 只看该作者
感谢楼主分享资料,用proteus8 白菜直接版运行没有闪退现象,打开直接自动调用7z压缩版里面的程序了,有波形图,很nice
回复

使用道具 举报

68#
ID:920364 发表于 2021-5-12 23:34 | 只看该作者
优秀,正在尝试。请问SONAR2这个元件,元件库里自带吗
回复

使用道具 举报

67#
ID:913669 发表于 2021-5-7 18:51 | 只看该作者
博主大神,proteus没有stc15f2k60s2怎么仿真
回复

使用道具 举报

66#
ID:916982 发表于 2021-5-7 15:10 | 只看该作者
感谢楼主的分享,学到了,学到了
回复

使用道具 举报

65#
ID:582255 发表于 2021-4-30 14:58 | 只看该作者
proteus7.的文件用8可以打开吗
回复

使用道具 举报

64#
ID:328014 发表于 2021-4-28 19:41 | 只看该作者
yynb 发表于 2021-4-28 17:46
请问这是怎么仿真的 程序下进去之后怎么出波形图

要先安装Proteus8.8白菜直装版,然后载入单片机的hwcj.hex和超声波的UltraSonicTEP.HEX,然后运行仿真打开debug里面的示波器就可以看到波形了

超声波测距(仿真原理图 源程序).7z

96.58 KB, 下载次数: 2, 下载积分: 黑币 -5

回复

使用道具 举报

63#
ID:906711 发表于 2021-4-28 17:46 | 只看该作者
请问这是怎么仿真的 程序下进去之后怎么出波形图
回复

使用道具 举报

62#
ID:374456 发表于 2021-4-19 17:53 | 只看该作者
想问一下怎么创建这个超声波的元件
回复

使用道具 举报

61#
ID:899092 发表于 2021-4-18 15:15 | 只看该作者
lcd只亮不显示字符,p0.7一直是高电平
回复

使用道具 举报

60#
ID:902063 发表于 2021-4-11 09:26 | 只看该作者
感谢,终于看着评论解决了问题
回复

使用道具 举报

59#
ID:345393 发表于 2021-4-9 15:42 | 只看该作者
报错  不能用
回复

使用道具 举报

58#
ID:830448 发表于 2021-3-18 18:35 来自手机 | 只看该作者
午夜蹦迪丶 发表于 2020-4-5 16:27
你好,请直接提出你的问题,我会尽力提供帮助

设计添加一个接收模块可以吗
回复

使用道具 举报

57#
ID:522191 发表于 2021-1-4 16:08 | 只看该作者
请问啥版本的Proteus
回复

使用道具 举报

56#
ID:838572 发表于 2020-11-23 09:37 | 只看该作者
感谢楼主奉献;好资料,51黑有你更精彩!!!
回复

使用道具 举报

55#
ID:566202 发表于 2020-11-21 16:55 来自手机 | 只看该作者
请问这个超声波测距的量程和测量误差是多少?
回复

使用道具 举报

54#
ID:845951 发表于 2020-11-20 10:28 | 只看该作者
根据这个原理图进行实物焊接可以吗?
回复

使用道具 举报

53#
ID:845951 发表于 2020-11-19 15:15 | 只看该作者
可以试试用信号发生器来模拟超声波发射和接收信号
回复

使用道具 举报

52#
ID:840378 发表于 2020-11-7 23:06 | 只看该作者
我遇到了这个问题,请问这个怎么解决
Internal Exception: access violation in module 'PIC16EX.DLL' [000686CA].
回复

使用道具 举报

51#
ID:831209 发表于 2020-10-18 15:09 来自手机 | 只看该作者
仿真出现问题
回复

使用道具 举报

50#
ID:495287 发表于 2020-7-17 22:25 | 只看该作者
楼主奉献助众人,
耐心解答责任心;
电路源码皆呈现,
小小十分表吾心。
回复

使用道具 举报

49#
ID:511084 发表于 2020-7-16 18:49 | 只看该作者
楼主你好,里面的一个压缩包怎么损坏了
回复

使用道具 举报

48#
ID:511084 发表于 2020-7-16 18:41 | 只看该作者
有个压缩包损坏了。没法用
回复

使用道具 举报

47#
ID:800738 发表于 2020-7-12 12:17 | 只看该作者
仿真时,HEX文件打不开是怎么回事???
回复

使用道具 举报

46#
ID:797980 发表于 2020-7-5 19:59 | 只看该作者
可以设置最低值吗?
回复

使用道具 举报

45#
ID:495287 发表于 2020-6-27 13:41 | 只看该作者
马克,感谢楼主分享,学习。
回复

使用道具 举报

44#
ID:769826 发表于 2020-6-25 19:33 | 只看该作者
请问怎么设置距离啊
回复

使用道具 举报

43#
ID:764615 发表于 2020-6-7 01:31 | 只看该作者
大神您好,我按照您的图连得电路,换了trig和echo的连接引脚,删除了led,程序里也改了,但是仿真时lcd没有数字,是怎么回事啊
回复

使用道具 举报

42#
ID:750980 发表于 2020-6-4 15:11 | 只看该作者
楼主想问一下,能不能说一下整个仿真的大致思路啊
回复

使用道具 举报

41#
ID:764124 发表于 2020-5-29 14:24 来自手机 | 只看该作者
大佬,这咋办呀

1590733447068..jpg (1.27 MB, 下载次数: 280)

1590733447068..jpg
回复

使用道具 举报

40#
ID:727764 发表于 2020-5-24 12:29 来自手机 | 只看该作者
就是说传感器发出的超声波碰到啥才返回的
回复

使用道具 举报

39#
ID:727764 发表于 2020-5-24 12:28 来自手机 | 只看该作者
请问,那个仿真的话,障碍物是怎么实现的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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