这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【let'sdo|2026年第2期】简易超声波测距仪实践-过程贴

共2条 1/1 1 跳转至

【let'sdo|2026年第2期】简易超声波测距仪实践-过程贴

专家
2026-07-30 13:58:23     打赏

简介

本过程贴记录测距仪实现过程中调试LCD1601显示数据以及驱动HC-SRR04的实现过程。

一、显示部分

 image.png

由于LCD1601使用的是并口,并且是工作于5V电源的,而FRDM-MCXA153开发板的GPIO、外设默认是3.3V的逻辑电平,因此并口模式下要考虑并口的接口的电平匹配问题。所以这里选择PCF8574T模块,将并口通讯转为I2C通讯,减少了接口引脚,测试上也更方便。

image.png

程序上,参照Arduino的处理方式,以及LCD1601的文档,在程序中加入lcd601.h文件,实现以下几个关键函数:

// 初始化

void LCD_Init(void);

// 设置光标位置

void LCD_SetCursor(uint8_t col, uint8_t row);

// 显示字符串

void LCD_Print(char *str);

// 清除屏幕

void LCD_Clear(void);

并在主程序中调用、测试。

image.png

二、传感器部分

 image.png

本次活动使用的是HC-SR04,工作电源同样是5V。这种传感器的特点是,提供触发信号后,等待返回信号的电平变化,根据脉冲的高电平的持续时间计算距离。而在这个信号是微秒级的,因此使用FRDM-MCXA153驱动时,考虑使用CTimer0外设捕捉回波信号的电平变化。

 在CTimer0的中断处理中,要注意记录采集检测到传感器的回波信号ECHO的上升沿计数和下降沿计数。这两个计数值的差,乘以CTimer0的计数脉冲宽得到时间差,用这个差乘以声波在空气中的速度,就得到的距离。

CTimer0的中断处理流程

 image.png

设计程序一开始的时候,打算使用CTimer的两个通道干活;一个检测上升沿,一个检测下降沿。但搞了半天没成功,就改用一个通道分时检测上升沿和下降沿。因为CTimer的工作脉冲时间足够短,远远小于超声波的回波脉冲宽度,所以问题不大。

测试过程中,为了防止电平匹配问题,一开始使用一个GPIO口(P3.0)模拟输出ECHO信号,因此要将P3.0和P1.8短接。P1.8是CTimer0的输入检测通道。这一步通过后,换做传感器。接线后发现,电平匹配的问题没出现,可以直接使用,程序都不用改。完美!






关键词: FRDM-MCXA153     超声波测距仪    

专家
2026-07-30 20:43:05     打赏
2楼

不用PCF8574T转接,你也可以使用其他I2C转并口的芯片代替。如果不使用转接,意味着你要准备很多GPIO口匹配LCD1601的并口及控制信号。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]