欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: HC-HR04超聲波測距模塊的stm32驅(qū)動源碼 [打印本頁]

作者: wqe561    時間: 2018-9-13 17:30
標(biāo)題: HC-HR04超聲波測距模塊的stm32驅(qū)動源碼
串口加屏幕顯示超聲測距數(shù)據(jù),使用HC-HR04,超聲波測距是超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為340m/s,根據(jù)計時器記錄的時間t,就可以計算出發(fā)射點距障礙物的距離(s),即:s=340t/2 。超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發(fā)射后遇到障礙物反射回來的時間,根據(jù)發(fā)射和接收的時間差計算出發(fā)射點到障礙物的實際距離。代碼中已經(jīng)計算,探測距離3mm到2m,代碼如下:

stm32單片機源程序如下:
  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)先級分組2
  20.         delay_init();                     //延時函數(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的頻率計數(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;                                        //溢出時間總和
  35.                         temp+=TIM2CH1_CAPTURE_VAL;                //得到總的高電平時間
  36.                         distance = temp/59.0;
  37.                         printf("HIGH:%.2f cm\r\n",distance);        //打印總的高點平時間
  38.                         LED1=!LED1;
  39.                         TIM2CH1_CAPTURE_STA=0;                        //開啟下一次捕獲
  40.                 }
  41.         }
  42. }
復(fù)制代碼

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



作者: 靜寂的天空    時間: 2020-1-28 17:03
請問distance為什么是temp/59
作者: 123kkl    時間: 2021-2-22 12:37
兄弟你這個錯誤一大堆哎




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1