文章目录

  • 前言
  • 一、51超声波测距是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结

前言

最简单的51超声波测距程序,注释相当详细,测量出来的值直接显示在数码管上,距离超过20cm就显示三个A,否则显示正常的距离值。


一、51超声波测距是什么?

51单片机通过控制定时器输出一定规则的高低电平控制超声波传感器HC-SR04采集距离,最后解析距离数据显示在数码管上。

二、使用步骤

1.引入库

代码下载链接:https://www.cirmall.com/circuit/18444/
直接跳转到下载页面
代码如下(示例):

//hc-sr04 超声波测距模块程序
//晶振:11.0592
//接线:模块TRIG(脉冲引脚)接 P2.1 , ECH0(回波引脚,收到回波就高电平) 接P2.0
//数码管:共阳数码管P0接数据口,P2.6接数码管段选端,P2.7接数码管位选端
/***************************************************/
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit RX=P2^0;
sbit TX=P2^1;
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int time=0;
unsigned int timer=0;
unsigned char posit=0;
unsigned long SS=555;
bit flag =0;
unsigned char const discode[] ={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};//七段数码管编码
uchar b,s,g;
void delayms(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–) ;
}
/
/
void Display(uchar b,uchar s,uchar g) //扫描数码管
{ dula=1;
P0=discode[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(1);

 dula=1;P0=discode[s];dula=0;P0=0xff;    wela=1;P0=0xfd;wela=0;delayms(1);dula=1;P0=discode[g];dula=0; P0=0xff;//防止其他数码管随便亮起来 wela=1;P0=0xfb;wela=0;delayms(1);
}

/********************************************************/
void Conut(void)
{
time=TH0256+TL0;//低八位和高八位组成的计数值
TH0=0;
TL0=0;
SS=(time
1.7)/100; //算出来是 S=(1/11.05921000)(time/2)*344 CM
if((SS>=20)||flag==1) //超出测量范围显示“A”
{
flag=0;
b=10; //“A”
s=10; //“A”
g=10; //“A” 超过0.2米距离,就都输出A
}
else
{
b=SS/100;//百位
s=SS%100/10;//十位
g=SS%10;//个位

 }
}

//
void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
/
/
void zd3() interrupt 3 //T1 2MS定时中断用来扫描数码管和计2MS启动模块,TX=1,高电平时触发模块工作
{
TH1=0xf8;
TL1=0x30;//重新装入计数初值
// Display(b,s,g);//扫描数码管
timer++;
if(timer=400)
{
timer=0;
TX=1; //2MS 启动一次模块
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop(); //22个操作,每个操作耗时为一个时钟周期(1/11.095*1000)s,所以运行一次if语句耗时2ms。
TX=0;

 }

}
/*********************************************************/

void  main(  void  )

{
TMOD=0x11; //设T0为方式1,GATE=1,用作计数器,T1是定时器,
TH0=0;
TL0=0;
TH1=0xf8; //T1定时器2MS定时,扫描一次数码管
TL1=0x30;
ET0=1; //允许T0中断
ET1=1; //允许T1中断
TR1=1; //开启定时器
EA=1; //开启总中断
dula=0;
wela=0;
while(1)
{
while(!RX); //当RX为零时等待
TR0=1; //开启计数,控制计数器0
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数,控制计数器0
Conut(); //计算
Display(b,s,g);
}

}

2.读入数据

数据测试显示


总结

最简单的51超声波测距程序,注释相当详细,测量出来的值直接显示在数码管上,距离超过20cm就显示三个A,否则显示正常的距离值。

最简单的51超声波测距程序相关推荐

  1. STM32F1系列超声波测距程序

    STM32F1系列超声波测距程序 因为自己做毕设的缘故,用到超声波HCSR04模块,在网上查找了相关的代码,发现关于超声波测距大体上有两种写法.在自己调试改进后,想把这两种方法都贴出来,和大家一起讨论 ...

  2. STM32CubeIDE 利用LL库 SysTick简单实现hcsr04超声波测距

    一.超声波测距模块简介(网络摘取) HC-sr04是一款典型的超声波测距模块,升级版的程序和04的差别不大,只是测量范围和精度有所不同. 它是如何工作的? 超声波传感器使用声纳来确定到物体的距离.以下 ...

  3. STM32的超声波测距程序

    我所使用的测距模块是HC-SR04,C-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测 距精度可达高到3mm:模块包括超声波发射器.接收器与控制电路. HC-SR04基本工作 ...

  4. 超声波测距 c语言程序流程图,超声波测距程序(详细C语言数码管显示)

    #include<reg52.h> //头文件 #include<intrins.h>// _nop_() 函数延时1US用 #include <stdio.h> ...

  5. Arduino超声波测距程序

    const int TrigPin = 4; const int EchoPin = 5; float cm; void setup() { Serial.begin(9600); pinMode(T ...

  6. 51单片机配合超声波测距以及用1602液晶进行显示

    自己写的一个小程序,给51入门的朋友们用一下,实测还行,没什么问题,但几米以上就不怎么准,主要是模块比较廉价,当练手用.注释也都比较清楚. /*超声波测距程序,利用51单片机的外部中断,如果有时候发现 ...

  7. 51单片机项目设计:基于超声波的 车库停车系统、车位检测系统设计(8个超声波测距模块)keil+protues仿真

    基于51单片机的车库停车系统 代码仿真资料链接https://download.csdn.net/download/mbs520/12742296 一.设计要求: 毕业设计原题: 本设计主要用于室内停 ...

  8. 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...

  9. STM32蓝牙控制循迹避障小车源代码——3.舵机、超声波测距模块

    STM32蓝牙控制循迹避障小车源代码--3.舵机.超声波测距模块 注意-所需模块: US-015超声波模块 SG90舵机云台 接线:舵机超声波: A1–P2.7 B8–Trig B9–Echo 代码 ...

最新文章

  1. 聊一聊-JAVA 泛型中的通配符 T,E,K,V,?
  2. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 在 PathClassLoader 和 BootClassLoader 之间插入 DexClassLoader )
  3. [导入]C++ GUi 选择
  4. ad软件侵权律师函_Aspen Plus 9 软件安装教程
  5. Maven工作笔记-在内网环境下开发Spring Boot(使用IDEA)
  6. php 重定向 post,使用php curl getpost方法向页面文件发送重定向指令
  7. 电感式传感器工作原理与电感式传感器应用案例-博扬智能
  8. python16_day14【jQuery】
  9. 项目管理ITTO(一张图梳理49个过程)
  10. 千兆光纤 GBIC和SFP接口规格介绍
  11. 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名
  12. 用浏览器访问云服务器文件,浏览器访问云服务器文件
  13. Git分支管理规范和解析
  14. zip分卷压缩与合并解压
  15. Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
  16. 浙江省二级计算机办公软件应用查询,浙江省计算机二级办公软件高级应用
  17. java计算机毕业设计华北地区阔叶林木叶部病虫害图像管理系统源码+mysql数据库+系统+lw文档+部署
  18. 前端批量下载文件、图片、打包成压缩包,JZip和file-saver
  19. 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)
  20. excel打开第二个表格很慢

热门文章

  1. 内网安全-流量隧道(一)不出网CS上线正反向端口转发
  2. Sentinel-限流 冷启动
  3. zend studio php mvc,Zend Studio使用教程:使用Zend Studio和Zend Server进行根本原因分析 (一)...
  4. 最新openCV-Python安装教程(python:3.9||opencv-python:4.5.5)
  5. linux系统下的rz、sz详解
  6. 帝国推送插件-免费帝国CMS实时推送插件
  7. kafka安装及入门
  8. 如何才能快速成为一名Java架构师?
  9. 2022低压电工国家题库及模拟考试
  10. 直流-直流(DC-DC)变换电路_BUCKBOOST变换电路