如何利用MCS-51单片机对周期波频率进行测量

发布者:疯狂小马最新更新时间:2023-09-25 来源: elecfans关键字:MCS-51  单片机 手机看文章 扫描二维码
随时随地手机看文章

对于周期波频率的测量方法很多,但大多是通过测量间接计算频率。本文介绍了用目前应用比较广泛的MCS-51系列单片机对周期波频率进行测量,并通过LED以数字形式直观地示出频率,实现测量的智能化,省去间接对频率计算的麻烦与错误。文章对其测量原理,设计和实现作了说明,介绍了主要程序,并进行了误差分析。


目前单片机广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化不可缺少的重要工具。而本文适应这一发展趋势,把MCS-51系列单片机应用于对周期波频率的测量,并通过LED显示器自动显示出来,这对于频率的测量带来了极大的方便。


设计思想

利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号变换成同频率的矩形脉冲。通过MCS-51系列单片机内部的两个十六位定时/计数器测量某段时间内的外加脉冲数,经过处理并通过LED直接显示出所加信号的频率。单片机内部的TO用来定时,Tl用来计数(下降沿触发)。当来一个计数脉冲则计数一次。在TO开始定时的同时,T1开始计数;TO定时1s时间到时,T1停止计数。方框图如下图所示。

如何利用MCS-51单片机对周期波频率进行测量

硬件设计

如何利用MCS-51单片机对周期波频率进行测量

测量频率的硬件电路主要由计数脉冲形成电路和计数显示电路两大部分组成。计数脉冲形成电路用“555”定时器接成施密特触发器对外加的周期波进行变换,使之输出为矩形脉冲。电路如上图所示,计数显示电路如下图所示,主要包括:

如何利用MCS-51单片机对周期波频率进行测量

(1)由INTEL公司生产、晶振频率为12MHz的89S02单片机。通过软件编程使它内部的定时器TO定时,Tl对外部的所加脉冲计数。然后把测量结果值通过PO口输出。89S02自带8K闪存,可以有90~100个现场测量数据,供回放调检。

(2)4位七段共阴极的LED显示器。

(3)由于采用的是4位共阴极的动态扫描方式显示,段代码由89S02的PO口提供,位选线则由89S02P2口的P2.0~P2.3提供。由于89S02的输入,输出口不能提供足够的灌电流,因此用G1~G4提供给LED足够的显示电流。

软件设计

MCS-51单片机测量频率的程序主要包括:初始化程序,定时计数程序、LED显示程序。初始化程序略。定时计数主要程序:

如何利用MCS-51单片机对周期波频率进行测量

如何利用MCS-51单片机对周期波频率进行测量

测量范围

在上述程序下的最大测量频率为255Hz。适当调整程序后的最大测量频率可为89S02主频的1/12,但在保证测量精度的前提下最大测量频率宜安排在主频的1/100以下。


误差分析

上述程序的最大测量频率为255Hz,由于单片机在响应中断的时候有2~6个机器周期,按最大误差计算,6-2=4个机器周期,在1s钟中断响应一共发生20次,最不利的累计误差时间为4×20=80微秒,因此在此程序下的最大误差为80/1000000=0.08/1000,这样的精度完全能满足现场检测的需要。


关键字:MCS-51  单片机 引用地址:如何利用MCS-51单片机对周期波频率进行测量

上一篇:51单片机的四种工作模式怎么去设置
下一篇:基于51单片机的太阳能路灯控制系统设计方案

推荐阅读最新更新时间:2024-10-26 10:44

如何利用MCS-51单片机周期频率进行测量
对于周期波频率的测量方法很多,但大多是通过测量间接计算频率。本文介绍了用目前应用比较广泛的MCS-51系列单片机对周期波频率进行测量,并通过LED以数字形式直观地示出频率,实现测量的智能化,省去间接对频率计算的麻烦与错误。文章对其测量原理,设计和实现作了说明,介绍了主要程序,并进行了误差分析。 目前单片机广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化不可缺少的重要工具。而本文适应这一发展趋势,把MCS-51系列单片机应用于对周期波频率的测量,并通过LED显示器自动显示出来,这对于频率的测量带来了极大的方便。 设计思想 利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号变换成同频率
[单片机]
如何利用<font color='red'>MCS-51</font><font color='red'>单片机</font>对<font color='red'>周期</font><font color='red'>波</font><font color='red'>频率</font>进行测量
基于MCS-51系列单片机测量频率的设计与实现
对于周期波频率的测量方法很多,但大多是通过测量间接计算频率。本文介绍了用目前应用比较广泛的MCS-51系列单片机对周期波频率进行测量,并通过LED以数字形式直观地示出频率,实现测量的智能化,省去间接对频率计算的麻烦与错误。文章对其测量原理,设计和实现作了说明,介绍了主要程序,并进行了误差分析。 目前单片机广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化不可缺少的重要工具。而本文适应这一发展趋势,把MCS-51系列单片机应用于对周期波频率的测量,并通过LED显示器自动显示出来,这对于频率的测量带来了极大的方便。 设计思想 利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号
[单片机]
基于<font color='red'>MCS-51</font>系列<font color='red'>单片机</font>测量<font color='red'>频率</font>的设计与实现
单片机pwm频率周期可调
//------------------------------------------------------------------------------------ //程序功能简介:本程序产生15HZ~~~50KHZ的方波,并且实现频率和脉宽的独立调制,即可 //在改变频率的同时不改变脉宽,再改变脉宽的同时不改变频率;同时设置 //两个调节步长------在KEY键按下时,粗调,没有按下时,细调; //程序思路: 本程序用到两个定时器------定时器0和定时器1,其中定时器0工作在定时方式下, //决定方波的频率;定时器1,同样工作在定时方式下,用于设定脉宽; //---------------------------
[单片机]
在51单片机上输出一个周期是20ms,占空比为75%的矩形
ORG 0000H LJMP START ORG 0100H START: MOV TMOD,#01H ;T0工作在方式1 LOOP: MOV TL0,#68H ;定时15ms。 MOV TH0,#0C5H SETB TR0 ;定时器TO工作 WAIT: JNB TF0,WAIT ;等待定时结束 CLR TF0 ;记住清零标志位,我们没有使用中断服务子程序,所以也别指望它自动清零TF0 CLR TR0 ;关闭T0 CPL P1.0 ;输出低电平 MOV TL0,#78H ;定时5ms MOV TH0,#0ECH SETB TR0 WAIT1: JNB TF0,WA
[单片机]
在51<font color='red'>单片机</font>上输出一个<font color='red'>周期</font>是20ms,占空比为75%的矩形<font color='red'>波</font>
利用单片机的定时器中断,周期性输出矩形
;题目:80C51单片机的fosc = 6MHz,要求用T1定时器工作方式1,进行定时40ms。并由P1.7周期性的输出高电平40ms、低电平360ms的矩形波。 ;分析:可采用中断方式,定时40ms发生一次中断,利用R7记录中断次数,仅当R7=0的时候,输出高电平。 ;============================================ ORG 0000H JMP START ORG 001BH JMP INT_T1 START: MOV TMOD, #10H MOV TL1, #LOW(65536 - 20000); 0E0H ;40ms延时初始值 MOV TH1, #HIGH(
[单片机]
STM32单片机一个定时器输出不同频率PWM
  在使用STM32单片机输出PWM波形的时候,通常可以直接使用定时器提供的PWM模式。可以通过自动重装载寄存器(TIMx_ARR)来设置定时器的输出频率,然后通过捕获/ 比较寄存器 1(TIMx_CCRx)来设置占空比。一个定时器只有一个自动重装载寄存器(TIMx_ARR),但是有4个通道的捕获/ 比较寄存器 1(TIMx_CCR1、TIMx_CCR2、TIMx_CCR3、TIMx_CCR4)。所以使用一个定时器输出PWM波形的时候,频率是统一调整的,4个通道的频率是相同的,但是占空比每个通道可以独立设置。比较寄存器TIMx_CCR1、TIMx_CCR2、TIMx_CCR3、TIMx_CCR4分别设置4个通道的占空比。   
[单片机]
STM32<font color='red'>单片机</font>一个定时器输出不同<font color='red'>频率</font>PWM<font color='red'>波</font>
利用STC15单片机产生一个占空比、频率可调的PWM
#include stc15f2k60s2.h #define uint unsigned int #define uchar unsigned char sbit P1_0=P1^0; void dutyANDf(float duty,float f) { int Xt1,Xt0; float t1,t0; uchar h1,l1,h0,l0; t1=duty/f; //高电平时长 t0=(1/f)-t1; //低电平时长 Xt1=65536-1000000*t1; //高电平的时长转换成的定时器16位数 Xt0
[单片机]
单片机产生频率和输出电压可调的矩形信号发生器
#include reg51.h typedef unsigned char uchar; sbit signal=P3^0; uchar counter; void main(void) { TR0=0; //禁止T0 TMOD=0x11; //T0和T1均选择工作方式1,16位定时器 TH0=-1000/256; //定时时间为50ms TL0=-1000%256; signal=0; //开始时输出为低电平 counter=0; //初始化T1的中断次数为0 EA=1; //使能
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved