前言
本实验旨在学习和理解HC-SR04超声波测距模块的工作原理,并利用stm32F103单片机完成一个超声波测距方案。HC-SR04超声波测距模块是一种常用的距离测量传感器,通过发送超声波脉冲并接收其回波来测量物体与传感器之间的距离。
超声波测距原理
利用HC-SR04超声波测距模块可以实现比较精确的直线测距,其测距原理图如下:
HC-SR04的一端发出超声波,接触到反射物后反射,被另一个端口接收到,所以只要知道发射和接收的时间差,就可以根据声波传播的速率算出HC-SR04和反射物直接的距离。
所以实现超声波测距就需要俩个条件:
发射和接收的时间差
超声波传输的速率
HC-SR04工作原理
HC-SR04模块的实物图如示:
参数 描述
工作电压 DC 5V
工作电流 小于15mA
工作频率 40kHz
探测距离范围 2cm - 400cm
探测角度 15度
脉冲宽度 10微秒以上
输出信号 TTL电平信号,与目标距离成反比
模块尺寸 45mm × 20mm × 15mm
HC-SR04模块的实物图如示:
有四个引脚:
Vcc:+5V电源供电
Trig:输入触发信号(可以触发测距)
Echo:传出信号回响(可以传回时间差)
Gnd:接地
用Trig和Echo引脚实现测距的流程:
1.通过Trig输出一段至少10us的高电平(脉冲),触发一次测距,超声波在传输的过程中Echo一直输出高电平。
2.在Trig脉冲输出后,立即检测Echo引脚的电平,测出Echo高电平持续的时间t,t就是超声波在所测距离一个来回所需时间。
测距时序图如示:
OLED屏幕
OLED(Organic Light Emitting Diode,有机发光二极管)是一种能够自发光的显示技术,广泛应用于单片机开发中的显示模块。它具有高对比度、快速响应、低功耗等优点,适用于小尺寸显示和低功耗应用。
同时,可以将程序中的某些重要参数直接输出到OLED屏幕当中,这样就无需使用串口助手,方便了程序的调试
工作原理
OLED显示屏由许多微小的有机发光二极管组成,每个像素点都可以自发光。当施加电压时,有机材料中的电子和空穴结合,产生光,从而形成图像。OLED不需要背光源,因此可以实现更薄、更轻、更柔性的显示器。
实验示例
使用标准库
HC-SR04模块代码
HC.c#include “HC.h”
#include “Delay.h”
#include “stm32f10x.h”
#include “sys.h”
#define HCSR04_PORT GPIOB
#define HCSR04_CLK RCC_APB2Periph_GPIOB
#define HCSR04_TRIG GPIO_Pin_11
#define HCSR04_ECHO GPIO_Pin_10
u16 msHcCount = 0;
void HC_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);
GPIO_InitStructure.GPIO_Pin = HCSR04_ECHO;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = (1000-1);
TIM_TimeBaseStructure.TIM_Prescaler =(72-1);
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_T