HC-SR04 超聲波測距模塊/硬件/軟件

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/LinLingPeng_/article/details/8944933

產品簡介

HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發射器、接收器與控制電路。



產品應用領域

機器人避障   物體測距  液位檢測  公共安防 停車場檢測 

主要技術參數

        1:使用電壓:DC5V                2:靜態電流:小於2mA
        3:電平輸出:高5V                 4:電平輸出:底0V
        5:感應角度:不大於15度      6:探測距離:2cm-450cm  7:高精度 可達0.2cm   


接線方式,VCC、trig(控制端)、  echo(接收端)、 GND


基本工作原理

  1. 採用IO口TRIG觸發測距,給至少10us的高電平信號;
  2. 模塊自動發送8個40khz的方波,自動檢測是否有信號返回;
  3. 有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
   

使用方法

一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變爲低電平時就可以讀定時器的值,此時就爲此次測距的時間,方可算出距離.如此不斷的週期測,即可以達到你移動測量的值。


代碼

//(1)採用 IO 觸發測距,給至少10us 的高電平信號;
//(2)模塊自動發送8 個40khz 的方波,自動檢測是否有信號返回;
//(3)有信號返回,通過IO 輸出一高電平,高電平持續的時間就是
//(4)超聲波從發射到返回的時間.測試距離=(高電平時間*聲速(340M/S))/2
 
#include <12C5A60S2.h>
#include "lcd5110.h"
 
#define uint unsigned int
 
sbit echo = P3^2;
uint sing = 5;
 
void main()
{
    int Distance = 0;
    uint delay = 0;
 
    EA = 1;
    TMOD = 0x01;
    ET0 = 1;
    TH0 = 0;
    TL0 = 0;
    TR0 = 0;    //定時器中斷;
    EX0 = 1;
    IT0 = 1;    //下降沿觸發中斷
    P3 &= ~0x10;
 
    Initial_5110();
    Clean_5110();
    Write_X_Y_5110(0,0);
    Write_Int_5110(23);
    while(1)
    {   
        P3 |= 0x10; 
                     
        delay = 50;
        while(--delay);
 
        P3 &= ~0x10;
     
        delay = 0;
        while( ((P3 & 0x04) == 1) && (delay < 3000) ) delay ++;      
 
        Distance = sing;
        Write_X_Y_5110(0,2);
        Write_Int_5110(Distance);
        delay = 0;
        while(delay < 40000) delay++;
    }
}
 
void time0()interrupt 1
{
   TH0 = 0;
   TL0 = 0;
}
 
void wai_inter() interrupt 0
{
    uint count_high = 0;
 
    EA = 0; 
 
    EX0 = 0;
 
    TH0 = 0;
    TL0 = 0;
    TR0 = 1;
 
    while( ((P3 & 0x04) == 0) && (count_high < 2000) ) count_high ++;
 
    if(count_high < 2000) sing = TH0*16 + TL0;
    else                  sing = 0;
     
    TR0 = 0;
    TH0 = 0;
    TL0 = 0;
     
    EX0 = 1;
    EA = 1;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章