切换到宽版
  • 5453阅读
  • 10回复

[C51]HC-SR04超声波测距 4位数码管显示 串口输出程序与模块分析 [复制链接]

上一主题 下一主题
离线zhangzhi297
 

发帖
42
M币
4117
专家
12
粉丝
47
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2016-05-09
今天下午专门腾出大块时间,来编写这个程序,昨天在网上搜了很多例程,发现都不能使用也不能很方便的模块化移植,网上例程大多是89系列单片机或者arduino的,没有找到我所使用的STC15W,索性决定自己写一个。
下午花了4个小时终于编写了这个自己能完全理解的程序,以后自己移植也方便,程序中能简化的都简化了,优化了很多地方,最后感觉运行稳定 。




编写过程中遇到很多困难,也收获很多经验。总结两条经验:①尽量不要使用需要动态扫描的数码管,多用一个定时器不说,还要消耗很多CPU资源,以后数码管点阵屏能用595驱动的就用。②HC-SR04驱动电压一定要5V,电压低了会严重影响测量距离。


使用串口读取大量数据,准备进行误差分析



作出散点图很明显发现数据有断层,大约每0.4cm就集中出现数据。



取多个间隔求出平均差值,大约为ΔL=0.4125cm,Δt=ΔL/声速=1.213235x10^-5 s,算得频率约为82Khz,大约为40Khz的两倍,由此可以判断出这个数据断层的原因是超声波模块自动发送的40khz方波造成的,这个误差由模块自己产生且无法避免,通过40khz反算得出距离间隔应为4.25cm,模块的数据手册上写精度可高达3mm是有一定虚假的,看来数据手册的参数也不可全信。


不过在2米的距离内,只有2cm左右的测量误差已经能够接受了。分析也差不多了,下面发出源程序。

本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共4条打赏 ,M币+18
离线路人乙

发帖
387
M币
3542
专家
1
粉丝
16
只看该作者 1楼 发表于: 2016-05-10
离线2545889167

发帖
13268
M币
20754
专家
302
粉丝
4860
只看该作者 2楼 发表于: 2016-05-10
请登录后查看
离线jackkane

发帖
6424
M币
4816
专家
15
粉丝
82
只看该作者 3楼 发表于: 2016-05-11
请登录后查看
离线kinneng

发帖
24095
M币
22888
专家
47
粉丝
3984
只看该作者 4楼 发表于: 2016-05-11
请登录后查看
离线人才1号
发帖
1
M币
-497
专家
0
粉丝
0
只看该作者 5楼 发表于: 2016-07-16
请登录后查看
离线alphax86

发帖
975
M币
2360
专家
1
粉丝
33
只看该作者 6楼 发表于: 2016-07-16
请登录后查看
离线rr246842
发帖
2
M币
-494
专家
0
粉丝
1
只看该作者 7楼 发表于: 2016-12-01
请登录后查看
离线15873706429
发帖
1
M币
0
专家
0
粉丝
1
只看该作者 8楼 发表于: 2017-04-13
请登录后查看
离线沧海一簇
发帖
492
M币
1344
专家
4
粉丝
41
只看该作者 9楼 发表于: 2017-04-19
请登录后查看
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个