以下是一个基于51单片机的超声波雷达程序示例(使用Keil C语言),实现距离测量和方位扫描:
#include <reg52.h>
#include <intrins.h>
// 硬件定义
#define ULTRASONIC_TRIG P2_0 // 触发引脚
#define ULTRASONIC_ECHO P2_1 // 回波引脚
#define SERVO_PIN P1_0 // 舵机控制引脚
// 全局变量
unsigned char current_angle = 90; // 当前舵机角度 (0-180)
unsigned int distance = 0; // 测量距离
// 延时函数 (12MHz晶振)
void delay_us(unsigned int us) {
while (us--) {
_nop_(); _nop_();
}
}
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
// 舵机角度控制
void set_servo_angle(unsigned char angle) {
unsigned int pulse_width;
pulse_width = 500 + angle * 2000 / 180; // 计算脉宽 (0.5ms~2.5ms)
SERVO_PIN = 1;
delay_us(pulse_width);
SERVO_PIN = 0;
delay_ms(20); // PWM周期约20ms
}
// 超声波测距
unsigned int measure_distance() {
unsigned int timeout = 60000; // 超时计数 (约30ms)
unsigned long echo_time = 0;
ULTRASONIC_TRIG = 0;
delay_us(5);
ULTRASONIC_TRIG = 1; // 发送10us触发脉冲
delay_us(10);
ULTRASONIC_TRIG = 0;
while (!ULTRASONIC_ECHO && timeout--); // 等待回波响应
if (!timeout) return 0;
while (ULTRASONIC_ECHO) { // 测量高电平持续时间
echo_time++;
delay_us(1); // 精度约1us
}
return echo_time * 0.17; // 计算距离(单位:cm) 公式:(340m/s * 100cm/m * time/2 / 1000000)
}
// 主函数
void main() {
unsigned char scan_direction = 0; // 0:右转 1:左转
while(1) {
set_servo_angle(current_angle); // 设置当前角度
distance = measure_distance(); // 距离测量
// 更新角度 (5度步进)
if(!scan_direction) {
if(current_angle < 180) current_angle += 5;
else scan_direction = 1;
}
else {
if(current_angle > 0) current_angle -= 5;
else scan_direction = 0;
}
// 此处添加数据显示处理
// 示例:通过串口输出 (角度,距离)
// UART_Send(current_angle, distance);
}
}
关键功能说明:
-
舵机控制:
- 使用0.5ms~2.5ms脉冲控制角度(对应0°~180°)
set_servo_angle()函数实现精确定位
-
超声波测距:
- 通过发送10μs触发信号
- 测量Echo引脚高电平持续时间
- 距离计算公式:
距离(cm) = 高电平时间(us) × 0.17
-
扫描机制:
- 0°→180°→0°往复扫描(步进5°)
- 扫描速度可通过调整
delay_ms(20)修改
-
参数校准:
- 声速校正:公式中0.17对应340m/s声速(根据温湿度调整)
- 角度步进:修改current_angle的增减值可调整扫描分辨率
- 超时保护:避免因障碍物丢失导致死循环
硬件连接建议:
- HC-SR04模块:
- VCC → 5V
- Trig → P2.0
- Echo → P2.1
- GND → GND
- 舵机SG90:
- 红线 → 5V
- 棕线 → GND
- 黄线 → P1.0
扩展建议:
- 添加OLED/LCD显示实时角度和距离
- 通过串口连接PC实现雷达图显示
- 增加温度传感器补偿声速
- 添加蜂鸣器报警功能(当距离过近时)
- 设置扫描扇区角度(如只扫描90°~150°范围)
注意:实际应用时需根据单片机主频调整延时函数参数,测量远距离时需增加超时时间。超声波模块前方需保持无遮挡,避免干扰信号反射。
基于单片机的超声波测距系统实现
文章目录1 简介2 主要器件3 实现效果4 设计原理4.1 声波雷达原理5 部分实现代码6 最后1 简介Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目基于单片机的超声波测距系统
fhbding
2021-11-10 08:53:35
基于51单片机的超声波测距模块设计
超声波测距的模块,51单片机接上12864液晶,HC-SR04超声波模块,就可以了,具体程序没怎么看,超声波模块的硬件也不晓得。
2019-12-10 16:33:52
怎么实现基于超声波检测的倒车雷达设计?
本文所设计的倒车雷达系统是保障汽车倒车安全的辅助系统,通过超声波探头发出超声波,使用高速单片机计算距离,并加入了温度补偿电路,提高了距离计算的精度。系统安装的液晶显示器可以直观的显示温度和距离,给
cKin_g
2021-05-14 06:04:41
基于STC89C52RC单片机的超声波测距程序设计
网络上集的STC89C52RC单片机超声波测距程序及电子制作实物,使用单片机最小系统进行试验,超声波部分使用HC-SR04模块,测量范围:4-300cm,实际测量上最长可达到5.70m。
2020-03-12 15:25:53
8051单片机和超声波传感器制作的超声波测距仪
在本文中,单片机开发工程师们使用了8051单片机和超声波传感器制作了一个超声波测距仪。我们知道,有很多种方法可以用来测量距离。该方案制作的超声波测距仪系统可测量3米的距离,最远可达4米。
2020-06-29 10:45:33
如何去编写51单片机超声波测距(数码管显示)程序?
51单片机超声波测距(数码管显示)程序/*超声波模块的TRIG管脚接在单片机的P20口,ECHO管脚接在单片机的P21口 其他的电源管脚接在单片机 开发板上电源口即可。*/#include"
mxjuwer
2021-07-06 08:12:41
怎样去设计一种基于51单片机的超声波避障小车
超声波避障程序随处可见,基于51单片机的超声波避障小车也很成熟,但是完整的Proteus仿真并不容易找到开源资料。这次主要给大家分享其Proteus仿真部分。涉及到的模块有:超声波
kdsnvjsnjk
2021-07-20 07:17:39
基于atmegal16单片机的超声波测距短信上传设计
,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。1、基于atmegal16单片机的超声波测距短信上传设计-超声波-GSM-(原理图+程序源码)2017-507
迷你洼哇
2021-07-13 08:16:19
STM32单片机的高精度超声波测距系统设计
STM32单片机的高精度超声波测距系统的设计主要由STM32单片机、超声波发射电路、接受电路、补偿电路和软件等构成。该系统将STM32单片机作为整个系统的核心,通过协调各部分电路工作,进而实现高精度的超声波测距口。
2019-10-17 15:10:04
超声波电动牙刷单片机方案
随着人们对口腔健康需求的升级,口腔护理产品超声波电动牙刷的需求也日益高涨。超声波电动牙刷可以去除牙菌斑,减少牙周炎和牙龈出血等问题。为应市场需求,宇凡微推出了超声波电动牙刷单片机方案。
2023-06-07 13:49:13
如何去设计一种STM32单片机的高精度超声波测量系统
相比于传统的单片机,STM32单片机具有更高的时间测量分辨率,其主频与定时器频率高达72MHz,且该单片机在开启定时器的同时,会启动PWM通道驱动超声波发射器和通道捕捉回波信号,提高了测量的精度
wang21cj
2021-12-06 06:06:19
超声波(Ultrasound,又称超声波雷达)定位
超声波(Ultrasound,又称超声波雷达)定位,即使用发射探头发出频率大于20KHz的声波和计算飞行时间来探测距离。常用的超声波频率有40KHz、
2022-03-11 19:29:37
基于atmegal16单片机的超声波测距短信上传设计
,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。1、基于atmegal16单片机的超声波测距短信上传设计-超声波-GSM-(原理图+程序源码)2017-...
h1654155701.3944
2021-12-08 06:37:46
基于单片机的超声波测厚仪设计
设计一个基于超声波测厚的装置,包含硬件设计:单片机选择,数据采集与输出显示、键盘接口设计、开机关机控制、厚度标定、声速选择与调整等,及相应的软件设计。要用接触式测量方法有偿有的加我***
a65404
2022-05-12 21:00:11
51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离
个人是小白,实在不会写,麻烦大佬们帮忙写一个程序,实现51单片机的超声波测距,并用74HC595驱动数码管显示超声波测距的距离!!!
jf_45451522
2023-11-23 15:19:03
HC-SR04和51单片机是如何实现超声波测距的
超声波测距原理是什么?怎样去编写超声波测距模块的源代码?HC-SR04和51单片机是如何实现超声波测距的?
lumia.net
2021-10-20 06:09:27
怎样去设计一种基于51单片机的超声波测距小车
超声波测距小车资料链接:51单片机超声波测距.rar项目展示:仿真展示 :一、项目要求(一)项目内密本课题的主要内容是,将超声波传感器安装在一台沿直线行走的小车上,由AT89C51 |控制超声波
山中老虎
2021-07-20 06:20:18
如何利用单片机实现汽车超声波防盗系统的设计
021【毕设课设】基于单片机汽车超声波防盗系统设计,通过实时检测超声波测距的数值,然后显示在显示液晶屏幕上,可以通过按键设定报警范围,报警采用声光报警,使用温度补偿电路增加超声波测距的精度。包含
mintsy
2022-01-10 07:05:06
最简单的51超声波测距程序分享
直接显示在数码管上,距离超过20cm就显示三个A,否则显示正常的距离值。提示:以下是本篇文章正文内容,下面案例可供参考一、51超声波测距是什么?51单片机通过控制定时器输出一定规则的高低电平控制超声波传感器HC-SR04采集距离,最后解析距离数据显示在数码管上。二、使用步骤1.引入库代码下
hfgdf
2022-01-24 06:45:38
超声波的相关资料分享
篇博文(OLED显示)写的,主要是写超声波测距的(US-015)一、超声波介绍利用TI公司的MSP430F5529单片机+超声波模块+OLED 实现这里主要是利用单片机定时器的捕获功能来捕获超声波高电平持续时间,再计算得到距离,最后再在OLED 屏幕上显示出来,上图
飞翔的贝壳
2022-01-25 07:30:30
单片机超声波测距+LCD1602显示相关资料分享
LCD.H头文件中将宏#define LCD1602_4PINS打开,我们这里使用的LCD1602是8位,所以默认将该宏注释。实验接线:LCD1602液晶模块-->单片机管脚参考LCD1602液晶显示实验接线超声波模块-->单片机管脚TRIG-->P21ECH
倪love
2022-01-27 07:26:39
如何采用STC89C52单片机实现超声波红外避障语音导盲仪设计
148【毕设课设】基于51单片机超声波红外避障语音导盲仪设计(电路图+程序+论文)【资源下载】下载地址如下:https://docs.qq.com/doc/DTlRSd01BZXNpRUxl基于51
fgdfdzdg
2021-11-10 09:04:02
基于NEC单片机田间超声波测距的应用有哪些
了电控液压转向系统和作业机具升降控制系统,实现了拖拉机自动转向操纵控制和作业机具自动升降控制,但整套设备价格昂贵,推广尚需时日。本文提出了基于NEC单片机的田间超声波测距方法,设计了一种地面仿形装置,利用
滔滔不绝的滔滔
2020-08-26 06:23:34
双频超声波清洗机
2024-01-12 23:23:02
基于单片机的超声波测距系统有什么优点?
廉。但是以往的超声波传感器由于高精度的要求,结构复杂,且不能够根据不同的环境自动调节,成本高,适应性差。本文介绍一种以AT89C2051 单片机为核心的低成本、高精度的数字显示超声波测距仪的研制。由于这种
60user56
2019-10-25 06:58:51
elmos E524.09超声波雷达配置问题
最近在做超声波雷达驱动这部分工作,发现用MEAS_STEUP命令配置雷达不成功。不知道大家在实际操作中有没有遇到过这种问题,或许是我哪里的操作有问题。控制器发出的波形我都用示波器看过了,数据内容和偶
qihixin
2020-05-22 13:32:45