脉冲时间宽度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,一经查实,立即删除!

相关文章

leetcode1433. 检查一个字符串是否可以打破另一个字符串(贪心算法)

给你两个字符串 s1 和 s2 ,它们长度相等,请你检查是否存在一个 s1 的排列可以打破 s2 的一个排列,或者是否存在一个 s2 的排列可以打破 s1 的一个排列。 字符串 x 可以打破字符串 y (两者长度都为 n )需满足对于所有 …

cordova 人脸识别_html5与EmguCV前后端实现——人脸识别篇(一)

上个月因为出差的关系,断更了很久,为了补偿大家长久的等待,送上一个新的系列,之前几个系列也会抽空继续更新。大概半年多前吧,因为工作需要,我开始研究图像识别技术。OpenCV在这方面已经有了很多技术积累&a…

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

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

git-命令

git config --global user.email “邮箱” git config --global user.name ”用户名” git init           初始化 忽略指定文件 echo "temp/" >> .gitignore echo "private_key" >> .gitginore 状态 git status 添加 git add …

C语言 floor四舍五入,Math函數的四舍五入,Floor,Ceiling,Round的一些注意事項!...

1.Math.Round:四舍六入五取偶引用內容Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) //0Math.Round(0.4) //0Math.Round(0.5) //0Math.Round(0.6) //1Math.Round(0.7) //1Math.Round(0.8) //1Math.Round(0.9) //1說明:對於…

Command Magicks:如何使用控制台处理文件和字符串

by Luciano Strika通过卢西亚诺斯特里卡(Luciano Strika) Command Magicks:如何使用控制台处理文件和字符串 (Command Magicks: How to Manipulate Files and Strings with the Console) As developers, there are lots of repetitive things we do every day that…

dreamweaver后缀名_让 Dreamweaver 8 支持其它扩展名的方法

有的时候,我们为了网站的安全考虑,常常会修改网站的扩展名,如我看到有些网站的扩展名为 *.do,很明显这个扩展名是有意改掉的,可是改了这扩展名对于我们修改网页来说就麻烦了,比如用 Dreamweaver 8 来修改的…

sublime 3143 注册码

请大家支持购买正版,或者使用Atom、Vimsublime 3143版本的注册码:—– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 94D7F7D4 95BC8C1C 527DA828 560B…

【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广告联盟都会有疑问,在新建单元界面我们可以看到获取代码类型选项。下面是学习啦小编为大家整理的关于谷歌广告异步代码和同步代码的解决方法,一起来看看吧!谷歌广告异步代码和同步代码的解决方法选择同步还是异步…

openssl 加密解密 指令_Shell openssl命令加密解密字符串

Linux下的 openssl 命令解密我们以在线加密网站为例 http://tool.chacuo.net/cryptdes我们选择des cbc模式,密钥为abcdefgh, 偏移量为12345678,以base64输出结果 对hello进行加密,得到结果8Snw/EmQdY我们再用将在线网站改用shell命…

使用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…

开始使用gradle

前提配置gradle环境 每个gradle构建都是以一个脚本开始的。gradle构建默认的名称为build.gradle。当在shell中执行gradle命令时,gradle会去寻找为build.gradle文件,如果找不到就会显示帮助信息。 下面我们以经典的helloworld为例。 1、首先建立一个build…

freecodecamp_freeCodeCamp的新编码课程现已上线,其中包含1,400个编码课程和6个开发人员认证

freecodecampFor the past year, our community has been hard at work on a massive new programming curriculum. And now that curriculum is live and out of beta!在过去的一年中,我们的社区一直在努力编写大量的新编程课程。 现在,该课程已上线并且…

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

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

html隐藏层点击显示不出来,[js+css]点击隐藏层,点击另外层不能隐藏原层

1货币转换,下图显示了这个程序子只进行简单的 把元素放在下面的目录下,在创币转换应用程序这个例 所需的界面,包括一些UI组件实例(Button, ComboB 货币转换,下图显示了这个程序组件实例(Button, ComboB 货币转换,下图显…

Oracle 10.2.0.5 非归档current redolog损坏处理一例

操作系统: RHEL5.8 x64数据库 : Oracle 10.2.0.5.0故障情况:一台单机曙光PC服务器4块300G SAS盘,RAID5坏两块磁盘(服务器面板无故障提示,无人发现),造成RAID5磁盘阵列挂掉,操作系统当机,系统无…

基础命令

date --help date %T 15:04:58 whatis date date (1) - print or set the system date and timeman date 获取详细的命令解释cd ~/wntlab //新建文件夹 mkdir example //新建文件 touch b c //复制文本内容 cp b c//把 b的内容复制给 c cp b a/ //把 文件b复制…

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

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