脉冲时间宽度c语言,基于AT89C52脉冲宽度测量仪的设计与实现

赵翠玉

468609ddc4560956abc76818958c329f.png

25c6f3e323206d31db7958b471a0bc9a.png

摘要:本文基于AT89C52的脉冲宽度测量仪的设计。该仪器测量结果采用了软件数字滤波,消除了测量中抖动问题,测量精度高、稳定性好,具有一定的实用性。

关键词:AT89C52;测量仪;脉冲宽度

中图分类号:TM935.4 文献标识码:A 文章编号:1007-9416(2019)02-0129-01

0 引言

脉冲宽度的测量,实质是时间的测量,以往测量仪采用的是门电路来进行脉冲宽度测量,而 AT89C52单片机系统资源丰富:内置256KB的RAM模块、32个外部双向可编程I/O口线、3个16位定时器/计数器、0-24MHz时钟频率、2个外中断口[1]。该单片机不仅提供丰富的硬件资源,也提供良好的上位机控制软件,只要通过软件的功能操作就能实现:源代码的调试编译,查找与修改错误之处,在线代码下载等功能。基于以上优点,本文设计了采用AT89C52单片机实现脉冲宽度测量仪。

1 测量机理

基于AT89C52的脉冲宽度测量仪以AT89C52为系统控制核心,通过AT89C52内部的定时器对脉冲宽度进行测量。设定AT89C52工作于定时器方式,计数的输入为内部时钟信号,频率为固定的12MHz。只要令GATE=1,TR0=1,TR1=1,将输入脉冲接到INT1口,即可测量输入脉冲宽度,测量机理如图1所示。

2 系统硬件设计

该测量仪主要由AT89C52单片机最小系统、555定时电路、LED显示驱动电路、LED显示电路和电源电路等组成[2]。

测量时通过单片机外中断INT1和定时器T1配合来完成外部待测脉冲高电平持续时间的测量。首先将U1(AT89C52)的T1设为定时器方式,且门控GATE=1;然后将U2(NE555)的3脚输出的方波信号送至U1的P3.3脚(INT1口),当P3.3脚的信号出现下降沿时,进入INT1中断服务程序并判断脉冲位置,如果是第一个方波脉冲,则打开计数器T1的开关(将TR1设为1),否则关闭T1的开关(将TR1设为0),等到第二个方波脉冲上升沿抵达U1的P3.3脚时,TH1、TL1自动开始计数,当第二个方波脉冲下降沿到来时计数器自动关闭停止计数,此时为待测信号高电平期间,且再次进入外部中断INT1的中斷服务程序中,读取TH1、TL1的计数值,并计算出所测量的结果,该结果就是待测方波脉冲的宽度。随后,清零TH1和TL1,以便下一个脉宽的测量。同时,测得的信号宽度数值从U1的P1.0~P1.7口分别输出a~g及dp八位段选字符编码信号至数码管的相应段选线,从U1的P3.4~P3.7口输出四只数码管的位选信号,分别经Q5~Q8处理送至四只数码管相应的位选线,控制相应数码管的点亮,实现被测结果的实时显示。系统工作电压由电源电路把220交流电经变压器降压、D1~D4整流、C9~C10滤波、U3(7805)稳压得到+5V稳定电压来提供。

可以得出测量脉冲宽度分两个阶段:一个是准备阶段,完成状态的设置;另一个是测量阶段,从脉冲上升沿开始测量计数,到脉冲下降沿结束计数,以两个脉冲为一个测量周期。

3 系统软件设计

该系统软件使用C语言进行了编写,采用了模块化的设计思想[3],将设计划分为T0溢出中断、T1溢出中断和INT1溢出中断等相应的程序模块,分别进行设计、调试,增强了程序的条理性。AT89C52的脉冲宽度测量仪主程序设计流程如图2所示。

4 数据及结果的分析

通过实验观察,对T0、T2两种方式都可以达到计数脉宽的长度的要求,实验数据均可以达到所要求的:6位 LED显示计数值,时间精确到0.1秒。

实验中也遇到一些问题,如数码管显示不出数值(P口位置插错),小数点显示错位(没有在程序中编对位置),显示只显示第一次多出数值(调用程序返回时出错)等问题。

5 结语

本文的创新在于遵循硬件电路可靠、操作简便,充分借助AT89C52单片机系统的丰富资源,通过硬件的完整设计和软件强大的编程等过程,实现了脉冲宽度的测量功能,具有实际的应用价值。

参考文献

[1] 罗印升.单片微机原理与应用[M].北京:机械工业出版社,2012.

[2] 路而红.专用集成电路设计与电子设计自动化[M].北京:清华大学出版社,2004.

[3] 张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:清华大学出版社,2003.

Design and Implementation of Pulse Width Measuring Instrument Based on AT89C52

ZHAO Cui-yu

(Jiangsu Urban and Rural Construction College,Changzhou Jiangsu  213000)

Abstract:The design of pulse width measuring instrument based on AT89C52 is presented in this paper. The measurement results of the instrument are filtered by software digital filter, which eliminates the problem of jitter in the measurement. The measurement accuracy is high and the stability is good. It has certain practicability.

Key words:AT89C52; measuring instrument; pulse width

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转载] mysql 索引中的USING BTREE 的意义

索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。 根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 大多数…

【BZOJ1857】【SCOI2010】传送带 [三分]

传送带 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss]Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平…

google android广告异步加载,谷歌广告异步代码和同步代码的解决方法

通常大部分人初次接触谷歌google adsense广告联盟都会有疑问,在新建单元界面我们可以看到获取代码类型选项。下面是学习啦小编为大家整理的关于谷歌广告异步代码和同步代码的解决方法,一起来看看吧!谷歌广告异步代码和同步代码的解决方法选择同步还是异步…

使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用

使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用 原文:使用Docker 安装Elasticsearch、Elasticsearch-head、IK分词器 和使用Elasticsearch的安装 一、elasticsearch的安装 1.镜像拉取 docker pull elasticsearch:tag2.启动 docker run -it -e "disc…

Spring 的持久化实例(JDBC, JdbcTemplate、HibernateDaoSupport、JdbcDaoSupport、SqlSessionDaoSupport等)...

2019独角兽企业重金招聘Python工程师标准>>> 一、表(这里用mysql,数据库名为yiibai) CREATE TABLE customer (CUST_ID int(10) UNSIGNED NOT NULL,NAME varchar(100) NOT NULL,AGE int(10) UNSIGNED NOT NULL ) ENGINEInnoDB DEFA…

麦克劳林展开式_数学家麦克劳林与牛顿的故事

数学家麦克劳林麦克劳林(Colin Maclaurin1698年2月-1746年6月), 苏格兰数学家,麦克劳林是18世纪英国最具有影响的数学家之一。01麦克劳林是一位牧师的儿子,半岁丧父,9岁丧母。由其叔父抚养成人。叔父也是一位牧师。麦克劳林是一个“神童”&am…

微信小程序把玩(三十三)Record API

微信小程序把玩(三十三)Record API 原文:微信小程序把玩(三十三)Record API其实这个API也挺奇葩的,录音结束后success不走,complete不走,fail也不走, 不知道是不是因为电脑测试的原因…

如何获取元素在父级div里的位置_关于元素的浮动你了解多少

首先,在介绍什么是浮动之前我们先介绍一下html中元素的普通流布局方式。在普通流中,元素是按照它在 HTML 中的出现的先后顺序自上而下依次排列布局的,在排列过程中所有的行内元素水平排列,直到当行被占满然后换行,块级…

Java电商项目-5.内容管理cms系统

目录 实现加载内容分类树功能实现内容分类动态添加删除内容分类节点实现内容分类节点的分页显示实现广告内容的添加实现广告内容删除实现广告内容编辑到Github获取源码请点击此处实现加载内容分类树功能 注: 往后将不在说编写远程服务方法和编写web模块等重复语句, 直接用"…

【JS新手教程】LODOP打印复选框选中的任务或页数

之前的博文:【JS新手教程】LODOP打印复选框选中的内容关于任务:Lodop打印语句最基本结构介绍(什么是一个任务)关于本文用到的JS的eval方法:JS-JAVASCRIPT的eval()方法该文用的是不同checkbox,对应不同的val…

查询范围_企二哥:查询企业经营范围的三种方法

一、查询企业经营范围的三种方法1. 进经营地的工商局网站,有个“全国企业信用信息公示系统”进去后输入公司名称搜索就出来了。2. 有个软件叫做天眼查,打开天眼查输入要查询的公司名称,就可以搜出来了。不光是经营范围,还有许多和企业相关的资…

html显示hdf5文件,python读取hdf5文件

python怎样读取hdf5文件python 中h5py读文件,提示错误File "h5py\_objects完整代码和完整错误信息的图片。Windows环境下给Python安装h5py失败,HDF5已经安装使用pip install h5py命令安装已经安装了HDF5-1.10.0-win64.msi3第一张图上说的是,“不能打开头文件hd…

20145206邹京儒《网络对抗》逆向及Bof基础实践

20145206邹京儒《网络对抗》逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件。 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。 该程序同时包含另一个代码片段&#xff0c…

Haproxy+Keepalived实现负载均衡

HaproxyKeepalived实现负载均衡HAProxy介绍反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入新的1.3引入了frontend,backend;f…

C#使用CLR/C++的DLL间接调用Native C++的DLL

C#使用CLR/C的DLL间接调用Native C的DLL 开发环境:win 7 VS2010 简介:C#的exe使用CLR/C间接调用Native C的DLL. 第一步:创建一个C#的Console Application工程-->命名“ConsoleApplication1”。 第二步:创建一个CLR/C的工程&am…

列表输出循环左移_python 列表推导式(经典代码)(21)

文章首发微信公众号,微信搜索:猿说python截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高。一.…

Robot Framework自动化测试(一)--- 安装

所需环境: 1、python 2、robotframework  https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3、wxPython ——>是python的一个GUI库,下面要安装的RIDE是基于这个库开发的,所以要安装 地址:https://wxpython.org…

linux_svn命令操作

转至元数据起始 linux下svn命令大全 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain简写:svn co 2、往版本库中添加新的文件 svn add file例如&#xff1a…

html怎么让五张照片并排显示,最考验右脑5张照片,30s内能发现问题都是牛人,PS做不出来...

我们的大脑认定这种空间不可能存在,然而却要忍受眼睛亲眼所见其存在的苦恼。“眼见为实”已经成为错误的判断标准,于是你会感到很过瘾,颠覆的快感。事实上,通过色彩,不仅可以考量人们的视力,更能判断大脑水…

Cloud in Action: Install OpenStack Ocata from scratch

Cloud in Action: Install OpenStack Ocata from scratch薛国锋 xueguofeng2011gmail.comOpenStack can control and manage large pools of compute, storage, and networking resources throughout a datacenter, througha dashboard or via the OpenStack API, and work…