国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F103驅(qū)動(dòng)HCSR04超聲波測距顯示

這篇具有很好參考價(jià)值的文章主要介紹了STM32F103驅(qū)動(dòng)HCSR04超聲波測距顯示。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

超聲波模塊介紹

超聲波模塊在電子DIY作品中實(shí)現(xiàn)小車避障測距等方面均應(yīng)用廣泛,在大學(xué)生智能車DIY愛好者中尤為顯眼。

①實(shí)物圖


超聲波測距stm32f103,STM32專欄,電子模塊測試,學(xué)習(xí)筆記,stm32,單片機(jī),arm,模塊測試

點(diǎn)擊圖片購買

②產(chǎn)品說明

HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達(dá)3mm,包括發(fā)射器、接收器與控制電路,它是一種壓電式傳感器,利用電致伸縮現(xiàn)象而制成。

③電氣參數(shù)

電氣參數(shù) HCSR04超聲波模塊
工作電壓 DC5V
工作電流 15mA
工作頻率 40KHz
最遠(yuǎn)射程 4M
最近射程 2cm
測量角度 15°
輸入觸發(fā)信號(hào) 10us的TTL脈沖
輸出回響信號(hào) 輸出TTL電平信號(hào),與射程成比例

④超聲波工作原理

首先我們可以看下面的一張超聲波的時(shí)序圖:
超聲波測距stm32f103,STM32專欄,電子模塊測試,學(xué)習(xí)筆記,stm32,單片機(jī),arm,模塊測試
圖中我們可以大致看出,要使用HCSR04這個(gè)超聲波模組,我們必須先給超聲波發(fā)送一個(gè)觸發(fā)信號(hào),引導(dǎo)超聲波內(nèi)部循環(huán)發(fā)出8個(gè)40Khz的脈沖然后輸出回響信號(hào)引腳上拉為高電平,然后我們利用超聲波回響信號(hào)引腳的高電平所得計(jì)數(shù)時(shí)間經(jīng)過相關(guān)運(yùn)算就可以得到對(duì)應(yīng)的距離,具體公式如下:
測試距離 = (高電平時(shí)間聲速(340M/S)/2)= ((float)t/58.0)
這個(gè)公式的具體換算過程,大家可以用以前學(xué)過的知識(shí)進(jìn)行還算下,最后得到的距離單位是厘米。
下面放一張超聲波的引腳功能示意圖,能更好的理解HCSR04的具體使用和接線在代碼中:
超聲波測距stm32f103,STM32專欄,電子模塊測試,學(xué)習(xí)筆記,stm32,單片機(jī),arm,模塊測試

驅(qū)動(dòng)代碼

之前寫過用51單片機(jī)驅(qū)動(dòng)HCSR04在LCD1602上的驅(qū)動(dòng)代碼,這篇文章我使用STM32驅(qū)動(dòng)HCSR04在0.96OLED(使用人數(shù)較多并且開源初始化代碼方便移植)上面使用的驅(qū)動(dòng)代碼。

①STM32配置初始化代碼

時(shí)鐘和GPIO以及中斷相關(guān)配置:

void HCSR04_Init(void)
{  
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;     //定義定時(shí)器結(jié)構(gòu)體
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
     
    //IO 初始化
    GPIO_InitStructure.GPIO_Pin = HCSR04_TRIG;       	//發(fā)送高點(diǎn)平引腳
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推挽輸出
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
    GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);
     
    GPIO_InitStructure.GPIO_Pin = HCSR04_ECHO;    	 //返回電平引腳
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;	
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);  
    GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);	
	 
	//定時(shí)器初始化使用基本定時(shí)器3
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);   //打開TIM3定時(shí)器時(shí)鐘

	TIM_DeInit(TIM3);
	TIM_TimeBaseStructure.TIM_Period = 65535; //(1000-1); //設(shè)置在下一個(gè)更新時(shí)間裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值         計(jì)數(shù)到1000為1ms
	TIM_TimeBaseStructure.TIM_Prescaler =(72-1); //設(shè)置用來作為TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻  1M的計(jì)時(shí)頻率 1US計(jì)數(shù)
	TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;	//不分頻
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上計(jì)數(shù)模式
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位	 
		
	TIM_ClearFlag(TIM3, TIM_FLAG_Update);   	//清除更新中斷避免立即產(chǎn)生更新中斷
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);    //啟用計(jì)時(shí)器更新中斷

	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;            	//設(shè)置中斷服務(wù)
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  	//主優(yōu)先級(jí)
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         	//次優(yōu)先級(jí)
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        		//啟用中斷
	NVIC_Init(&NVIC_InitStructure);
	
    TIM_Cmd(TIM3,DISABLE);     
}

//定時(shí)器中斷服務(wù)程序
void TIM3_IRQHandler(void)   //TIM3中斷
{
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //檢查TIM更新中斷是否發(fā)生
    {
         TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIM更新中斷標(biāo)志位
         msHcCount++;
    }
}

①超聲波驅(qū)動(dòng)應(yīng)用代碼

下面展示寫根據(jù)超聲波時(shí)序圖可以寫出下面的驅(qū)動(dòng)代碼:

//開始計(jì)數(shù)
static void StartTimer()        //打開定時(shí)器
{
    TIM_SetCounter(TIM3,0);	//清除計(jì)數(shù)
    msHcCount = 0;
    TIM_Cmd(TIM3, ENABLE);  //啟用TIM3外設(shè)
}
 
static void StopTimer() 	//關(guān)閉定時(shí)器外設(shè)
{
    TIM_Cmd(TIM3, DISABLE); //關(guān)閉TIM定時(shí)器外設(shè)
}
 
//獲取計(jì)時(shí)器時(shí)間
float GetEchoTimer(void)
{
    u32 t = 0;
    t = msHcCount*1000;			//得到ms
    t += TIM_GetCounter(TIM3);	//得到us
	TIM3->CNT = 0;  			//將TIM3定時(shí)計(jì)數(shù)器的寄存器清零
	delay_ms(50);
    return t;
}

②超聲波距離計(jì)算代碼

//取五次數(shù)據(jù)平均值,為了使測距所得到的值更加精確可采取多次測距的平均值來使用應(yīng)用中
float HCSR04GetLength(void)
{
	u32 t = 0;
	int i = 0;
	float lengthTemp = 0;  
	float sum = 0; 	
	float distance;

	for(i=0;i<5;i++){		
		
		TRIG_SEND = 1;      //發(fā)送高電平輸出
		delay_us(20);
		TRIG_SEND = 0;
			
		while(ECHO_RECEIVE == 0); 	//等待接收高電平輸出
		StartTimer();        	//打開計(jì)時(shí)器

		while(ECHO_RECEIVE == 1);
		StopTimer();        	//關(guān)閉計(jì)時(shí)器
		
		t = GetEchoTimer();     //獲取時(shí)間,解析度為1US

		lengthTemp = ((float)t/58.2);	//cm
		sum = lengthTemp + sum ;
	}
	distance = 100*sum/5.0;
	return distance;
}

具體測試現(xiàn)象

本次使用OLED屏幕顯示超聲波所測距離并顯示如下圖所示:
超聲波測距stm32f103,STM32專欄,電子模塊測試,學(xué)習(xí)筆記,stm32,單片機(jī),arm,模塊測試

總結(jié)

文章中使用的顯示方式為0.96寸OLED模塊顯示,驅(qū)動(dòng)MCU使用的為STM32F103C8T6,在使用HCSR04的過程中也可以自己根據(jù)HCSR04的驅(qū)動(dòng)代碼所得到的距離值去做其他的接口應(yīng)用,例如做小車,或者其他測距案例均可移植使用,需要完整工程的可下方留言郵箱獲取。文章來源地址http://www.zghlxwxcb.cn/news/detail-786434.html

到了這里,關(guān)于STM32F103驅(qū)動(dòng)HCSR04超聲波測距顯示的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于STM32F103C8T6(HAL庫)的HC-SR501紅外人體傳感及HC-SR04超聲波測距

    基于STM32F103C8T6(HAL庫)的HC-SR501紅外人體傳感及HC-SR04超聲波測距

    一、基于STM32F103C8T6最小系統(tǒng)板和STM32CubeMX實(shí)現(xiàn)LED燈循環(huán)閃爍 二、基于STM32F103C8T6和STM32CubeMX實(shí)現(xiàn)UART串口通信數(shù)據(jù)收發(fā) 三、實(shí)戰(zhàn)小例程 基于STM32F103C8T6最小系統(tǒng)板和STM32CubeMX驅(qū)動(dòng)WS2812B光立方 四、基于STM32F103C8T6最小系統(tǒng)板HAL庫CubeMX驅(qū)動(dòng)HC-SR501紅外人體傳感模塊 五、基于STM32F103C8

    2023年04月17日
    瀏覽(84)
  • STM32系列(HAL庫)——F103C8T6通過HC-SR04超聲波模塊實(shí)現(xiàn)測距

    STM32系列(HAL庫)——F103C8T6通過HC-SR04超聲波模塊實(shí)現(xiàn)測距

    (1)編程平臺(tái):Keil5 (2)CubeMX (3)XCOM(串口調(diào)試助手) (1)某寶買的超聲波模塊 ? (2)F1的板子,本例使用經(jīng)典F103C8T6 (3)ST-link?下載器 (4)USB-TTL模塊 (5)杜邦線若干 (1)模塊簡介: ????????超聲波是振動(dòng)頻率高于20kHz的機(jī)械波。它具有頻率高、波長短、繞射現(xiàn)象小、方向性好、能夠成為射

    2024年02月02日
    瀏覽(21)
  • 基于STM32F407實(shí)現(xiàn)超聲波測距(SR04)

    基于STM32F407實(shí)現(xiàn)超聲波測距(SR04)

    今天要實(shí)現(xiàn)的功能是超聲波測距,這一功能在很多的地方都能用到,比如:在智能小車上可以添加超聲波避障功能。今天需要用到SR04超聲波模塊,在使用這一模塊的時(shí)候我很會(huì)接觸到時(shí)序圖。 模塊如圖所示: 模塊有四個(gè)引腳 VCC 供 5V電源, GND 為地線, TRIG 觸 發(fā) 控 制 信 號(hào)

    2024年02月11日
    瀏覽(21)
  • STM32驅(qū)動(dòng)HC-SR04超聲波模塊

    STM32驅(qū)動(dòng)HC-SR04超聲波模塊

    本篇文章將帶大家使用HAL庫驅(qū)動(dòng)HC-SR04超聲波模塊。超聲波模塊作為智能小車必備的模塊,要學(xué)習(xí)智能小車的同學(xué)是必須掌握好這個(gè)模塊的使用的。 HC-SR04是一種常用的超聲波傳感器模塊,也被稱為超聲波測距模塊,廣泛應(yīng)用于各種自動(dòng)化控制和測距系統(tǒng)中。它通常由超聲波發(fā)

    2024年02月09日
    瀏覽(29)
  • 【STM32篇】驅(qū)動(dòng)HC_SR04超聲波測距模塊

    【STM32篇】驅(qū)動(dòng)HC_SR04超聲波測距模塊

    CH_SR04 HC_SR04超聲波測距模塊可提供 2cm-400cm 的非接觸式測距感測功能,測距精度高達(dá)3mm;模塊包括超聲波發(fā)射器,接收器與控制電路。 基本工作原理: (1)采用IO口TRIG觸發(fā)測距,需要給最少10us的高電平。 (2)模塊自動(dòng)發(fā)送8個(gè)40kHz的方波,自動(dòng)檢測是否有信號(hào)返回。 (3)有

    2024年02月17日
    瀏覽(22)
  • 【CubeMX配置STM32驅(qū)動(dòng)超聲波模塊(HC-SR04)】

    【CubeMX配置STM32驅(qū)動(dòng)超聲波模塊(HC-SR04)】

    一、CubeMX配置STM32 1、選擇定時(shí)器 選擇 輸入捕獲模式 預(yù)分頻設(shè)置為71,向上計(jì)數(shù),自動(dòng)重裝值65535 然后將名字改為 ECHO 2、配置TRIG口 這里的端口使用其它空閑的IO口是可以的,設(shè)置為輸出模式,其它配置不需要改變,最主要的是 User Label 那兒,需要設(shè)置為 TRIG ,因?yàn)轵?qū)動(dòng)函數(shù)里

    2024年02月02日
    瀏覽(25)
  • STM32超聲波避障小車(舵機(jī)云臺(tái)+超聲波/stm32f103/HAL/Cube)

    STM32超聲波避障小車(舵機(jī)云臺(tái)+超聲波/stm32f103/HAL/Cube)

    一、小車1.0——基本藍(lán)牙小車(僅藍(lán)牙遙控小車運(yùn)動(dòng)方向,本篇) 二、小車2.0——藍(lán)牙小車PLUS(可以藍(lán)牙控制方向+藍(lán)牙直接調(diào)節(jié)車速) 三、小車3.0——避障小車(超聲波+舵機(jī)云臺(tái)) 四、小車4.0——無線手柄方向感知操控小車(mpu6050+雙藍(lán)牙透傳) 五、雙輪自平衡小車(HAL庫版

    2024年02月05日
    瀏覽(22)
  • STM32超聲波——HC_SR04

    STM32超聲波——HC_SR04

    測量距離:2cm——400cm (1).以下時(shí)序圖要先提供一個(gè)至少10us的脈沖觸發(fā)信號(hào),告訴單片機(jī)我準(zhǔn)備好了,然后該超聲波模塊內(nèi)部將發(fā)出8個(gè)40Khz的的周期電平并檢測回波,這時(shí)候是超聲波模塊發(fā)送的波,檢測能不能發(fā)送超聲波,與單片機(jī)無關(guān),所以代碼就不用寫寫這里的代碼,然

    2024年01月23日
    瀏覽(17)
  • STM32外設(shè)系列—HC-SR04(超聲波)

    STM32外設(shè)系列—HC-SR04(超聲波)

    ?? 文章作者:二土電子 ?? 關(guān)注文末公眾號(hào)獲取其他資料和工程文件! ?? 期待大家一起學(xué)習(xí)交流! 超聲波測距的原理非常簡單,超聲波發(fā)生器在某一時(shí)刻發(fā)出一個(gè)超聲波信號(hào),當(dāng)這個(gè)超聲波信號(hào)遇到被測物體后會(huì)反射回來,被超聲波接收器接收到。這樣只要計(jì)算出從發(fā)出

    2024年02月09日
    瀏覽(26)
  • 【STM32】超聲波傳感器HC-SR04知識(shí)

    【STM32】超聲波傳感器HC-SR04知識(shí)

    ????????超聲波傳感器模塊上面通常有兩個(gè)超聲波元器件,一個(gè)用于發(fā)射,一個(gè)用于接收。 ????????電路板上有四個(gè)引腳:VCC、GND、Trig(觸發(fā))、Echo(回應(yīng))。 ????????工作電壓與電流:5V,15mA ????????感應(yīng)距離:2~400cm ????????感測角度:不小于15度 ??

    2024年02月02日
    瀏覽(55)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包