微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 刚完成的 超声波测距 探头驱动 跟同是菜鸟的发烧友分享下

刚完成的 超声波测距 探头驱动 跟同是菜鸟的发烧友分享下

时间: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;
                                         }                                                          
                        }
}

香烟盒的长度大概是87mm左右 超声波测出的距离是86mm 还是蛮准的哦


上一篇:宠物管家
下一篇:+智能电能采集系统

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top