找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于STC51单片机超声波测距(精简设计只需三个元件)

  [复制链接]
跳转到指定楼层
楼主
ID:123732 发表于 2016-10-16 21:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于STC51单片机超声波测距精简设计只需三个元件(测距模块暂且算做是一个元件吧
1.所需元件:STC单片机+超声波模块+4位共阳数码管
2.原理:单片机向测距模块trig脚发送20us的高电平触发测距,Echo 测距结束时会输出高电平,电平时长为超声波信号往返时间之和。Echo 脚开始输出高电平时启动定时计数器计时,当Echo 脚高电平结束时停止计数,根据定时器的时间可算出距离。
3.连接:单片机插在面包板上数码管直接插在单片机上面(引脚一一对应见原理图)测距模块trig脚接P5.4Echo 脚接P5.5












  1. /***************************************************************                                                                                                        
  2. 作者:    刘海龙(部分程序来自网络及STC官网)
  3. 程序名:  51单片机超声波测距()    
  4. 编写时间:2016年7月4日
  5. 硬件支持:超声波模块US-020、四位共阳数码管、STC单片机                                                                  
  6. /***************************************************************/
  7. #include <STC15w.H>//        单片机头文件
  8. #include <intrins.h>
  9. #include <4LED_YANG.h>//包含共阳数码管驱动程序
  10. #define uchar unsigned char
  11. #define uint  unsigned int
  12. uint timeH,timeL;//定义2个存储计时器值的变量
  13. uint distance;//定义测量值的变量
  14. uint time;//定义Echo脚返回的高电平时间变量
  15. /***************************************************************/
  16. sbit        Echo         =         P5 ^ 5;        //超声波测距模块Echo连接的IO
  17. sbit        Trig         =         P5 ^ 4;        //超声波测距模块Trig连接的IO
  18. /*******************************************/
  19. void delay1ms (unsigned int a){ // 1ms延时程序
  20.         unsigned int i;
  21.         while( --a != 0){
  22.                 for(i = 0; i < 630; i++);//STC单片机在晶振为12MHz时i值上限为630  
  23.         }                                                       //AT89C51单片机在外部晶振为12MHz时i值上限为125
  24. }
  25. /*******************************************/               
  26. void delay_20us()                //@12.000MHz
  27. {
  28.         unsigned char i;
  29.         _nop_();
  30.         _nop_();
  31.         i = 57;
  32.         while (--i);
  33. }
  34. /*********************************************************************************************
  35. 函数名:定时器初始化函数
  36. 调  用:INT_init();
  37. /**********************************************************************************************/
  38. void INT_init (void){
  39.         TMOD=0x01; //定时器0,16位工作方式计数模式
  40.         TH0=0;   //定时器0清零
  41.     TL0=0; //定时器0清零
  42.         EA = 1;        //总中断开
  43.         Trig=0;//拉低为下次触发做准备   
  44. }
  45. //***************************************************************
  46. void dist (void){//测量距离程序
  47.         Trig=1;         //
  48.         delay_20us();   //延时20us
  49.         Trig=0;         //Trig输出20us高电平触发测距
  50.         while(Echo==0); //等待Echo回波引脚变高电平
  51.                 TR0=1;//程序运行到此处时说明Echo脚变成了高电平,此时启动T0开始计时
  52.                 while(Echo==1); //等待Echo回波引脚高电平结束               
  53.         TR0=0;//程序运行到此处时说明Echo脚变成了低电平,此时T0停止计时
  54.                 time=TH0*256+TL0;
  55.         distance=time*0.170;  //测量距离
  56.         distance=distance-2;//测量起点不同减去的数值不同        
  57.         TH0 = 0;  //重置计时器
  58.             TL0 = 0;
  59.                         
  60. }
  61. void main()//主函数  
  62. {

  63.         init();//单片机IO口工作方式初始化
  64.         INT_init;//T0初始化
  65.         while(1)        
  66.     {        
  67.                 dist();//测量距离
  68.                 disp();//数码管显示距离
  69.                 delay1ms(20);//两次测量间需要有10ms间隔                                            
  70.     }
  71. }
  72. //***************************************************************END
复制代码



超声波测距程序.rar

3.08 MB, 下载次数: 330, 下载积分: 黑币 -5

源程序+原理图

评分

参与人数 8黑币 +41 收起 理由
实验室224 + 5 共享资料的黑币奖励!
qiuyong + 5 共享资料的黑币奖励!
ELC_666 + 1 共享资料的黑币奖励!
卡曼ride达 + 5 很给力!
神奇国度 + 5
qwert55n + 10
紫电1 + 5 很给力!正好下载学习一下
滴~电子小白 + 5 赞一个!支持楼主!

查看全部评分

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

使用道具 举报

沙发
ID:58925 发表于 2016-10-18 09:06 | 只看该作者
果然够精简
回复

使用道具 举报

板凳
ID:123732 发表于 2016-10-18 10:14 | 只看该作者

谢谢夸奖
回复

使用道具 举报

地板
ID:165343 发表于 2017-2-19 10:05 | 只看该作者
下载看看
回复

使用道具 举报

5#
ID:184636 发表于 2017-3-30 07:27 | 只看该作者
没有仿真图吗
回复

使用道具 举报

6#
ID:123732 发表于 2017-4-3 20:26 | 只看该作者

没有仿真图
回复

使用道具 举报

7#
ID:185894 发表于 2017-4-3 23:46 | 只看该作者
下载看看
回复

使用道具 举报

8#
ID:182357 发表于 2017-6-2 11:33 | 只看该作者
你这是20脚单片机吧?哪有P5.5  P5.4的?
回复

使用道具 举报

9#
ID:112378 发表于 2017-11-8 22:01 | 只看该作者
好东西谢谢分享
回复

使用道具 举报

10#
ID:226801 发表于 2017-12-13 10:46 | 只看该作者
超级简单,学习楼主的程序一下,问问楼主,连三极管都不用,单片机会没事吗?还有精度如果,误差为正负多少个mm?
回复

使用道具 举报

11#
ID:279947 发表于 2018-1-26 14:34 来自手机 | 只看该作者
哈哈,正需要,谢谢啦
回复

使用道具 举报

12#
ID:279947 发表于 2018-1-26 14:52 | 只看该作者
回复回复,在找资料谢谢啦
回复

使用道具 举报

13#
ID:282659 发表于 2018-2-6 17:05 | 只看该作者
HC-SR04模块适用这套代码吗?
回复

使用道具 举报

14#
ID:288319 发表于 2018-3-6 17:26 | 只看该作者
谢谢大佬分享
回复

使用道具 举报

15#
ID:293351 发表于 2018-3-18 17:16 来自手机 | 只看该作者
的确是很精简,学习下!
回复

使用道具 举报

16#
ID:288319 发表于 2018-3-23 10:48 | 只看该作者
这个源程序为什么运行不出结果?
回复

使用道具 举报

17#
ID:306492 发表于 2018-4-12 11:46 | 只看该作者
学习一下
回复

使用道具 举报

18#
ID:344548 发表于 2018-6-4 12:01 | 只看该作者
学习一下
回复

使用道具 举报

19#
ID:76293 发表于 2018-6-4 13:16 | 只看该作者
厉害学习了这么精简效率好高啊
回复

使用道具 举报

20#
ID:120655 发表于 2018-6-9 23:56 | 只看该作者
最近在做这方面的,下载来看看。
回复

使用道具 举报

21#
ID:264212 发表于 2018-6-11 20:37 来自手机 | 只看该作者
没有考虑超声波的测距范围吧,当定时器溢出的时候,不应该再添加个中断处理吗
回复

使用道具 举报

22#
ID:365393 发表于 2018-7-5 10:07 | 只看该作者
学习一下
回复

使用道具 举报

23#
ID:336636 发表于 2018-8-4 11:24 | 只看该作者
没有仿真图嘛
回复

使用道具 举报

24#
ID:284846 发表于 2018-10-7 16:26 | 只看该作者
学习中,谢谢!
回复

使用道具 举报

25#
ID:399179 发表于 2018-10-7 20:19 来自手机 | 只看该作者
这个精度和最大距离是多少
回复

使用道具 举报

26#
ID:407940 发表于 2018-10-11 10:32 | 只看该作者
谢谢楼主,对我帮助很大
回复

使用道具 举报

27#
ID:72088 发表于 2018-10-11 12:13 | 只看该作者
rapemn 发表于 2017-6-2 11:33
你这是20脚单片机吧?哪有P5.5  P5.4的?

STC15W408AS单片机就有P5.5,P5.4,是个比较器两个输入脚,也可以做IO口使用
回复

使用道具 举报

28#
ID:408436 发表于 2018-10-12 09:58 | 只看该作者
确实精简
回复

使用道具 举报

29#
ID:244447 发表于 2019-2-4 17:52 来自手机 | 只看该作者
看着不错
回复

使用道具 举报

30#
ID:475092 发表于 2019-2-6 16:06 | 只看该作者
请问这个的精度和测量距离是多少?
回复

使用道具 举报

31#
ID:149992 发表于 2019-2-25 07:33 来自手机 | 只看该作者
looklook,这几天正好在用sr04
回复

使用道具 举报

32#
ID:480064 发表于 2019-2-25 13:38 来自手机 | 只看该作者
楼主可以加一下Q吗,我想学习一下3444131422
回复

使用道具 举报

33#
ID:231936 发表于 2019-2-26 11:34 | 只看该作者
另件齐备,做一个玩玩。
回复

使用道具 举报

34#
ID:67274 发表于 2020-4-5 14:55 | 只看该作者
发个我理解和修改的程序,也不枉我研究一晚上。stc15f104e通过。

超声.zip

38.13 KB, 下载次数: 10, 下载积分: 黑币 -5

回复

使用道具 举报

35#
ID:253767 发表于 2020-4-6 07:01 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

36#
ID:517951 发表于 2020-11-15 16:33 | 只看该作者
不错,值得学习。51hei有你更精彩!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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