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

STM32超聲波測距(OLED顯示距離)

這篇具有很好參考價值的文章主要介紹了STM32超聲波測距(OLED顯示距離)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、超聲波簡介

超聲波原理:

利用聲音測距,聲音在空氣中的速度是340m/s(15℃)
當(dāng)聲音傳播時,若遇到障礙物時,就會被反彈回來,通過計時反彈回來的時間就可以計算出從發(fā)射端到障礙物的距離

引腳定義:

工作電壓:3V-5.5V寬電壓供電

測距盲區(qū):2cm最小盲區(qū)

接口定義如圖

序號

接口定義

說明

1

Vcc

供電電源

2

Trig/Rx/SCL

GPIO模式:???Trig ??觸發(fā)信號

UART模式: ??Rx?????接收信號

IIC 模式: ??SCL ???時鐘信號

3

Echo/Tx/SDA

GPIO模式為???Echo ??反饋信號

UART模式: ??Tx?????發(fā)射信號

ICC 模式: ??SCL ???數(shù)據(jù)信號

4

Gnd

GPIO模式測量原理:

stm32超聲波的數(shù)據(jù),stm32,單片機(jī),嵌入式硬件

?

外部MCU給模塊Trig腳一個大于10uS的高電平脈沖;模塊會給出一個與距離等比的高電平脈沖信號,可根據(jù)脈寬時間“T”算出:距離=T*C/2 ?(C為聲速)

即本文中使用的距離 = t / 58 cm

聲速溫度公式:c=(331.45+0.61t/℃)m?s-1 (其中330.45是在0℃)

?????0℃聲速: ??330.45M/S

?????20℃聲速: ?342.62M/S

?????40℃聲速: ?354.85M/S

0℃-40℃聲速誤差7%左右。實際應(yīng)用,如果需要精確距離值,必需要考慮溫度影響,做溫度補償。

二、代碼解析

HCSR04.c

初始化部分

void Sr04_Init()
{
/*GPIO初始化*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽輸出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//設(shè)置發(fā)生電平引腳trig
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);	
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//接受電平引腳echo
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入
GPIO_Init(GPIOB, &GPIO_InitStructure); 
GPIO_ResetBits(GPIOB,GPIO_Pin_11);//默認(rèn)低電平	
GPIO_ResetBits(GPIOB,GPIO_Pin_10);//默認(rèn)低電平

/*定時器TIM2初始化*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_InternalClockConfig(TIM2);
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = 1000-1;//ARR
TIM_TimeBaseStructure.TIM_Prescaler = 72-1;//PSC
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;	
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_ClearFlag(TIM2, TIM_FLAG_Update);//清除標(biāo)志位
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//使能更新中斷->NVIC

/*NVIC初始化*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_Init(&NVIC_InitStructure);
}

開、關(guān)定時器

/*打開定時器*/
void OpenTimer()
{
	TIM_SetCounter(TIM2,0);
	count=0;//計數(shù)為零
	TIM_Cmd(TIM2,ENABLE);
}

/*關(guān)閉定時器*/
void CloseTimer()
{
	TIM_Cmd(TIM2,DISABLE);
}

定時器中斷

void TIM2_IRQHandler(void)	
{
	if(TIM_GetITStatus(TIM2,TIM_IT_Update)== SET)
	{
		TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
		count++;// 72M/(PSC+1)/(ARR+1)即72M/72/1000=1ms
	}
}

獲取計數(shù)值

u32 GetEchoTimer()
{
u32 t=0;
t = count*1000;
t +=TIM_GetCounter(TIM2);
TIM2->CNT = 0;
Delay_ms(50);
return t;
}

計算距離

float Sr04GetLength()
{
u32 t = 0;
int i = 0;
float length = 0;
float sum = 0;
while(i!=5)
	{
      GPIO_SetBits(GPIOB,GPIO_Pin_11);//trig發(fā)出高電平
      Delay_us(20);
      GPIO_ResetBits(GPIOB,GPIO_Pin_11);
      while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10) == 0);//echo等待回響
      OpenTimer();//′打開定時器       
      i = i + 1;//每收到一次,回響信號+1,計算收到5次的平均值
      while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10) == 1);
      CloseTimer();//關(guān)閉定時器    
      t = GetEchoTimer();        
      length = ((float)t/58.0);//cm
      sum = length + sum ;        
   }
    length = sum/5.0;
    return length;
}

LED.c

我這里L(fēng)ED接的是高電平,所以STM32給低電平點亮

/*LED初始化*/
void LED_Init()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}

void LED_ON()
{
	GPIO_ResetBits(GPIOA,GPIO_Pin_0);
}

void LED_OFF()
{
	GPIO_SetBits(GPIOA,GPIO_Pin_0);
}

main.c

OLED顯示距離。

當(dāng)距離小于10cm時,LED點亮;大于10cm時,LED熄滅。文章來源地址http://www.zghlxwxcb.cn/news/detail-766520.html

a=Sr04GetLength();//距離變量a

int main(void)
{
	LED_Init();
	OLED_Init();
	Sr04_Init();
	OLED_ShowString(1,1,"length:");
	
	while(1)
	{
		a=Sr04GetLength();
		OLED_ShowNum(2,1,a,4);
		if(a<10)
		{
			LED_ON();
		}
		else
		{
			LED_OFF();
		}
	}
}

到了這里,關(guān)于STM32超聲波測距(OLED顯示距離)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 電賽MSP430F5529之超聲波測距+OLED 顯示(含主要代碼)

    電賽MSP430F5529之超聲波測距+OLED 顯示(含主要代碼)

    目錄 前言 一、超聲波介紹 二、部分代碼 三、總結(jié) 哎,又雙叒叕,電賽延期了,看起來像是遙遙無期,但是肯定要考慮大局,大家就繼續(xù)抓緊時間學(xué)習(xí)知識,鞏固自己的知識,更進(jìn)一步。好了,今天主要是繼承上一篇博文(OLED顯示)寫的,主要是寫超聲波測距的(US-015)

    2024年02月14日
    瀏覽(30)
  • 基于STM32的超聲波測距

    基于STM32的超聲波測距

    一、HC-SR04模塊介紹 HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可高達(dá)3mm;模塊包括超聲波發(fā)射器、接收器、與控制電路。 模塊的基本工作原理為: (1)采用 IO口 TRIG觸發(fā)測距,給最少 10us的高電平信呈。 (2)模塊自動發(fā)送 8個 40khz的方波,自動檢測是

    2024年02月13日
    瀏覽(28)
  • 基于STM32超聲波測距系統(tǒng)設(shè)計

    基于STM32超聲波測距系統(tǒng)設(shè)計

    隨著社會的發(fā)展和科技的進(jìn)步,人們對測距的要求越來越高,特別是在一些要求實時測距的場合,傳統(tǒng)的測距方式已經(jīng)無法滿足人們的需求,而超聲波測距由于其非接觸和實時反饋的特點在生活中得到廣泛應(yīng)用。 本系統(tǒng)硬件部分由電源模塊、控制模塊、顯示模塊、報警模塊、

    2024年02月04日
    瀏覽(26)
  • stm32之14.超聲波測距代碼

    stm32之14.超聲波測距代碼

    ? ? ? ?-------------------- 源碼 ?

    2024年02月11日
    瀏覽(19)
  • 最詳細(xì)STM32,cubeMX 超聲波測距

    最詳細(xì)STM32,cubeMX 超聲波測距

    這篇文章將詳細(xì)介紹 STM32使用 cubeMX驅(qū)動超聲波測距 。 實驗材料:STM32F103C8T6開發(fā)板, HC-SR04 超聲波模塊。 所需軟件:keil5 , cubeMX ,AiThinker Serial Tool 串口助手。 實驗?zāi)康模毫私?STM32使用 cubeMX驅(qū)動超聲波 。 實驗:超聲波測距。 HC-SR04 超聲波測距模塊可提供 2cm-400cm 的非接觸

    2024年02月08日
    瀏覽(25)
  • STM32:兩種方式實現(xiàn)超聲波測距

    超聲波模塊HC-SR04的工作原理很簡單,有很多辦法可以完成超聲波測距,這里簡單介紹兩種。 配置定時器的中斷并聲明一個Time的變量,在中斷中先判斷標(biāo)志位,然后檢查echo端口是否為高電平,如果是,Time++,然后變量time乘以定時時間就能得到echo端口高電平持續(xù)的時間,經(jīng)過

    2024年04月16日
    瀏覽(28)
  • 基于STM32_HAL庫實現(xiàn)超聲波測距

    基于STM32_HAL庫實現(xiàn)超聲波測距

    核心板? ? ? ? ? ? ? ?: STM32F103C8T6。 超聲波測距模塊?: HC-SR04超聲波測距模塊 實驗?zāi)康? ? ? ? ? ? : 利用超聲波測距,將測量的距離打印在串口并輸出。 HC-SR04超聲波測距模塊介紹 ? ? ? ? 接口定義:Vcc、 Trig(控制端——PA2)、 Echo(接收端——PA11)、 Gnd ? ? ? ?

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

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

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

    2024年02月11日
    瀏覽(21)
  • 【STM32篇】驅(qū)動HC_SR04超聲波測距模塊

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

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

    2024年02月17日
    瀏覽(22)
  • stm32-CS100A 超聲波測距芯片原理及代碼解讀

    stm32-CS100A 超聲波測距芯片原理及代碼解讀

    ????????CS100A 是蘇州順憬志聯(lián)新材料科技有限公司(www.100sensor.com)推出的一款工 業(yè)級超聲波測距芯片,CS100A 內(nèi)部集成超聲波發(fā)射電路,超聲波接收電路,數(shù)字處理電 路等,單芯片即可完成超聲波測距,測距結(jié)果通過脈寬的方式進(jìn)行輸出,通信接口兼容 現(xiàn)有超聲波模塊

    2024年02月04日
    瀏覽(124)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包