国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
    • 一、前言
    • 二、代碼實現(xiàn)
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

STC90C51+HC-SR04超聲波測距模塊完成測距儀設(shè)計(測量距離實現(xiàn)壁障)

19小時前
286
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

更多詳細(xì)資料請聯(lián)系.docx

共1個文件

一、前言

1.1 功能介紹

本項目的開發(fā)背景源于對機器人或自動化設(shè)備中安全壁障功能的需求。在諸如無人駕駛車輛、自動搬運機器人、智能家居系統(tǒng)以及工業(yè)自動化等應(yīng)用場景中,為了避免設(shè)備與環(huán)境中的障礙物發(fā)生碰撞,確保設(shè)備和人員安全,實時、準(zhǔn)確地檢測并測量與障礙物之間的距離變得至關(guān)重要。

HC-SR04超聲波測距模塊以其高精度、低成本和易于集成的特點,成為了實現(xiàn)這一功能的理想選擇。該模塊通過發(fā)射超聲波并接收其反射信號來測量距離,具有測量范圍廣、響應(yīng)速度快、抗干擾能力強等優(yōu)點。結(jié)合ST90C51微控制器的強大處理能力和豐富的I/O接口,可以實現(xiàn)對HC-SR04模塊的精確控制,并快速處理測距數(shù)據(jù),實現(xiàn)實時的壁障功能。

本項目結(jié)合ST90C51微控制器和HC-SR04超聲波測距模塊,設(shè)計并實現(xiàn)一個能夠?qū)崟r測量與障礙物之間距離,并根據(jù)距離信息執(zhí)行相應(yīng)壁障動作的系統(tǒng)。通過編寫合適的程序算法,可以實現(xiàn)對測量數(shù)據(jù)的分析、判斷和控制,當(dāng)檢測到設(shè)備接近障礙物時,自動觸發(fā)壁障機制,如減速、轉(zhuǎn)向或停止,以避免發(fā)生碰撞事故。這一項目的成功實施,不僅可以提升設(shè)備的安全性能,降低維護(hù)成本,還可以為相關(guān)領(lǐng)域的自動化和智能化發(fā)展提供有力的技術(shù)支持。

image-20240612133714577

image-20240612133741173

1.2 HC-SR04超聲波測距模塊介紹

image-20240612133618209

image-20240612133630913

image-20240612133650068

image-20240612133701989

HC-SR04超聲波測距模塊是一種基于超聲波原理進(jìn)行測距的傳感器模塊,被廣泛應(yīng)用于機器人導(dǎo)航、智能家居、安防系統(tǒng)等領(lǐng)域。該模塊主要由兩個壓電陶瓷超聲傳感器構(gòu)成,一個用于發(fā)射超聲波信號,另一個用于接收被目標(biāo)物體反射回來的超聲波信號。由于超聲波信號在空氣中的傳播速度已知(約為340米/秒),模塊通過測量超聲波從發(fā)射到接收的時間差,可以精確計算出目標(biāo)與傳感器之間的距離。

HC-SR04模塊的主要技術(shù)參數(shù)包括:使用電壓為DC 5V,靜態(tài)電流小于2mA,感應(yīng)角度不大于15度,探測距離范圍從2cm到450cm(部分資料提到400cm),并具有高精度特性,可達(dá)0.2cm或0.3cm。模塊的工作原理是通過IO口觸發(fā)測距,給至少10us的高電平信號后,模塊會自動發(fā)送8個40kHz的方波,并自動檢測是否有信號返回。當(dāng)有信號返回時,模塊會通過IO口輸出一個高電平信號,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。根據(jù)這個時間差和超聲波在空氣中的傳播速度,可以計算出目標(biāo)與傳感器之間的距離。

HC-SR04超聲波測距模塊的性能穩(wěn)定,測距精確,能夠與國外的SRF05、SRF02等超聲波測距模塊相媲美。其接線方式簡單,通常包括VCC(電源正極)、Trig(控制端)、Echo(接收端)和GND(電源負(fù)極)四個引腳。此外,HC-SR04模塊還提供了豐富的編程接口和參考程序,支持多種微控制器和編程語言,如Arduino、C51、PIC等,方便用戶進(jìn)行二次開發(fā)和集成。

HC-SR04超聲波測距模塊以其高精度、高可靠性和易用性,成為了許多項目中不可或缺的一部分,為機器人導(dǎo)航、智能家居、安防系統(tǒng)等領(lǐng)域的發(fā)展提供了有力的支持。

二、代碼實現(xiàn)

2.1 main.c

#include <reg51.h>
#include <INTRINS.H>
#include "delay.h"
#include "type.h"
#include "uart.h"
#include "ds1302.h"
#include "pcf8591.h"
//#include "key.h"
//#include "led.h"
#include "timer.h"
//#include "exti.h"
//#include "infrared.h"
//#include "ds18b20.h"
//#include "at24c02.h"

sbit ECHO=P1^0;  //超聲波的回響信號輸出腳
sbit TRIG=P1^1;  //觸發(fā)超聲波測距的引腳
u32 timt0_cnt=0; //記錄定時器0溢出的次數(shù)
u16 time_val=0;
float distance=0.0; //保存測量的距離
int main()
{
    ECHO=0;  
    TRIG=0;
    UART_Init(); //初始化串口波特率為4800
    while(1)
    {
        TRIG=1;//觸發(fā)測距
        delay20us(); //延時20us
        TRIG=0;          //停止觸發(fā)
        while(ECHO==0){} //等待回響信號返回
        Timer0_16bit_Init(65535); //初始化定時器0,并開始計數(shù)
        while(ECHO==1){} //等待回響信號結(jié)束
        TR0=0;           //關(guān)閉定時器0
        time_val=(TH0<<8|TL0)+timt0_cnt*65535; //計算時間
        distance=time_val/58.0; //得到距離。單位是厘米
        printf("distance=%f CMrn",distance);
        timt0_cnt=0; //溢出次數(shù)清零  
        DelayMs(1000); //延時1秒
    }
}


2.2 exit.c

#include "exti.h"
/*
配置外部中斷0下降沿觸發(fā)中斷
IO口: P3.2
*/
sfr IPH=0xB7; //定義特殊功能寄存器
void EXTI0_Init(void)
{
   IPH|=1<<0; //配置PX0H=1 
   PX0=1;     //當(dāng)PX0H=1且PX0=1時,外部中斷0為最高優(yōu)先級中斷(優(yōu)先級3)
   EA=1;  //開啟總中斷
   IT0=1; //外部中斷0下降沿觸發(fā)
   EX0=1; //允許外部中斷0產(chǎn)生中斷
}

///*
//外部中斷0中斷服務(wù)函數(shù)
//*/
//void EXTI0_IRQHandler(void) interrupt 0
//{
//    LED=~LED; //改變LED燈的狀態(tài)
//    IE0=0; //清除外部中斷0的標(biāo)志位
//}

/*
配置外部中斷1下降沿觸發(fā)中斷
IO口: P3.2
*/
void EXTI1_Init(void)
{
   EA=1;  //開啟總中斷
   IT1=1; //外部中斷1下降沿觸發(fā)
   EX1=1; //允許外部中斷1產(chǎn)生中斷
}
/*
外部中斷1中斷服務(wù)函數(shù)
IO口: P3.3
*/
void EXTI1_IRQHandler(void) interrupt 2
{
    while(1){}  //死循環(huán)
    LED=~LED; //改變LED燈的狀態(tài)
    IE1=0; //清除外部中斷1的標(biāo)志位
}

2.3 exit.h

#ifndef _EXTI_H
#define _EXTI_H
#include <reg51.h>
#include "led.h"
void EXTI0_Init(void);
void EXTI1_Init(void);
#endif
  • 更多詳細(xì)資料請聯(lián)系.docx
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時響應(yīng)!