基於32的超聲波測距(串列埠顯示距離,串列埠設定閥值)

2021-08-15 03:53:54 字數 2246 閱讀 4876

這個超聲波測距是利用定時器中的輸入捕獲為主要技術手段設計而成

測距模組:

超聲波測距的型號是hc_sr04,這個超聲波模組有乙個控制端trig,和乙個測距口echo。只要給trig乙個超過20us的高電平,那麼echo就會產生高電平,直到超聲波回到超聲波模組中,整個程式的難點在於怎麼計數高電平時間,而輸入捕獲可以捕獲echo口的高電平時間,正好做到這一點。其實用通用定時器簡單的計數功能也可以做到這一點,準備下一步採用這一方法寫乙個程式。

顯示模組:

顯示距離可以直接呼叫mdk中usart.c檔案中的printf,可以直接列印距離。

設定最小距離

這是這個超聲波測距中的另一難點,我們是直接使用串列埠向微控制器傳資料,但是串列埠只能傳字串,這個時候我們就需要利用ascii碼將乙個個字元轉換成數字。串列埠是一位一位傳資料的,會將資料存在乙個緩衝陣列(usart_rx_buf【】)中,並且在傳資料的過程中我們會得到這個資料的長度len。利用這個式子將接收到的字串轉化成數字:

for(i=0;iint table1=;

0的ascii碼是48,根據這個可以求得其他資料的ascii碼。

報警模組

當測得的距離小於串列埠設定的閥值,串列埠顯示error,led燈閃爍。

接下來是我的程式:

這是超聲波模組利用到的gpio口的初始化和輸入捕獲的初始化

#include "timer.h"

#include "led.h"

#include "usart.h"

#include "delay.h"

//¶¨ê±æ÷5í¨µà1êäè벶»ñåäöã

//arr£º×ô¶¯öø×°öµ(tim2,tim5êç32ä!!)

//psc£ºê±öóô¤·öæµêý

void tim5_ch1_cap_init(u32 arr,u16 psc)

//²¶»ñ×´ì¬

//[7]:0,ã»óð³é¹¦µä²¶»ñ;1,³é¹¦²¶»ñµ½ò»´î.

//[6]:0,»¹ã»²¶»ñµ½µíµçæ½;1,òñ¾­²¶»ñµ½µíµçæ½áë.

//[5:0]:²¶»ñµíµç潺óòç³öµä´îêý(¶ôóú32¨ê±æ÷à´ëµ,1us¼æêýæ÷¼ó1,òç³öê±¼ä:4294ãë)

u8 tim5ch1_capture_sta=0; //êäè벶»ñ×´ì¬

u32 tim5ch1_capture_val; //êäè벶»ñöµ(tim2/tim5êç32î»)

//¶¨ê±æ÷5öð¶ï·þîñ³ìðò

void tim5_irqhandler(void)

else tim5ch1_capture_sta++;

} } if(tim_getitstatus(tim5, tim_it_cc1) != reset)//²¶»ñ1·¢éú²¶»ñêâ¼þ

else //»¹î´¿ªê¼,µúò»´î²¶»ñéïéýñø

}

} tim_clearitpendingbit(tim5, tim_it_cc1|tim_it_update); //çå³ýöð¶ï±êö¾î»

}

這是主函式:
#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "led.h"

#include "timer.h"

#include "beep.h"

extern u8 tim5ch1_capture_sta; //êäè벶»ñ×´ì¬

extern u32 tim5ch1_capture_val; //êäè벶»ñöµ

long long temp=0;//²â¾àê±¼ä

long long s=0,s1=0,t=0,sm=0;//¾ààë

int table1=;

//¿ªæô³¬éù²¨ä£¿é

void count()

//½óêõêý¾ý

float js()

else }

//ö÷º¯êý

int main(void)

}

加上oled後會使程式跑得很慢,使測距顯示沒有那麼及時。甚至會出現程式跑死的情況存在。。。。目前為止沒有找到解決方法。

基於51最小系統的超聲波測距

超聲波是一種 頻率高於20000 赫茲的聲波,它的方向性好,穿透能力強,易於獲得較集中的 聲能,在水中傳播距離遠,可用於測距 測速 清洗 焊接 碎石 殺菌消毒等。在醫學 軍事 工業 農業上有很多的應用。超聲波因其 頻率下限大於人的聽覺上限而得名。此次實驗室布置的任務為基於51最小系統 的微控制器測距...

基於stm32最小系統的超聲波測距實現

學習目標 理解超聲波的原理 實現基本測距 通過串列埠在電腦上列印實際距離 通過串列埠設定閾值,當距離太近,報警裝置報警 超聲波測距原理 hc sr04 超聲波測距模組可提供 2cm 400cm 的非接觸式距離感測功能,測距精度可達高到 3mm 模組包括超聲波發射器 接收器與控制電路。基本原理如下 1...

超聲波測距儀程式設計 基於微控制器的超聲波測距儀設計

基於微控制器的超聲波測距儀設計 系統要求 我們組選擇製作了一套超聲波測距系統,功能有 倒車雷達測量的顯示距離 在手機上顯示,設定閾值,若小於設定的距離數值,蜂鳴器發出報警聲。研究目的 為了深層次的鞏固學習的微控制器的知識,更加熟悉的使用 proteus 和keil c51 這兩個軟體。能夠綜合所學的...