当前位置:首页 > 单片机 > 单片机
[导读] //超声波模块显示程序#include//包括一个52标准内核的头文件#defineucharunsignedchar//定义一下方便使用#defineuintunsignedint#defineulongunsignedlongsbitTx=P3^3;//产生脉冲引脚sbitRx=P3^2;//回波

//超声波模块显示程序
#include//包括一个52标准内核的头文件
#defineucharunsignedchar//定义一下方便使用
#defineuintunsignedint

#defineulongunsignedlong
sbitTx=P3^3;//产生脉冲引脚
sbitRx=P3^2;//回波引脚
ucharcodeSEG7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数码管0-9
uintdistance[4];//测距接收缓冲区
ucharge,shi,bai,temp,flag,outcomeH,outcomeL,i;//自定义寄存器
bitsuCCeed_flag;//测量成功标志
//********函数声明
voidconversion(uintdata);
voiddelay_20us();
voidpai_xu();
voidmain(void)//主程序
{uintdistance_data,a,b;
ucharCONT_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等于厘米
}//为什么除以58等于厘米,Y米=(X秒*344)/2
//X秒=(2*Y米)/344==》X秒=0.0058*Y米==》厘米=微秒/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;
pai_xu();
distance_data=distance[1];


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;
}
}
}
//***************************************************************
//外部中断0,用做判断回波电平
INTO_()interrupt0//外部中断是0号
{
outcomeH=TH1;//取出定时器的值
outcomeL=TL1;//取出定时器的值
succeed_flag=1;//至成功测量的标志
EX0=0;//关闭外部中断
}
//****************************************************************
//定时器0中断,用做显示
timer0()interrupt1//定时器0中断是1号
{
TH0=0xfd;//写入定时器0初始值
TL0=0x77;
switch(flag)
{case0x00:P0=ge;P2=0x7f;flag++;break;
case0x01:P0=shi;P2=0xbf;flag++;break;
case0x02:P0=bai;P2=0xdf;flag=0;break;
}
}

//显示数据转换程序
voidconversion(uintdata)
{
ucharge_data,shi_data,bai_data;
bai_data=data/100;
data=data%100;//取余运算
shi_data=data/10;
data=data%10;//取余运算
ge_data=data;

bai_data=SEG7[bai_data];
shi_data=SEG7[shi_data]&0x7f;
ge_data=SEG7[ge_data];

EA=0;
bai=bai_data;
shi=shi_data;
ge=ge_data;
EA=1;
}
//******************************************************************


voiddelay_20us()
{ucharbt;
for(bt=0;bt<60;bt++);
}
voidpai_xu()
{uintt;
if(distance[0]>distance[1])
{t=distance[0];distance[0]=distance[1];distance[1]=t;}
if(distance[0]>distance[2])
{t=distance[2];distance[2]=distance[0];distance[0]=t;}
if(distance[1]>distance[2])
{t=distance[1];distance[1]=distance[2];distance[2]=t;}
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

超声波测距原理将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对超声波测距的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 超声波 超声波测距 测距仪

超声波(Ultrasound)是指频率高于两万赫兹的声波,在工业、医疗等领域均有具体应用。随着医疗技术的进步和设备的不断更新,超声已经成为医学领域不可或缺的应用技术。医学超声设备主要利用超声波对于人体不同部位反馈产生的信...

关键字: 超声技术 超声波 传感器

中国,北京-2023年11月15日-固态全硅微型扬声器领域的先锋xMEMS Labs今天宣布在声音重现方面取得革命性突破,改变了大众市场上真无线立体声 (TWS) 耳塞在音频全频带上创造高品质、高分辨率声音体验的方式。...

关键字: 硅扬声器 超声波 扬声器

超声波流量计的应用原理是基于超声波在流体中传播时的特性来测量流体的流速和流量。它利用超声波的传播时间和接收信号的频率来计算流体的速度,并结合管道横截面积来计算流量。超声波流量计具有以下几个关键的应用原理:

关键字: 超声波流量计 超声波 流量计

超声波液位计(Ultrasonic Level Sensor)是一种常用于测量容器或储罐中液体或固体物料的液位的高精度传感器。它利用超声波的传播和反射原理进行测量,具有非接触式、高精度和广泛适用等优点。本文将详细介绍超声...

关键字: 液位计 传感器 超声波

液位计是一种常见的工业仪表,用于测量容器或储槽中液体的高度或液位。液位计的基本应用原理是通过不同的物理原理或技术手段来实现液位的测量。本文将介绍几种常见的液位计原理及其基本应用。

关键字: 液位计 压力式 超声波

为增进大家对雷达的认识,本文将对雷达的作用、雷达的用途、雷达和超声波的区别、雷达天线系统予以介绍。

关键字: 雷达 指数 超声波

厦门2023年2月13日 /美通社/ -- 成都SKP项目位于交子公园商圈核心区,占地面积约190亩,总建筑面积34.4万m2,停车场面积约13.1万m2。该项目是交子金融商圈引入的首个高端百货业态,为亚洲最大的下沉式建...

关键字: 手机摄像头 终端 蓝牙技术 超声波

设计人员可以使用 TI 的 ULC 技术打造面向汽车和工业应用的可靠且经济实惠的小型清洁系统 上海2023年1月18日 /美通社/ -- 德州仪器 (T...

关键字: 传感器 摄像头 芯片组 超声波

超声波雷达是汽车中最为常见的一种传感器。它是通过反射超声波装置,发射超声波,并接受回来的反射波后,测算距离。超声波雷达主要用在自动泊车和停车辅助上,分类的话可以分为APA和UPA两种。

关键字: 超声波 雷达 摄像头
关闭
关闭