当前位置:   article > 正文

51单片机小车——HC-SR04超声波避障_51单片机小车超声波避障程序

51单片机小车超声波避障程序

一、HC-SR04超声波测距模块原理


1.模块简介


HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。

两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。


2.模块电气参数


工作电压:DC—5V
工作电流:15mA
工作频率:40Hz
电平输出:高5V
电平输出:底0V
感应角度:不大于15度
射程范围:2cm-400cm
高精度 可达0.3cm

3.模块工作原理


(1)采用 IO 口 TRIG 触发测距,给最少 10us 的高电平信呈。
(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;
(3)有信号返回, 通过 IO 口 ECHO 输出一个高电平, 高电平持续的时间就是超
波从发射到返回的时间。 

4.HC-SR04超声波模块原理图

5.接线方法

超声波模块有4个引脚,接线方法如下:
VCC--5V
GND--GND
Trig--板子上的输出引脚(用来发射超声波信号)
Echo--板子上的输入引脚(用来接收返回的超声波信号)

二、程序编写

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include "chaosheng.h"
  4. sbit fs = P2^7;
  5. sbit js = P2^6;
  6. unsigned int jg;
  7. unsigned int jl = 20;
  8. void Delay50ms() //@11.0592MHz
  9. {
  10. unsigned char data i, j;
  11. i = 90;
  12. j = 163;
  13. do
  14. {
  15. while (--j);
  16. } while (--i);
  17. }
  18. void Delay10us(void) //@11.0592MHz
  19. {
  20. unsigned char data i;
  21. i = 2;
  22. while (--i);
  23. }
  24. void Timer1_Init()
  25. {
  26. TMOD = 0x10; //设置定时器模式
  27. TL1 = 0x00; //设置定时初值
  28. TH1 = 0x00; //设置定时初值
  29. TR1 = 0;
  30. }
  31. void chaosheng () //超声波测距程序
  32. {
  33. fs = 1;
  34. Delay10us ();
  35. fs = 0;
  36. while(js==0);
  37. TR1 = 1;
  38. while(js==1);
  39. TR1 = 0;
  40. jg = ((TH1*256+TL1)*1.7)/100;
  41. TL1 = 0x00; //设置定时初值
  42. TH1 = 0x00; //设置定时初值
  43. if(jl > jg)
  44. {
  45. car_stop ();
  46. Delay50ms ();
  47. }
  48. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号