14-超声波测量距离与定时器T1的编程

本文详细介绍了超声波测距的基本原理,通过定时器实现精确的距离测量,包括软件编程的框架搭建、定时器参数设置、中断服务函数和超声波服务函数的实现过程。重点讲解了如何利用定时器1控制测量周期,确保每次5.78us的间隔,并通过实例验证了测量的准确性。
摘要由CSDN通过智能技术生成

超声波测距

1. 测量原理

中断计数即检测距离

image-20210829171301054

image-20210829171316161

检测高电平用P3.3脚

P3.3也是外部输入中断INT1脚,但本次实验与外部输入中断无关,仅利用P3.3引脚启停定时器

8位定时器不分频的满值是:256 * 0.033 = 8.5333us > 5.78us

因此满足测量条件

image-20210829202104241

2. 软件编程

2.1 框架式编程结构搭建

新建,保存,添加

all.h—>xxx.h

xxx.c—>all.h

打标签

image-20210829155852961

2.2 初始化函数

2.2.1 初始化函数框架
  • 定时器1初始化函数

image-20210823210030070

  • 超声波初始化函数,声明

超声波初始化函数调用定时器初始化函数,主函数调用一次

image-20210823210045406

image-20210823210101087

2.2.2 定时器参数设置
  1. AUXR分频设置

image-20210823210143909

image-20210823210200144

image-20210823211054944

image-20210823210810447

  1. TMOD

image-20210823210852319

image-20210823211018292

使用定时器1

故先将TMOD高4位写0,再按要求写1

GATE置1,C/T置0,M1=1,M0=0

TMOD:1010 0000

image-20210823211343199

  1. TR

image-20210823211359871

image-20210823211610751

image-20210823211700431

  1. 装初值

image-20210823211716829

要求:5.78us定时

脉冲数:5.78us/0.0333us=173.417个脉冲

初值:256-173.417=83

16进制:0x53

定时值到,进入中断

image-20210823212034048

  1. 进入中断

image-20210823212047536

image-20210823212215541

image-20210823212259217

image-20210823212403152

EA在主函数已经置1

2.3 定时器1中断服务函数

image-20210823213429104

2.3.1 测试1:产生中断,P30翻转

P30翻转逻辑分析仪抓取,查看定时中断时间

image-20210823214651563

因无外部输入,故

image-20210823214312107

image-20210823214459395

image-20210823214331194

image-20210823214042506

结果接近5.78us

说明每5.78us进入1次中断

2.4 超声波服务函数

超声波目的在于对距离进行测量

定义定时器中断变量,产生中断+1,也即测量了1mm

image-20210823214850966

image-20210823214903297

那么何时计数停止增加呢

  1. 新建超声波服务函数,外部声明,同时新建数据分配函数,主函数调用

image-20210823215326376

  1. 定义外部管脚发送触发信号

image-20210823215517467

image-20210823215636418

image-20210823215753547

定义变量

变量=1将管脚拉高,并启动定时器开始测量,同样初始化定时器时TR1=0,测量1mm变量也要写0

变量=3将管脚拉低,测量脉冲发送结束,1~3保持高电平

image-20210823220634842

注意:初始电平=0

image-20210823220034015

  1. 新建测量结果输出变量

image-20210823221152186

数码管显示

image-20210823221215501

输出测量结果:

TMOD|=0XA0;重新赋值,等待外部高电平输入

计时时间=0

image-20210823221430477

image-20210823221720039

  1. 降低测量速度

image-20210823222039395

由逻辑仪抓取值

换算成xxxus/5.78us,结合数码管测量值可看出测量结果的准确性

  1. 测量结果出现溢出,限制测量范围

image-20210823223156028

总结:

超声波测距关键在于定时器的启动,启动由2个方面控制:INT1和TR1

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值