標題: STM32F1控制US-100串口超聲波測距源碼 [打印本頁]

作者: XXK    時間: 2018-10-20 11:39
標題: STM32F1控制US-100串口超聲波測距源碼
STM32F1控制US-100串口超聲波測距

單片機源程序如下:
  1. #include "usart-ultrasonic.h"
  2. #include "usart.h"
  3. #include "SysTick.h"


  4. //超聲波測距,獲取一次測量值
  5. u16 Ultrasonic_ranging()
  6. {
  7.         u16 range=0;
  8.         usart_r=256;
  9.         USART_SendData(USART1,'U');
  10.         while(usart_r==256);
  11.         range+=usart_r*256;        usart_r=256;
  12.         while(usart_r==256);
  13.         range+=usart_r;                usart_r=256;
  14.         return range;
  15. }


  16. //超聲波測距,多次測量濾波
  17. //參數(shù)是測量次數(shù)
  18. u16 Ultrasonic_ranging_s(u8 time)
  19. {
  20.         u16 range=0,refer_range=0,sum_range=0,return_range=0;
  21.         u8 num=0;
  22.         range=Ultrasonic_ranging();        //先測一次得到參考值
  23.         if((range>19)&&(range<4000))//當(dāng)參考值大于19小于4000時正確
  24.         {
  25.                 refer_range=range;
  26.                 for(;time>0;time--)                //多測幾次,矯正參考值
  27.                 {
  28.                         range=Ultrasonic_ranging();
  29.                         if((range>19)&&(range<4000)&&((refer_range-range<10)||(range-refer_range<10)))//測量值在20到4000之間,且偏離參考值不超過10
  30.                         {
  31.                                 sum_range+=range;
  32.                                 num++;
  33.                                 refer_range=(refer_range+range)/2;//用有效測量值矯正參考值
  34.                         }
  35.                         delay_ms(10);//消除余波的干擾
  36.                 }
  37.                 return_range=(sum_range+refer_range)/(num+1);//把參考值和多次測量得到的有效值取算數(shù)平均數(shù),作為返回值;
  38.                 return return_range;
  39.         }
  40.         else{        return 0;        }//如果超出4000mm返回0
  41. }
復(fù)制代碼
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "tftlcd.h"
  6. #include "usart-ultrasonic.h"


  7. /*
  8. //        程序功能:使用US-100串口超聲波模塊測距,并濾波使測量值穩(wěn)定
  9. //        芯片型號:STM32F103ZET6
  10. //        實驗平臺:普中PZ6806L開發(fā)板
  11. //        作者:XXK
  12. //        2018年10月20日
  13. */

  14. int main()
  15. {
  16.                 SysTick_Init(72);
  17.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  18.                 LED_Init();
  19.                 TFTLCD_Init();
  20.                 USART1_Init(9600);//超聲波測距模塊US-100使用的波特率是9600,不可更改
  21.                
  22.                 while(1)
  23.                 {
  24.                         led1=!led1;
  25.                         LCD_ShowNum(50,50,(u32)Ultrasonic_ranging_s(3),4,24);//屏幕顯示測量值,單位毫米
  26.                 }
  27. }
復(fù)制代碼


所有資料51hei提供下載:
US-100串口超聲波測距.rar (297.75 KB, 下載次數(shù): 218)



作者: Alex_12    時間: 2019-8-4 09:36
謝謝樓主
作者: 小安阿達    時間: 2019-8-9 11:23
我想要這個代碼
作者: aaaaaa。    時間: 2019-8-12 09:44
這個代碼沒問題嗎?為什么我的沒東西
作者: wxyz    時間: 2020-4-14 14:56
謝謝樓主提供的代碼!
作者: 了咖啡公平    時間: 2020-4-20 18:35
aaaaaa。 發(fā)表于 2019-8-12 09:44
這個代碼沒問題嗎?為什么我的沒東西

串口發(fā)送數(shù)據(jù)換成
0x55
作者: Bruce1111111    時間: 2020-11-5 09:26
請問用這個程序,超聲波傳感器的Trig,Echo這兩個腳應(yīng)該接那兩個IO




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