找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7702|回复: 6
收起左侧

STM32F1控制US-100串口超声波测距源码

[复制链接]
ID:398656 发表于 2018-10-20 11:39 | 显示全部楼层 |阅读模式
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. //参数是测量次数
  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))//当参考值大于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);//把参考值和多次测量得到的有效值取算数平均数,作为返回值;
  38.                 return return_range;
  39.         }
  40.         else{        return 0;        }//如果超出4000mm返回0
  41. }
复制代码
  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串口超声波模块测距,并滤波使测量值稳定
  9. //        芯片型号:STM32F103ZET6
  10. //        实验平台:普中PZ6806L开发板
  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. }
复制代码


所有资料51hei提供下载:
US-100串口超声波测距.rar (297.75 KB, 下载次数: 216)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:587449 发表于 2019-8-4 09:36 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

ID:598184 发表于 2019-8-9 11:23 | 显示全部楼层
我想要这个代码
回复

使用道具 举报

ID:511461 发表于 2019-8-12 09:44 | 显示全部楼层
这个代码没问题吗?为什么我的没东西
回复

使用道具 举报

ID:199427 发表于 2020-4-14 14:56 | 显示全部楼层
谢谢楼主提供的代码!
回复

使用道具 举报

ID:394719 发表于 2020-4-20 18:35 | 显示全部楼层
aaaaaa。 发表于 2019-8-12 09:44
这个代码没问题吗?为什么我的没东西

串口发送数据换成
0x55
回复

使用道具 举报

ID:609235 发表于 2020-11-5 09:26 | 显示全部楼层
请问用这个程序,超声波传感器的Trig,Echo这两个脚应该接那两个IO
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表