我们不仅销售产品,我们还传播知识
商品分类

超声波原理与应用

超声波原理与应用

超声波原理与应用

超声波模块与Arduino连接:

TRIG 接Digital 5口,触发测距;ECHO接Digital 4口,接收距离信号。

程序代码:

int inputPin=4;  // 定义超声波信号接收接口   ECHO接4口
int outputPin=5; // 定义超声波信号发出接口  TRIG 接5口
void setup()
{
Serial.begin(9600);
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
}
void loop()

{
digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW);    // 保持发出超声波信号接口低电平
int distance = pulseIn(inputPin, HIGH);  // 读出脉冲时间
distance= distance/58;   // 将脉冲时间转化为距离(单位:厘米)
Serial.println(distance);   //输出距离值
delay(50);
}

**

 

*********************************************************************************************************/
//DYP-ME007 超声波测距模块 DEMO 程序
//晶振:11。0592
//程序编写:廖文丹   QQ:  80184985
//网站:智能微控工作室
//taobao店铺:http://shop37091187.taobao.com/
//接线:模块TRIG接 P1.2  ECH0 接P1.1
//串口波特率9600
/***********************************************************************************************************/
#include   <AT89X51.H>
#include   <intrins.h>
#include   <STDIO.H>

#define uchar unsigned  char
#define uint  unsigned   int
#define  RX  P1_1
#define  TX  P1_2
unsigned int  time=0;
unsigned int  timer=0;
float         S=0;
bit           flag =0;
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/100;     //算出来是CM
if(flag==1)      //超出测量
{
flag=0;
printf(“—–\n”);
}

printf(“S=%f\n”,S);
}
/********************************************************/
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms–)
{
while(–i)
{
j=10;
while(–j);
}
}
}
/********************************************************/
void zd0() interrupt 1    //T0中断用来计数器溢出,超过测距范围
{
flag=1;        //中断溢出标志
}
/********************************************************/
void  StartModule()            //T1中断用来扫描数码管和计800MS启动模块
{
TX=1;                    //800MS  启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
/********************************************************/
void main(void)
{
TMOD=0x21;     //设T0为方式1,GATE=1;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TH0=0;
TL0=0;
TR0=1;
ET0=1;             //允许T0中断
TR1=1;      //开启定时器
TI=1;

EA=1;      //开启总中断

while(1)
{
StartModule();
while(!RX);  //当RX为零时等待
TR0=1;       //开启计数
while(RX);   //当RX为1计数并等待
TR0=0;    //关闭计数
Conut();   //计算
delayms(100);  //100MS

}

}

发表回复

登录后才能评论
微信群
微信群
联系我们

联系我们

微信:13823392571

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息

微信客服
微信客服
分享本页
返回顶部