基于AT89C51单片机的超声波HC-SR04测距 LCD1604显示
硬件介绍
引脚四个,分别为VCC、TRIG、ECHO、GND
VCC 供 5V 电源, GND 为地线
TRIG 触发控制信号输入
ECHO 回响信号输出等 四个接口端
超声波时序图
以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将 发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号。 回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回 响信号时间间隔可以计算得到距离。
公式:uS/58=厘米或者 uS/148=英寸; 或是:距离= 高电平时间*声速(340M/S)/2;建议测量周期为 60ms 以上, 以防止发射信号对 回响信号的影响。
注:
1、此模块不宜带电连接,若要带电连接,则先让模块的 GND 端先连接,否则 会影响模块的正常工作。
2、测距时,被测物体的面积不少于 0.5 平方米且平面尽量要求平整,否则影响 测量的结果
程序代码
/******************************************************************************/
/* 主控芯片 : STC89C52 */
/* 文件名称 : UltraSonic */
/* 文件功能 : 超声波模块操作 */
/* 注 :需要用杜邦线把超声波模块的
VCC----VCC TRIG---P1.6 ECHO---P1.7 GND----GND 相连 */
/******************************************************************************/
/**********************************包含头文件**********************************/
#include <reg52.h>
#include "1602.h"
/************************************宏定义************************************/
#define VELOCITY_30C 3495 //30摄氏度时的声速,声速V= 331.5 + 0.6*温度;
#define VELOCITY_23C 3453 //23摄氏度时的声速,声速V= 331.5 + 0.6*温度;
/************************************位定义************************************/
sbit Echo = P1^6; //回声接收端口
sbit Trig = P1^7; //超声触发端口
sbit Beep = P2^3 ; // 蜂鸣器
/********************************定义变量和数组********************************/
long int distance=0; //距离变量
uchar table[]=" Welcome to ";
uchar table0[]=" 626's home ";
uchar table1[]="There's no echo.";
uchar table2[]=" UltraSonic ";
uchar table3[]="Distance:";
uchar count;
/***********************************函数声明***********************************/
extern void initLCD();
extern void write_date(uchar date);
extern void write_com(uchar com);
extern void delay(uint x);
/******************************************************************************/
/* 函数名称 : Delay_xMs */
/* 函数描述 : 延时函数,单位毫秒 */
/* 输入参数 : x */
/* 参数描述 : 延时时间 */
/* 返回值 : 无 */
/******************************************************************************/
void Delay_xMs(unsigned int x)
{
unsigned int i,j;
for(i = 0;i < x;i++ )
{
for(j = 0;j < 3;j++ )
{
;
}
}
}
/******************************************************************************/
/* 函数名称 : Alarm */
/* 函数描述 : 蜂鸣器发声函数 */
/* 输入参数 : t */
/* 参数描述