找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8915|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

STM32F1控制US-100串口超聲波測距源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:398656 發(fā)表于 2018-10-20 11:39 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
STM32F1控制US-100串口超聲波測距

單片機(jī)源程序如下:
  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. //        實(shí)驗(yàn)平臺:普中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)


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:587449 發(fā)表于 2019-8-4 09:36 | 只看該作者
謝謝樓主
回復(fù)

使用道具 舉報

板凳
ID:598184 發(fā)表于 2019-8-9 11:23 | 只看該作者
我想要這個代碼
回復(fù)

使用道具 舉報

地板
ID:511461 發(fā)表于 2019-8-12 09:44 | 只看該作者
這個代碼沒問題嗎?為什么我的沒東西
回復(fù)

使用道具 舉報

5#
ID:199427 發(fā)表于 2020-4-14 14:56 | 只看該作者
謝謝樓主提供的代碼!
回復(fù)

使用道具 舉報

6#
ID:394719 發(fā)表于 2020-4-20 18:35 | 只看該作者
aaaaaa。 發(fā)表于 2019-8-12 09:44
這個代碼沒問題嗎?為什么我的沒東西

串口發(fā)送數(shù)據(jù)換成
0x55
回復(fù)

使用道具 舉報

7#
ID:609235 發(fā)表于 2020-11-5 09:26 | 只看該作者
請問用這個程序,超聲波傳感器的Trig,Echo這兩個腳應(yīng)該接那兩個IO
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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