刚完成的 超声波测距 探头驱动 跟同是菜鸟的发烧友分享下
时间:10-02
整理:3721RD
点击:
/**无敌呆呆猫--2015/7/16--03:26--成功驱动US-015超声波探头 **/
#include<reg51.h>
#define wei P0
#define duan P2
sbit Trig=P1^0; //触发输入端
sbit Echo=P3^2; //返回输出端
sbit kg=P1^1; //按键开关
unsigned char a;
unsigned long time; //这个测量时间要长整型 不然运算之后会超标的
unsigned char code zifuku[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,//3641BG:4位共阳
0x80,0x90,0x88,0x83,//极数码管字符表
0xC6,0xA1,0x86,0x8E};
void delay (unsigned int a){
unsigned int i;
while(--a !=0){
for(i=0;i<350;i++);}
}
void main(){
while(1){
Echo=0;
TMOD=1;
TH0=0;
TL0=0;
TR0=0;
while(kg==1);
delay(20);//小小的防抖。
Trig=1;
for(a=0;a<2;a++);//10us延时
Trig=0;
while(Echo==0);
TR0=1;
while(Echo==1);
TR0=0;
time=TH0*256+TL0-9;//超声波R头和T头外壳到里面的
while(kg==1){ //晶体有一小段距离 扣除9之后
wei=0x01; //就是被测物到TR头外壳的净距离
duan=zifuku[time*170/1000/10000];
delay(2);
duan=0xff; //测量单位是mm
//测量精度可以到+ - 1毫米
wei=0x02;
duan=zifuku[time*170/1000%10000/1000];
delay(2);
duan=0xff;
wei=0x04;
duan=zifuku[time*170/1000%10000%1000/100];
delay(2);
duan=0xff;
wei=0x08;
duan=zifuku[time*170/1000%10000%1000%100/10];
delay(2);
duan=0xff;
wei=0x10;
duan=zifuku[time*170/1000%10000%1000%100%10];
delay(2);
duan=0xff;
}
}
}
#include<reg51.h>
#define wei P0
#define duan P2
sbit Trig=P1^0; //触发输入端
sbit Echo=P3^2; //返回输出端
sbit kg=P1^1; //按键开关
unsigned char a;
unsigned long time; //这个测量时间要长整型 不然运算之后会超标的
unsigned char code zifuku[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,//3641BG:4位共阳
0x80,0x90,0x88,0x83,//极数码管字符表
0xC6,0xA1,0x86,0x8E};
void delay (unsigned int a){
unsigned int i;
while(--a !=0){
for(i=0;i<350;i++);}
}
void main(){
while(1){
Echo=0;
TMOD=1;
TH0=0;
TL0=0;
TR0=0;
while(kg==1);
delay(20);//小小的防抖。
Trig=1;
for(a=0;a<2;a++);//10us延时
Trig=0;
while(Echo==0);
TR0=1;
while(Echo==1);
TR0=0;
time=TH0*256+TL0-9;//超声波R头和T头外壳到里面的
while(kg==1){ //晶体有一小段距离 扣除9之后
wei=0x01; //就是被测物到TR头外壳的净距离
duan=zifuku[time*170/1000/10000];
delay(2);
duan=0xff; //测量单位是mm
//测量精度可以到+ - 1毫米
wei=0x02;
duan=zifuku[time*170/1000%10000/1000];
delay(2);
duan=0xff;
wei=0x04;
duan=zifuku[time*170/1000%10000%1000/100];
delay(2);
duan=0xff;
wei=0x08;
duan=zifuku[time*170/1000%10000%1000%100/10];
delay(2);
duan=0xff;
wei=0x10;
duan=zifuku[time*170/1000%10000%1000%100%10];
delay(2);
duan=0xff;
}
}
}
香烟盒的长度大概是87mm左右 超声波测出的距离是86mm 还是蛮准的哦