- 为什么超声波声呐不能用于太空测距?
-
2012-06-15 09:18:47
413
5
- 利用超声波的反射能否进行太空测距?为什么
-
2015-10-10 02:31:18
307
1
- 超声波探伤为什么不能用于薄板
-
2012-04-09 06:32:22
424
3
- 怎样进行太空测距?
-
2018-12-05 06:23:40
334
0
- 为什么超声波测距的接收部分不能接收信号
-
2010-08-26 05:58:16
384
2
- 太空测距仪器或方法?
-
2018-11-11 18:11:17
388
0
- 超声波测距
- time=timeH*256+timeL;
distance=time*0.0172; //厘米
0.0172怎么来的 , distance怎么来的
求具体转换过程,只要真心,一定采纳
2013-11-23 11:03:17
366
1
- 电磁流量计为什么不能用于发电
- 电磁流量计的原理是溶液中的带电离子受洛伦兹力偏转达到打到产生感应电动势,从而被电路和芯片检测到这个电动势,那么为什么不能用这个电动势去供电呢?如果能那不就是发电机了吗?
2017-01-02 00:24:14
501
1
- 聚氯乙烯为什么不能用于食品包装
-
2017-01-11 10:04:37
1441
1
- 超声波清洗机为什么不能洗衣服?
-
2014-07-02 01:32:38
359
2
- 超声波测距公式
-
2011-09-01 08:10:36
535
3
- 超声波测距原理
- 找了Z短的程序还是看不懂,怎么感觉这程序是在测回波的时间而不是测发波与回波的时间 //超声波模块程序 #include #define uchar unsigned char #define uint unsigned int code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6... 找了Z短的程序还是看不懂,怎么感觉这程序是在测回波的时间而不是测发波与回波的时间
//超声波模块程序
#include
#define uchar unsigned char
#define uint unsigned int
code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar chenggong,shijianL,shijianH;
sbit fashe = P1^0;
sbit huibo = P3^2;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//
void delay_20us()
{
uchar a ;
for(a=0;a<100;a++);
}
//***************************************************************
//显示数据转换程序
//***************************************************************
void main()
{
uint juli,shijian;
fashe=0; //首先拉低脉冲输入引脚
EA=1; //打开总中断0
TMOD=0x10; //定时器1,16位工作方式
while(1)
{
EA=0; //关总中断
fashe=1; //超声波输入端
delay_20us(); //延时20us
fashe=0; //产生一个20us的脉冲
while(huibo==0); //等待p32回波引脚变高电平
chenggong=0; //清测量成功标志
EA=1;
EX0=1; //打开外部中断0
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //计数溢出标志
TR1=1; //启动定时器1
delay(20); //等待测量的结果
TR1=0; //关闭定时器1
EX0=0; //关闭外部中断0
if(chenggong==1)
{
shijian=shijianH*256+shijianL;
juli=shijian*0.172; //厘米
P0=0;
P0=table[juli/100];
P2=5;
delay(1);
P0=0;
P0=table[(juli%100)/10];
P2=6;
delay(1);
P0=0;
P0=table[(juli%100)%10];
P2=7;
delay(1);
}
if(chenggong==0)
{
juli=0;//没有回波则清零
}
}
}
//***************************************************************
//外部中断0,用做判断回波电平
void zhongduan() interrupt 0 //外部中断0
{
shijianH =TH1; //取出定时器的值
shijianL =TL1; //取出定时器的值
chenggong=1;//至成功测量的标志
EX0=0; //关闭外部中断
}
//****************************************************************
//定时器1中断,用做超声波测距计时
void dingshiqi() interrupt 3 //
{
TH1=0;
TL1=0;
} 展开
2013-05-18 08:32:56
402
2
- 超声波测距模块
- 1——超声波模块测距的有效距离是多少?模块的有效距离与什么有关?2——怎样在一个单片机上同时使用几个频率不同的超声波模块(注意是完全同时工作)?是不是使用频率不同的模块就可... 1——超声波模块测距的有效距离是多少?模块的有效距离与什么有关?
2——怎样在一个单片机上同时使用几个频率不同的超声波模块(注意是完全同时工作)?是不是使用频率不同的模块就可以?如果是的话,那推荐一下每个模块的频率(同时使用3-4个)。 展开
2012-10-18 09:17:21
562
3
- 为什么目的基因不能用于基因组测序?
-
2015-09-13 08:47:37
479
1
- 精油为什么不能直接用于皮肤表面
- 精油为什么不能直接用于皮肤表面,直接用皮肤表面为有什么样的后果
2010-05-23 16:39:13
428
3
- 哪种光电传感器可用于测距
-
2015-02-04 01:42:27
231
1
- 超声波测距的原理
-
2018-11-22 20:39:35
369
0
- 超声波测距程序问题
- #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit Tx = P3^3; //产生脉冲引脚 sbit Rx = P3^2; //回波引脚 uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0... #include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit Tx = P3^3; //产生脉冲引脚
sbit Rx = P3^2; //回波引脚
uchar code SEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint distance[4]; //测距接收缓冲区
uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i;
bit succeed_flag; //测量成功标志
void conversion(uint temp_data);
void delay_20us();
void main(void) // 主程序
{ uint distance_data,a,b;
uchar CONT_1;
i=0;
flag=0;
Tx=0; //首先拉低脉冲输入引脚
TMOD=0x11; //定时器0,定时器1,16位工作方式
TR0=1; //启动定时器0
IT0=0; //由高电平变低电平,触发外部中断
ET0=1; //打开定时器0中断
EX0=0; //关闭外部中断
EA=1; //打开总中断0
while(1) //程序循环
{
EA=0;
Tx=1;
delay_20us();
Tx=0; //产生一个20us的脉冲,在Tx引脚
while(Rx==0); //等待Rx回波引脚变高电平
succeed_flag=0; //清测量成功标志
EX0=1; //打开外部中断
TH1=0; //定时器1清零
TL1=0; //定时器1清零
TF1=0; //
TR1=1; //启动定时器1
EA=1;
》》 while(TH1 < 30);//等待测量的结果,周期65.535毫秒(可用中断实现)
TR1=0; //关闭定时器1
EX0=0; //关闭外部中断
if(succeed_flag==1)
{
distance_data=outcomeH; //测量结果的高8位
distance_data<<=8; //放入16位的高8位
distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据
distance_data*=12; //因为定时器默认为12分频
distance_data/=58; //微秒的单位除以58等于厘米
}
if(succeed_flag==0)
{
distance_data=0; //没有回波则清零
}
distance[i]=distance_data; //将测量结果的数据放入缓冲区
i++;
if(i==3)
{
distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4;
a=distance_data;
if(b==a) CONT_1=0;
if(b!=a) CONT_1++;
if(CONT_1>=3)
{ CONT_1=0;
b=a;
conversion(b);
}
i=0;
}
}
}
INTO_() interrupt 0 // 外部中断是0号
{
outcomeH =TH1; //取出定时器的值
outcomeL =TL1; //取出定时器的值
succeed_flag=1; //至成功测量的标志
EX0=0; //关闭外部中断
}
timer0() interrupt 1 // 定时器0中断是1号
{
TH0=0xfd; //写入定时器0初始值
TL0=0x77;
switch(flag)
{case 0x00:P0=ge; P2=0x7f;flag++;break;
case 0x01:P0=shi;P2=0xbf;flag++;break;
case 0x02:P0=bai;P2=0xdf;flag=0;break;
}
}
老感觉它是超声波发送又接收完才开的定时器1,但运行结果确是对的,看不懂while(TH1 < 30);,求解,注:P3.2也是外中断0的地址 展开
2012-07-17 06:51:21
504
2
- 超声波测距论文答辩ppt
- 看到的速度回答下 明天上午就要答辩了 迟了就没用了
2016-07-10 18:47:25
397
1
- 超声波测距传感器型号
- 我想在停车位地上装一个传感器,当有车停入进去的时候,能检测出该停车位上有车,能适应室内室外的环境,求大神帮助一下!
2015-11-30 13:53:10
334
1
参与评论
登录后参与评论