
实验报告:51单片机 Proteus仿真 超声波读取+LCD1602显示仿真
一、实验背景
本实验旨在使用51单片机(AT89C51)结合超声波传感器HC-SR04和LCD1602液晶显示屏,通过Proteus仿真平台实现超声波测距功能,并将测得的距离显示在LCD1602上。该系统可以用于智能小车避障、距离检测等应用场景。
二、硬件介绍
-  51单片机(AT89C51) - 主频:12MHz
- 存储器:4KB Flash,128B RAM
- 定时器:两个16位定时器
- I/O口:4个8位并行I/O口
 
-  超声波传感器(HC-SR04) - 工作电压:5V
- 工作频率:40kHz
- 测量范围:2cm-400cm
- 测量精度:±3mm
- 引脚:VCC, GND, Trig, Echo
 
-  LCD1602液晶显示屏 - 显示内容:2行16字符
- 工作电压:5V
- 控制接口:8位并行数据接口或4位并行数据接口
 
三、器件连接
-  HC-SR04连接 - VCC连接到5V电源
- GND连接到地
- Trig连接到P1.5
- Echo连接到P1.6
 
-  LCD1602连接 - RS连接到P2.0
- RW连接到P2.1
- E连接到P2.2
- 数据线D4-D7分别连接到P2.4-P2.7
 
四、设计原理
1. 超声波测距原理
超声波传感器通过发射40kHz的超声波脉冲,当遇到障碍物时,超声波反射回来。传感器接收反射波并计算从发射到接收的时间差,根据公式:
 [ \text{距离} = \frac{\text{时间差} \times \text{声速}}{2} ]
 计算出距离。声速在空气中约为340m/s。
2. 定时器使用
定时器0配置为模式1(16位定时器),用于测量Echo引脚的高电平时间。通过中断处理溢出情况,确保测量的精确性。
3. LCD1602显示
LCD1602使用4位数据接口模式连接到单片机。通过初始化函数LCD_init进行初始化,之后通过LCD_write_str函数将测量结果显示到屏幕上。
五、电路原理
1. 超声波模块
Trig引脚通过软件控制发射超声波脉冲,Echo引脚接收反射信号,并由定时器0记录高电平持续时间。
2. 定时器与中断
定时器0的溢出中断服务程序设置一个标志位Flag_Ultrasonic,表示测量超时,防止因未接收到反射信号而导致程序卡死。
3. LCD1602控制
通过定义的函数库实现对LCD1602的控制,包括初始化、清屏、光标移动和字符串显示等功能。
六、程序原理
程序主要包括以下几个部分:
-  初始化部分 - 初始化LCD1602
- 初始化定时器0
 
-  测距过程 - 控制Trig引脚发出10us高电平脉冲
- 等待Echo引脚变高,启动定时器0
- Echo引脚变低,停止定时器0
- 计算时间差并转换为距离
 
-  显示部分 - 将计算出的距离转换为字符串格式
- 调用LCD_write_str函数显示到LCD1602上
 
void main() {
    unsigned char disp[10];
    unsigned int distance = 0;
    Trig = 0;
    Echo = 1;
    LCD_init();
    Init_Timer0();
    delay_ms(100);
    while (1) {
        TR0 = 0;
        TH0 = 0;
        TL0 = 0;
        Trig = 1;
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
        Trig = 0;
        while (!Echo);
        TR0 = 1;
        while (Echo);
        TR0 = 0;
        distance = Conut();
        
        sprintf(disp, "%dmm", distance);
        LCD_write_str(6, 1, disp);
    }
}
程序简要说明
- main函数初始化硬件和软件环境,进入主循环。
- 通过控制Trig引脚发出超声波信号,并测量Echo引脚高电平持续时间。
- 计算距离并转换为字符串格式,显示在LCD1602上。
七、总结
本实验通过Proteus仿真平台,成功实现了51单片机结合超声波传感器和LCD1602显示屏的距离测量系统。实验过程中,熟悉了定时器的使用、中断的处理以及液晶显示屏的控制方法,为后续更加复杂的应用奠定了基础。
资料
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

![# [0705] Task06 DDPG 算法、PPO 算法、SAC 算法【理论 only】](https://i-blog.csdnimg.cn/direct/2c60a621145c4713b5117f7585071db1.png)

















