项目开源链接以及作者信息
| 项 | 参数 |
|---|---|
| VX公众号 | 少年潜行 (关注回复 A004超声波测距 在对应文中获得网盘链接) |
| Proteus8.9 | 链接:pan.baidu.com/s/1kkgFmRBl… 提取码:9bde 复制这段内容后打开百度网盘手机App,操作更方便哦 |
📖 欢迎交流 如果对你有帮助,希望可以帮我点个赞👍和收藏,谢谢
📖 有问题请于微信公众号后台回复,
V1.1 (2025_07_05更新)
更新内容
1、在V1.0基础上优化了LCD显示延时,使得LCD的显示更加迅速。 2、如果有问题,大家可以继续提出。大家就不要去下资源绑定里面的内容了,那个不能实时更新。
LCD显示优化
在实际仿真使用的时候LCD刷新会比较慢,使用实物的时候可以用原来的代码,仿真的时候可以把延时注释了,使用下面的函数,开头要加个1ms的延时,因为没有忙检测。
void LcdWriteCom(uint8_t com) //写入命令
{
Lcd1602_Delay1ms(1);
LCD1602_E = 0; //使能
LCD1602_RS = 0; //选择发送命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //放入命令
// Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E = 1; //写入时序
// Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
void LcdWriteData(uint8_t dat) //写入数据
{
Lcd1602_Delay1ms(1);
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择输入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //写入数据
// Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
// Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
V1.0 基础内容
项目说明
该设计是一个简易的基于51单片机的超声波测距系统,功能说明:
- 使用LCD1602实时显示当前的超声波测试距离。
- 可以通过示波器查看发送的信号和超声波模块接收到的信号。
硬件设计
硬件设计如图,主要使用LCD屏幕展示超声波的测量距离,然后还有就是一个示波器显示发送Trig和Echo的信号。
软件设计
主要就是在While中发送信号,然后使用LCD1602显示
#include "reg52.h"
#include "stdio.h"
#include "hc_sr04.h"
#include "LCD1602.h"
#include "stdio.h"
#define u8 unsigned char
#define u16 unsigned int
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
void main()
{
float dist_value = 0;
u8 lcdShowBuff[16] = {0};
HCSR04_Init(); // HCSR04的引脚初始化
HCSR04_Timer0Init(); // HCSR04的定时器计数初始化
LcdInit(); // LCD显示初始化
while(1)
{
HCSR04_trigSendOnePulse();
dist_value = DistCount();
sprintf((char*)lcdShowBuff,"distanc : %f ",dist_value);
LcdShowStr(0,0,lcdShowBuff);
delayms(100);
}
}
调试效果
1、显示当前的测试距离和示波器的波形