OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5347|回复: 2

超声波测距

[复制链接]

23

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
173
金钱
173
注册时间
2013-10-8
在线时间
0 小时
发表于 2013-11-24 04:52:18 | 显示全部楼层 |阅读模式
  float S,a;       //距离变量 
 S=TH0*256+TL0;//取出定时器值高8位和低8位合并                      *256是把TH0左移8位吗,这里s 的单位是ms还是us
 S=S/58;       //为什么除以58等于厘米,  Y米=(X秒*344)/2,X秒=( 2*Y米)/344 -> X秒=0.0058*Y米 -> 厘米=微秒/58 

这里 Y米=X秒/0.0058 怎么转换呈
 厘米=微秒/58  








正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2013-11-24 09:41:48 | 显示全部楼层
回复【楼主位】小伟:
---------------------------------
第一个不是左移八位,是按着十六进制转十进制的算法,合并了刚好是TH0*256+TL0;S是单位应该是us,因为定时器是us的;
Y米=X秒/0.0058 转换呈  厘米=微秒/58 这个不就是简单的数学计算吗,几个单位之间的转换关系就出来了
回复 支持 反对

使用道具 举报

6

主题

153

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-11-24 20:42:10 | 显示全部楼层
的确是左移,这里的左移的意义是将2个8位数据合成一个16位数据,其中TH0是高8位,TL0是低8位。
但我对这个程序有点疑问,float不应该是32位的数据类型吗 这里把16位赋给一个float型的低16位,也许/58是一个提示,代码不全,不能判断。
第二个问题楼上说过了。
~~~~ 欢迎讨论,拒绝谩骂 ~~~~
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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