找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 6723|回復(fù): 2
收起左側(cè)

HC-HR04超聲波測(cè)距模塊的stm32驅(qū)動(dòng)源碼

[復(fù)制鏈接]
ID:327448 發(fā)表于 2018-9-13 17:30 | 顯示全部樓層 |閱讀模式
串口加屏幕顯示超聲測(cè)距數(shù)據(jù),使用HC-HR04,超聲波測(cè)距是超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的傳播速度為340m/s,根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離(s),即:s=340t/2 。超聲波測(cè)距的原理是利用超聲波在空氣中的傳播速度為已知,測(cè)量聲波在發(fā)射后遇到障礙物反射回來(lái)的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。代碼中已經(jīng)計(jì)算,探測(cè)距離3mm到2m,代碼如下:

stm32單片機(jī)源程序如下:
  1. /*連接方式
  2.         Trig ---- GPIO_Pin_1

  3.         Echo ---- GPIO_Pin_0

  4.         VCC ---- 5.0V
  5.         GND ---- GND
  6. */

  7. #include "led.h"
  8. #include "delay.h"
  9. #include "sys.h"
  10. #include "timer.h"
  11. #include "usart.h"



  12. extern u8  TIM2CH1_CAPTURE_STA;                //輸入捕獲狀態(tài)                                                   
  13. extern u16        TIM2CH1_CAPTURE_VAL;        //輸入捕獲值

  14. float distance;
  15. int main(void)
  16. {       
  17.          
  18.         u32 temp=0;
  19.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
  20.         delay_init();                     //延時(shí)函數(shù)初始化       
  21.         uart_init(9600);                                 //9600         
  22.         LED_Init();                          //初始化與LED連接的硬件接口
  23.         TIM1_PWM_Init(899,0);                         //不分頻。PWM頻率=72000/(899+1)=80Khz
  24.         TIM2_Cap_Init(0XFFFF,72-1);                //以1Mhz的頻率計(jì)數(shù)
  25.            while(1)
  26.         {
  27.         delay_ms(10);
  28.                 Wave_SRD_Strat();
  29. //                TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
  30. //                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);                 
  31.                 if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
  32.                 {
  33.                         temp=TIM2CH1_CAPTURE_STA&0X3F;
  34.                         temp*=65536;                                        //溢出時(shí)間總和
  35.                         temp+=TIM2CH1_CAPTURE_VAL;                //得到總的高電平時(shí)間
  36.                         distance = temp/59.0;
  37.                         printf("HIGH:%.2f cm\r\n",distance);        //打印總的高點(diǎn)平時(shí)間
  38.                         LED1=!LED1;
  39.                         TIM2CH1_CAPTURE_STA=0;                        //開(kāi)啟下一次捕獲
  40.                 }
  41.         }
  42. }
復(fù)制代碼

所有資料51hei提供下載:
超聲波5.0.rar (299.59 KB, 下載次數(shù): 104)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:688443 發(fā)表于 2020-1-28 17:03 | 顯示全部樓層
請(qǐng)問(wèn)distance為什么是temp/59
回復(fù)

使用道具 舉報(bào)

ID:562738 發(fā)表于 2021-2-22 12:37 | 顯示全部樓層
兄弟你這個(gè)錯(cuò)誤一大堆哎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表