为什么在超声波测距模块原理时t=TH1*256+TL1

超声波测距实验_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
超声波测距实验
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩23页未读,
定制HR最喜欢的简历
你可能喜欢51单片机测距仪 - 简书
51单片机测距仪
2014年上半年曾经试过做超声波测距仪,后来失败告终,还搞到买现成的惭愧啊。
2015年2月份上网剽窃人家的代码,终于成功测距。
剽窃人家的代码
while(!ECHO); //等待高电平 TR1 = 1; //打开计时器 while(ECHO); //等待低电平 TR1 = 0; //关闭计时器 time = TH1 * 256.0 + TL1; //计算时间 L = 0.18446*
配合我的简陋操作系统, 实现液晶LCD1602显示距离(三次的平均距离),
HC-SR04发射超声波在空气传播过程中碰到物体立即就返回, HC-SR04接收到反射波单片机就停止计时 根据超声波在空气(25℃)中的传播速度为 v=346m/s,单片机计时器记录的时间t,就可以计算出发射点到物体的距离s,即:s=vt/2=346t/2
经过单片机计算距离,LCD1602把距离显示出来。
51distancer.png
超声波采集器 原理 1.超声波 如图1所示,人们可以听到的声音的频率为20Hz~2KHz,也就是可听声波,超出此频率范围的声音,20Hz以下的声音称为低频声波,20KHz以上的声音称为超声波(Ultrasound),一般说话的频率范围是10Hz-8KHz。超声波方向性好,穿...
最近由于事情比较杂,加上自己懒得动手码字,一直没有更简书。刚好最近帮学弟做了一个超声波测距(含温度补偿)的小项目,觉得再看以前的示例程序不够通俗明了,站在过来人的视点,写一段简单的示例程序,给大家看看。
首先想说的是,单片机程序应该从时序图入手。了解外围器件的工...
一切开始之前,我们需要先来温习一个中学就学习过的物理原理: 常温常压下空气中的声速: 340m/s 声波雷达原理 超声波也是声波,它在1个标准大气压下,15℃的空气中的传播速度为340m/s。而声波在传播的过程中遇到障碍物时,会反射也会衍射,所以当我们测量出发出声波和听到回...
超声波测距的原理很简单,高中物理题不是做过很多次了么 :D 可以看到,知道时间间隔就能得到距离 L。 那么 HC-SR04 是怎么测距的呢?又怎么使用树莓派控制它? HC-SR04 介绍 HC-SR04 模块可以测量 3cm - 4m 的距离,精确度可以达到 3mm。这个模...
超声波测距原理:通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离。 模块特征 HC-SR04超声波测距模块具有测距距离精确,能和SRF05,SRF02等超声波测距相媲美,测量距离 ** 2cm~450cm (小编实测:10cm~300cm)。 工作...
增肌的同时减脂,其实我有一段时间的实验就是这样来的,练的是线条,体脂降低,且长肌肉,是可行的。如果真的需要可以请营养师算一下你的当日所需热量与蛋白质,这样效果会更佳。 但是对人的体能和训练基础有一定要求。那么就是摄入在一定热量的同时,多吃蔬菜和优质蛋白。而运动在无氧运动后加...
一直以来,以三星、苹果为代表的外资手机品牌在国内占据较大的市场份额,因此对待中国消费者也是趾高气扬的态度,因为对你好不好你都会买,所以三星和苹果常常在产品质量、售后等问题上对中国差别对待。 虽然如此,仍然会有一批忠诚的中国粉丝对其趋之若鹜,使得其气焰越发嚣张。不过,目前来看...
此生所愿乃何图,而况向来多寡孤。 杯里醉香常赖有,梦中吟味不曾无。 风光足兴自相寄,山水多情谁与娱? 留得鬓丝于镜里,老诗偏与众人殊。
今天早上六点多,儿子就要赶回北京,我送他到小区门口,虽然没了以往的掉泪,心里还是有些不舍,一整天心里空落落的。晚上儿子发来信息说招待所的房被退了,现在没有房间,只好住在中关村的一个简陋的小房子里,还发来了图片,心里好心疼他。但也只能安慰他凑合两夜,毕竟他是去学习的,不是去享...
其实我很羡慕“执子之手,与子携老”的爱情,曾经幻想着只谈一次恋爱,就与他步入婚姻的殿堂,希望我的初恋,会成为我唯一的恋人。但终究只是一个遥不可及的幻想。 时光穿梭到那个炎热的夏天,我集结了好几个女孩去围殴他,因为他给我起了一个外号,只不过是少男少女们的嘻笑打闹罢了。那天的阳...简易超声波测距装置_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
简易超声波测距装置
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
单片机课程设计-双向超声波测距加温度显示
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 14271|回复: 21
程序资料齐全的51单片机的液晶显示超声波测距仪
& &&&这款基于51单片机的液晶显示超声波测距仪,超声波模块使用的是US-100。这个基本上很常见的:通过一个矩形脉冲启动超声波,通过echo引脚计算出高电平的时间,这个已经有温度补偿!所以计算出来的时间是可以乘340m/s的。蜂鸣器用的是无源的,用PWM波就可以驱动啦!1k到5k。使用的液晶是1602液晶,以前也用过,实物图如下图所示:具体使用就不多说啦!下面是实物图及源程序,贴出来方便大家仿制。
第一个文件:#ifndef _1602_H_
#define _1602_H_
#include &reg52.h&
sbit RS=P1^0;
sbit RW=P1^1;
sbit EN=P1^2;
void delay();
void delay1(int z);
void write_com(unsigned char com);
void write_date(unsigned char date);
void L1602_init();
void L1602_char(unsigned char hang,unsigned char lie,char sign);
void L1602_string(unsigned char hang,unsigned char lie,unsigned char *p);
void L1602_int(unsigned char hang, unsigned char lie, int num);
#include &1602.H&
#include &reg52.h&
#define uint unsigned int
#define uchar unsigned char
void delay()
& &int i,j;
& &for(i=1;i&0;i--)
& & for(j=15;j&0;j--);& &
void delay1(int z)
& &int i,j;
& &for(i=z;i&0;i--)
& & for(j=110;j&0;j--);& &
void write_com(uchar com)
RW = 0;//写
void write_date(uchar date)
void L1602_init()
write_com(0x01); //清屏
& & write_com(0x38); //显示模式
write_com(0x0c); //显示和光标
write_com(0x06); //地址指针设置
void L1602_char(uchar hang,uchar lie,char sign)//显示单个字符
if(hang == 1) a = 0x80;
if(hang == 2) a = 0x80+0x40;
a = a + lie - 1;
write_com(a);//写地址
& & write_date(sign); //写数据
void L1602_string(uchar hang,uchar lie,uchar *p)&&//显示字符串
if(hang == 1) a = 0x80;
if(hang == 2) a = 0x80+0x40;
a = a + lie - 1;
write_com(a);
if(*p == '\0')
write_date(*p);
void L1602_int(uchar hang, uchar lie, int num)
& &uint gewei,shiwei,baiwei,
& &baiwei = temp / 1000;
& &shiwei = temp % 1000 / 100;
& &gewei = temp % 100 / 10;
& &xiaoshu = temp % 10;
& &if (num&=1000)
& && &L1602_char(hang, lie+1, baiwei+48);&&
L1602_char(hang, lie+2, shiwei+48);&&
L1602_char(hang, lie+3, gewei+48);
& && &L1602_char(hang, lie+4, '.');
L1602_char(hang, lie+5, xiaoshu+48);&&
& &else if (num&=100)
L1602_char(hang, lie+1, ' ');
L1602_char(hang, lie+2, shiwei+48);&&
& && &L1602_char(hang, lie+3, gewei+48);
& && &L1602_char(hang, lie+4, '.');
L1602_char(hang, lie+5, xiaoshu+48);&&
L1602_char(hang, lie+1, ' ');& &&&
L1602_char(hang, lie+2, ' ');
& && &L1602_char(hang, lie+3, gewei+48);
& && &L1602_char(hang, lie+4, '.');
L1602_char(hang, lie+5, xiaoshu+48);& &
第2个文件:#include&1602.h&
#define uchar unsigned char
#define uint unsigned int
sbit tring = P1^3; //超声波控制端
sbit echo = P3^2; //回波必须接在外部中断引脚上
sbit ledwarn = P2^0; //报警灯,低电平亮
sbit beep = P2^1; //报警蜂鸣器
uint displayC//显示计数
uint time = 0;//时间
unsigned long&&//距离
//浮点型的数据
uint flagSucceed = 0; //测量成功标志位
uint flagDisplay = 0; //开显示标志位
void delay_20us()
& & for(i=0;i&140;i++);
void init_shuju()
& &&&tring = 0;
& &&&distance = 0;
& &&&displayCount = 0;& &
void init_waibu0()
& && &&&IT0 = 0;& && && &&&//外部引脚为低时触发中断
& && &&&EX0=0;& && && && &//关闭外部中断
void timer0_Init()
TMOD = 0x11;& & //定时器0和1工作在16位方式
& & TH0 = ()/256;
TL0 = ()%6;
TR0 = 1;& && &&&//启动定时器
ET0 = 1;& && &&&//允许定时器0中断
void timer1_Init()
TMOD = 0x11; //定时器0和1工作在16位方式
ET1 = 1;&&//定时器1中断允许
void wbzd0() interrupt 0//下降沿触发
& &&&time =TH1*256+TL1;& & //取出定时器的值
& &&&flagSucceed = 1;& && &//置成功测量的标志
& &&&EX0=0; //关闭外部中断
& &//&&TR1=0;& && && &&&
void timer0() interrupt 1&&// 定时器0
TH0 = ()/256;
TL0 = ()%6;
displayCount ++;
if (displayCount &= 20)&&//1秒钟显示一次
& &flagDisplay = 1; //开显示
displayCount = 0;& &
void&&start_csb() //启动csb模块
& &tring = 1;
& &delay_20us();
& &tring = 0;
void main()
& & init_shuju();
& & init_waibu0();
& & timer0_Init();
& & timer1_Init();
& & L1602_init();
& & L1602_string(1,1,&welcome& &my& & &);
& & L1602_string(2,1,&test&&distance&&&);
& & delay1(1);
& & while(1)
& &&&EA=0;//关闭总中断
& && & start_csb();
& && & while(echo==0);//变高则进入下一步
& && &&&flagSucceed = 0;
& && &&&TR1=1;& &//启动定时器1开始计数
& && &&&EA = 1;
TF1= 0;& &//定时器1溢出标志位
while (TH1&90) ;& & //盲区
TR1 = 0;& && && &&&//关闭定时器1
EX0 = 0;& && && && &//关闭外部中断
& & if(flagSucceed==1)&&//一次测试成功,则计算距离,单位为厘米
& && && &&&distancef = time * 1.085;//微妙为单位&&
& && && &&&distancef /=58;//单位为厘米
& && && &&&distance = distancef*10+0.5;
&&//如果距离小于20cm,则声光报警
&&if ((flagSucceed == 1) && (distance &= 200))
& &&&ledwarn = 0;
& && && && &&&delay1(1);
& && && && &&&delay1(1);
&&}& && && &&&
& &&&ledwarn = 1;
&&}& && && && &
& & if (flagDisplay == 1)& & //1秒显示时间到
&&if(flagSucceed==0)//没有测试成功
& && && && & L1602_string(1,1,& can't distance &);& &&&
& && && && & L1602_string(2,1,&& & ------& && &&);& &
& && && &&&}
& && && &&&else
& && && & {
& && && &&&//LCD显示数据
& && && && & L1602_string(1,1,&distance result:&);
& && && && & L1602_string(2,1,&& && && & cm& & &);
& && && && & L1602_int(2,5,distance);
& && && & }
& && && & flagDisplay = 0;
学习了。谢谢。
你这个方式好。有简介,有图片,有直接可见代码。好!
很好,有时间自己动手做一个
这个和另外一个有什么区别
没有电路图之类的吗
高手&&就是不一样 啊& &
兄弟。可以拍一个后面图吗或电路图。谢谢。
可惜没有原理图
楼主右上角那个是温度补偿吗
楼主,用hc-sr04的可以不
很好,有时间自己动手做一个
没有电路图吗?
好资料。。。
有接线图嘛
实用& &感谢分享
谢谢无私分享!!
楼主,请问你这个最远能测多少米
Powered by

我要回帖

更多关于 超声波测距模块 的文章

 

随机推荐