送于51单片机超声波测距的问题。
我用的是AT89S52,12M的晶振,用的是C语言,为什么在从定时器里取得了回波引脚持续的高电平时间后,还要将数据再乘以12,单片机不是默认12分频了吗?定时器每加1的时...
我用的是AT89S52,12M的晶振,用的是C语言,为什么在从定时器里取得了回波引脚持续的高电平时间后,还要将数据再乘以12,单片机不是默认12分频了吗?定时器每加1的时间难度不是1us而是1us的12分之一?可是得到的测距结果又没有错,另外听说现在的51单片机可以实现不预分频了,要怎么实现?可以自己选择分频的大小吗?
展开
1个回答
展开全部
用AT89S52,12M的晶振,用C语言,在从定时器里取得了回波引脚持续的高电平时间后,根本不需要进行乘以12,只是要将计算的结果除2,才是距离值。
你可到“谷歌”上搜索一下《一款制作容易免调试的超声波测距板》,该超声波测距板结构简单、制作容易不需要调试、测量精度高,比较适合单片机初学都使用,同时也是单片机课程设计比较好的实训课题。该超声波测距系统,提供套件,及组装好的板件,含原理图、源程序、设计说明等。
你可到“谷歌”上搜索一下《一款制作容易免调试的超声波测距板》,该超声波测距板结构简单、制作容易不需要调试、测量精度高,比较适合单片机初学都使用,同时也是单片机课程设计比较好的实训课题。该超声波测距系统,提供套件,及组装好的板件,含原理图、源程序、设计说明等。
追问
distance_data=outcomeH; //测量结果的高8位
distance_data<<=8; //放入16位的高8位
distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据
distance_data*=12; //因为定时器默认为12分频
distance_data/=58; //微秒的单位除以58等于厘米
这是中间的一段代码,能解释一下吗?谢谢(outcomeH是从定时器取到的高8位数据,outcomeL是低8位)
追答
给你一段程序参考一下:
t=TH1;
t=t*256+TL1;
s=t*0.034; //0.034,为15℃时的声速,单位:厘米/秒
s=s/2; //除2,表示超声波来回路径除2后换算成超声波头与障碍物的距离。
艾因蒂克
2024-11-28 广告
2024-11-28 广告
新一代全矩阵采集(FMC),全聚焦(TFM),兼具3D功能的全功能缺陷检测仪 --相控眼PHASEYE FMC-64 让你的工作如虎添翼艾因蒂克科技(上海)有限公司 [Eintik Technologies] 于2013年在上海成立, 是一...
点击进入详情页
本回答由艾因蒂克提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询