最近几日在整理电脑东西时找到了 一年以前的超声波测距模块的原理图跟程序 放着也没用 献给大家 这个原理图可以做到3.5米(亲自测试过)
#include<reg51.h>
#define uchar unsigned char
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_5=P3^4;
sbit P3_4=P3^5;
sfr P3M1= 0xb1;
sfr P3M0= 0xb2;
uchar k;
void delay(uchar x)
{
uchar a,b;
for(a=0;a<80;a++)
for(b=0;b<x;b++)
{
;
}
}
/* void exint0() interrupt 0
{
k--;
}
*/
void main()
{
uchar i,j,n1,n2;
P3M1=0x00;
P3M0=0x03;
P3_2=1;
P3_3=0;
P3_4=1;
P3_5=0;
TMOD=0x02;
TL0=0x00;
TH0=0x00;
TR0=1;
// ET0=1 ;
// EA=1;
while(1)
{
P3M1=0x00;
if(P3_4==1)
{
delay(10);
if(P3_4==1)
{
while(P3_4==1);
P3_0=1;
/* #pragma ASM
#pragma ENDASM
*/
for(j=0;j<16;j++)
{
for(i=0;i<19;i++)
;
P3_0=~P3_0;
P3_1=~P3_1;
}
P3_0=0;
P3_1=0;
}
P3_5=1;
P3M1=0x08;
k=2;
for(i=0;i<100;i++)
for(j=0;j<250;j++)
{
if(P3_2==0)
{
while(P3_2==0);
TR0=0;
n1=TL0;
TL0=0;
TR0=1;
if((n1>23)&&(n1<25))
k--;
else k=2;
if(k==0)
{
P3_5=0;
break;
}
}
}
P3_5=0;
}
}
}
|