基于51单片机与HC-SR04实现超声波测距,相对精度可以达到5mm,相对误差2cm左右,测量范围2-400cm!
下面为核心代码
/********************************
程序功能:超声波测量距离并使用LCD1602显示
*********************************/
#include "Timer.h"
#include "String.h"
#include "HC_SR04.h"
#include "LCD1602.h"
#define SYS_TIME 100000 //100ms一次
/* 系统初始化 */
static void SystemInit(void)
{
LCD1602_Init();//液晶初始化
Timer_Init(SYS_TIME);//初始化定时器输出系统时钟
LCD1602_ShowString("System Init");//提示系统初始化
}
/* 主函数入口 */
void main(void)
{
float Distance=0;//距离变量,范围0-5
while(1)
{
if(getSysClock() == SET)//等待系统时钟
{
setSysClock(RESET);//清除系统时钟
Distance = HC_GetDistance();//获得距离
LCD1602_ShowStringToAddress(Frist_line,"Distance:");//显示提示信息
if(Distance < 4.0)//4M以内为有效距离
LCD1602_ShowString(DoubleToString(Distance,1));//显示距离数据,保留一位小数
else
LCD1602_ShowString("----");
LCD1602_ShowString("CM");//显示单位
}
}
}
需要参考项目可以私聊我!