基于AT89S51单片机超声波测距仪器设计方案
1
拍明芯城
基于AT89S51单片机的超声波测距仪器设计方案
一、引言
随着工业自动化、机器人导航、智能交通等领域的快速发展,非接触式距离测量技术的重要性日益凸显。超声波测距技术凭借其非接触、成本低、抗干扰能力强等优势,成为中短距离测量的主流方案之一。本设计以AT89S51单片机为核心,结合超声波传感器、温度补偿模块和显示电路,构建一套高精度、低成本的超声波测距系统,适用于工业检测、智能车辆避障、液位监测等场景。

本方案的核心设计目标包括:
测量范围:0.2m至5m,精度±1cm;
实时性:单次测量时间≤100ms;
环境适应性:支持-10℃至+50℃温度范围,通过温度补偿修正声速误差;
用户交互:LED数码管实时显示距离值,按键触发测量与数据保存。
二、系统总体设计
系统采用模块化设计,分为硬件电路与软件程序两大部分。硬件电路包括单片机最小系统、超声波发射/接收模块、温度补偿模块、显示电路和按键电路;软件程序通过主循环调用发射、接收、数据处理和显示子程序,实现测距功能。
2.1 硬件系统架构
硬件系统以AT89S51单片机为核心,通过以下模块协同工作:
超声波发射模块:驱动超声波传感器发射脉冲信号;
超声波接收模块:接收回波信号并放大滤波,输出可识别的电平信号;
温度补偿模块:采集环境温度,修正声速计算误差;
显示模块:LED数码管显示测量距离;
按键模块:触发测量、保存数据或清零操作。
2.2 软件系统流程
软件程序采用C语言编写,主流程如下:
初始化:配置定时器、中断、I/O口和串口;
按键检测:判断是否触发测量;
发射超声波:启动定时器,发送脉冲信号;
接收回波:检测回波信号,停止定时器并记录时间差;
温度补偿:读取温度传感器数据,计算当前声速;
距离计算:根据时间差和声速计算距离;
数据显示:将结果输出至LED数码管;
数据存储:按需保存测量值至单片机内部RAM。
三、硬件电路设计
3.1 单片机最小系统
元器件型号:AT89S51-24PU(DIP40封装)
作用:作为系统核心控制器,负责信号处理、定时控制、数据计算和人机交互。
选型依据:
性能优势:AT89S51是8位高性能CMOS单片机,采用ATMEL高密度非易失存储器技术,支持1000次以上在线编程(ISP),兼容MCS-51指令集,便于代码移植与扩展。
资源丰富:内置4KB Flash程序存储器、128字节RAM、4个8位I/O口(P0-P3)、2个16位定时器/计数器(T0/T1)和1个全双工串行口(UART),满足测距系统的存储与控制需求。
成本效益:相比STM32等32位单片机,AT89S51价格更低(约6-10元/片),适合低成本批量应用。
电路设计:
时钟电路:采用12MHz晶振与22pF电容构成内部振荡器,为单片机提供稳定时钟信号;
复位电路:由10μF电容和8.2kΩ电阻组成上电复位电路,确保系统可靠启动;
电源电路:VCC接+5V直流电源,GND接地,通过0.1μF电容滤波消除电源噪声。
3.2 超声波发射模块
元器件型号:TCT40-10T超声波传感器(发射端)
作用:将电信号转换为40kHz超声波脉冲信号并发射至目标物体。
选型依据:
频率匹配:TCT40-10T工作频率为40kHz,与接收端TCT40-10R匹配,确保;
发射功率:该传感器发射声压级≥105dB,可覆盖5m测量范围;
成本低廉:单价约5-8元,适合低成本设计。
电路设计:
驱动电路:单片机P1.0口输出10μs高电平脉冲,通过三极管(如S8050)放大后驱动传感器发射超声波;
保护电路:在传感器电源端并联100Ω电阻和0.1μF电容,抑制高频噪声。
3.3 超声波接收模块
元器件型号:TCT40-10R超声波传感器(接收端)+ CX20106A红外接收放大芯片
作用:接收目标物体反射的超声波信号,经放大滤波后输出可识别的电平信号。
选型依据:
CX20106A优势:
集成前置放大器、限幅放大器、带通滤波器、检波器和积分器,可直接处理微弱回波信号;
中心频率40kHz,带宽±2kHz,与发射信号匹配;
输出端为TTL电平,可直接连接单片机I/O口。
TCT40-10R特性:接收灵敏度≥-70dB,满足5m距离检测需求。
电路设计:
接收电路:传感器输出信号接入CX20106A的1脚(IN),7脚(OUT)输出至单片机P3.2(INT0)引脚;
参数调整:通过调节CX20106A的2脚(增益控制)和5脚(检测距离控制)电阻,优化信号灵敏度与抗干扰能力。
3.4 温度补偿模块
元器件型号:DS18B20数字温度传感器
作用:实时采集环境温度,修正声速计算误差,提高测距精度。
选型依据:
测量精度:DS18B20在-10℃至+85℃范围内精度±0.5℃,满足工业级需求;
接口简单:采用单总线协议,仅需1根I/O线(P1.6)即可与单片机通信;
封装多样:支持TO-92、SOIC等多种封装,便于安装与替换。
电路设计:
电源电路:VCC接+5V,GND接地,DQ引脚通过4.7kΩ上拉电阻连接至P1.6;
防接反保护:在电源端串联二极管(如1N4148),防止极性接反损坏传感器。
3.5 显示模块
元器件型号:4位共阴极LED数码管(0.36英寸)
作用:实时显示测量距离,单位厘米(cm)。
选型依据:
显示清晰:共阴极数码管亮度高,适合室内外环境;
驱动简单:通过4位锁存器(如74HC573)和限流电阻(220Ω)连接至单片机P0口,节省I/O资源;
成本低:单价约2-3元,适合批量应用。
电路设计:
段选控制:P0口连接数码管段选端(a-g,dp),通过74HC573锁存;
位选控制:P2口低4位(P2.0-P2.3)连接数码管位选端,通过三极管驱动。
3.6 按键模块
元器件型号:轻触按键(6mm×6mm)
作用:触发测量、保存数据或清零操作。
选型依据:
操作便捷:轻触按键体积小,寿命长(≥10万次);
接口简单:通过上拉电阻(10kΩ)连接至单片机I/O口(P3.3-P3.5),检测低电平触发。
电路设计:
按键消抖:软件采用延时消抖(约10ms),避免机械抖动导致误触发。
四、软件程序设计
4.1 主程序设计
主程序流程如下:
#include <reg51.h>
#include <intrins.h>
#include "ds18b20.h" // 温度传感器驱动头文件
#define uchar unsigned char
#define uint unsigned int
sbit Trig = P1^0; // 发射控制引脚
sbit Echo = P3^2; // 接收中断引脚
sbit KEY1 = P3^3; // 测量按键
sbit KEY2 = P3^4; // 保存按键
sbit KEY3 = P3^5; // 清零按键
uchar code seg_table[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 数码管段码表
uchar display_buf[4] = {0}; // 显示缓冲区
float distance = 0; // 距离值(cm)
float temperature = 25.0; // 环境温度(℃)
void delay_ms(uint ms); // 延时函数
void timer0_init(); // 定时器0初始化
void int0_init(); // 外部中断0初始化
void display(); // 数码管显示函数
void key_scan(); // 按键扫描函数
float calculate_distance(); // 距离计算函数
float get_temperature(); // 温度读取函数
void main() {
timer0_init();
int0_init();
EA = 1; // 开总中断
while(1) {
key_scan(); // 检测按键
temperature = get_temperature(); // 读取温度
display(); // 更新显示
}
}
4.2 子程序设计
4.2.1 超声波发射子程序
void trigger_ultrasonic() {
Trig = 1; // 发射引脚置高
_nop_(); _nop_(); _nop_(); _nop_(); // 延时约1μs(12MHz晶振)
Trig = 0; // 发射引脚置低
}
4.2.2 超声波接收子程序(中断服务)
void int0_isr() interrupt 0 {
static uint time_count = 0;
if (Echo == 1) { // 上升沿触发,启动定时器
TR0 = 1; // 定时器0开始计时
} else { // 下降沿触发,停止定时器
TR0 = 0; // 定时器0停止计时
time_count = TH0 * 256 + TL0; // 读取计数值
TH0 = 0; TL0 = 0; // 清零定时器
distance = calculate_distance(time_count); // 计算距离
}
}
4.2.3 距离计算子程序
float calculate_distance(uint time) {
float speed_of_sound; // 声速(m/s)
// 声速修正公式:v = 331.4 + 0.607*T(T为温度,℃)
speed_of_sound = 331.4 + 0.607 * temperature;
// 距离 = (时间 * 声速) / 2(单位:cm)
return (time * speed_of_sound * 0.01 / 2);
}
4.2.4 温度读取子程序
float get_temperature() {
uchar temp_l, temp_h;
float temp;
DS18B20_Init(); // 初始化DS18B20
DS18B20_WriteByte(0xCC); // 跳过ROM
DS18B20_WriteByte(0x44); // 启动温度转换
delay_ms(800); // 等待转换完成
DS18B20_Init();
DS18B20_WriteByte(0xCC); // 跳过ROM
DS18B20_WriteByte(0xBE); // 读取温度寄存器
temp_l = DS18B20_ReadByte(); // 读取低字节
temp_h = DS18B20_ReadByte(); // 读取高字节
temp = (temp_h << 8) | temp_l; // 合并数据
temp *= 0.0625; // 转换为实际温度值
return temp;
}
4.2.5 数码管显示子程序
void display() {
static uchar i = 0;
P2 = ~(0x01 << i); // 位选控制
P0 = seg_table[display_buf[i]]; // 段选控制
if (++i == 4) i = 0; // 循环显示4位
delay_ms(2); // 动态扫描延时
}
4.2.6 按键扫描子程序
void key_scan() {
if (KEY1 == 0) { // 测量按键按下
delay_ms(10); // 消抖
if (KEY1 == 0) {
trigger_ultrasonic(); // 触发发射
while(!Echo); // 等待回波
}
}
if (KEY2 == 0) { // 保存按键按下
delay_ms(10);
if (KEY2 == 0) {
// 保存距离值至EEPROM(需扩展)
}
}
if (KEY3 == 0) { // 清零按键按下
delay_ms(10);
if (KEY3 == 0) {
distance = 0; // 清零距离值
}
}
}
五、系统调试与优化
5.1 硬件调试
电源检查:确保VCC=5V,GND接地良好,无短路或虚焊;
晶振测试:用示波器观察XTAL1引脚波形,确认频率为12MHz;
传感器测试:用信号发生器模拟40kHz信号,检查CX20106A输出是否正确;
温度传感器测试:通过串口打印DS18B20读取值,验证温度精度。
5.2 软件调试
定时器校准:用逻辑分析仪捕获定时器输出,调整初值使计时准确;
中断响应测试:触发Echo信号,检查中断服务程序是否及时执行;
显示测试:手动修改display_buf值,观察数码管显示是否正确;
按键测试:按下按键,检查程序是否进入对应分支。
5.3 精度优化
声速修正:根据实际环境温度动态调整声速计算公式的系数;
滤波算法:采用移动平均滤波(如取最近5次测量值的平均)减少随机误差;
硬件滤波:在CX20106A输出端增加RC低通滤波器(如R=1kΩ,C=0.1μF),抑制高频噪声。
六、元器件采购与替代方案
6.1 元器件采购渠道
推荐通过拍明芯城查询元器件型号、品牌、价格及供应商信息。拍明芯城提供以下功能:
型号查询:输入AT89S51、DS18B20等型号,获取详细参数与数据手册;
价格参考:对比不同供应商报价,选择性价比最高的渠道;
国产替代:如AT89S51缺货,可查询STC89C52(兼容MCS-51指令集,性能更强)作为替代;
封装与规格:确认DIP40、SOIC等封装是否匹配设计需求。
6.2 关键元器件替代方案
| 元器件型号 | 替代型号 | 选型依据 |
|---|---|---|
| AT89S51-24PU | STC89C52RC | 兼容MCS-51指令集,内置8KB Flash,支持更高时钟频率(最高11.0592MHz) |
| TCT40-10T/R | MAXBOTIX HR-MAX | 测量范围更广(0-6.45m),精度±1cm,但成本较高(约50-80元) |
| CX20106A | LM358+外围电路 | 用运放搭建放大滤波电路,灵活性高,但设计复杂度增加 |
| DS18B20 | LM35DZ | 模拟输出温度传感器,需ADC转换,但价格更低(约2-3元) |
七、总结与展望
本设计基于AT89S51单片机,结合超声波传感器与温度补偿模块,实现了高精度、低成本的非接触式测距系统。通过模块化设计与软件优化,系统在5m范围内精度可达±1cm,满足工业检测与智能控制需求。未来可扩展以下功能:
无线通信:增加蓝牙或Wi-Fi模块,实现远程数据传输;
多传感器融合:结合红外或激光传感器,提高复杂环境下的可靠性;
上位机软件:开发PC端或手机APP,实现数据记录与分析。
本方案为超声波测距技术的低成本实现提供了完整参考,适用于教学实验、工业自动化与智能家居等领域。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。

产品分类

2012- 2022 拍明芯城ICZOOM.com 版权所有 客服热线:400-693-8369 (9:00-18:00)