郭天祥51开发板——超声波测距+lcd1602

这篇博客介绍了如何使用单片机和HC-SR04超声波模块进行测距,并将结果显示在LCD1602显示屏上。通过脉冲回波法测量超声波往返时间,计算出距离。当测量值超出5~400cm范围时,LCD显示警告并伴有蜂鸣器报警。同时,测距数据还通过串口发送到电脑。

使用超声波模块实现测距功能,测量结果显示在LCD1602上、并通过串口发送给电脑,测量距离大于或小于5~400cm,LCD1602显示“Waring!”同时蜂鸣器报警、串口发送“Waring”。

超声波测距原理

超声波测距的方法有很多种,最常用的是脉冲回波法。原理框图如图,
在这里插入图片描述
超声波传感器发射超声波,在空气中传播至被测目标,经反射后由超声波传感器接收反射脉冲,测量出超声波脉冲从发射到接收的时间,经过计算 S=1/2vt 可以得到距离。h较小时,S≈d ,所以通过测量超声波往返时间,就可以计算出距离长短。

HC-SR04模块

工作原理:采用IO触发测距,给trig至少10us的高电平信号;
模块自动发送8个40khz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。
时序图如下图所示:
在这里插入图片描述
具体实现,控制口发一个10us以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当接收口变为低电平时就可以读定时器的值,此时就为此次测距的时间,从而算出距离。如此不断地周期测量,就可以达到移动测量的值。

代码
#include<reg52.h>	
#include<intrins.h>
sbit trig=P1^1;		                //控制端口定义
sbit echo=P1^0;		                //接收端口定义
sbit RS=P3^5;	                    //lcd1602数据/命令端
sbit EN=P3^4; 	                    //使能端
sbit U1=P2^6;                       //数码管段选
sbit U2=P2^7;                       //数码管位选
sbit bi=P2^3;                       //buzz

unsigned char str[]={
   
   "Distance:"};      //lcd显示字符串
unsigned char juli[]={
   
   "0000cm"};        //lcd距离显示字符串
unsigned char change[]={
   
   "\r\n"};        //串口打印换行符
unsigned char jg[]={
   
   "Waring"};          //串口打印
unsigned int time;	                    //时间
unsigned long s;	                    //距离
bit flag=0;                             //标志位(定时器)
bit flag1=0;                            //标志位(串口打印)

void delayms(unsigned int xms);         //延时
void buzz();                            //蜂鸣器
void wcmd(unsigned char cmd)            
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值