基于单片机的数字频率计的实现论文分享

处理器/DSP

892人已加入

描述

  摘要:设计一种以单片机AT89C51为的数字频率计,介绍了单片机、数字译码和显示单元的组成及工作原理。测量时,将被测输入信号送给单片机,通过程序控制计数,结果送译码器74- LS145与移位寄存器74LS164,驱动LED数码管显示频率值。通过测量结果对比,分析了测量误差的来源,提出了减小误差应采取的措施。频率计具有电路结构简单、成本低、测量方便、较高等特点,适合测量低频信号。

  1 测频设计原理

  频率计测频原理方框图如图1所示。被测输入信号通过脉冲形成电路进行放大与整形(可由放大器与门电路组成),然后送到单片机入口,单片机计数脉冲的输入个数。计数结果经LED数码管显示,从而得到被测信号频率。

  

放大器

  2 元器件选择与使用

  2.1 单片机

  选择单片机AT89C51是因为有编程灵活、易调试的特点,而且AT89C51的引脚较多,利于电路的展。它集成了CPU,RAM,ROM,定时器/计数器和多功能I/0口等一台计算机所需的基本功能部件,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含两个外中断口,两个16位可编程定时计数器,两个全双工串行通信口。其片内集成了4 KB的FLASHPEROM用来存放应用程序,这个FLASH程序存储器除允许一般的编程器离线编程外,还允许在应用系统中实现在线编程,并且还提供了对程序进行三级加密保护的功能。AT89C51的另一个特点是工作速度更高,晶振频率可高达24 MHz,一个机器周期仅为500 ms,比MCS-51系列单片机快了一倍。

  其具体使用方法如下:

  P1.0口与寄存器74LS164的A,B端口连接,串行输出待显示的数据。

  P1.1口接移位寄存器74LS164的CLK(第8引脚),输出时钟信号。

  P1.5,P1.6,P1.7口分别与译码器74LS145的A,B,C端口连接,输出位控制信号。

  P3.5口(即T1)输入脉冲信号。

  XTAL1与XTAL2管脚接两个30 pF电容和12 MHz晶振构成时钟电路。

  RST管脚接1 kΩ,10 kΩ电阻,20 μF电容及复位开关构成开关复位电路。

  2.2 显示译码单元

  显示部分采用译码器74LS145与移位寄存器74LS164,主要是考虑了性价比的原因。比如,此处可以采用HARRIS公司推出的ICM7218B共阴极数码管驱动芯片,它集BCD译码器、多路扫描器、段驱动和位驱动于一体。用此驱动可使电路相对简单,显示部分的软件设计也比较简单,但由于其价位相对较高,故采用译码器74LS145与移位寄存器74LS164。

  2.3 数字显示单元

  LED显示器采用动态显示方式。显示时将所有位的段选线相应的并联在一起,由一个8位I/O口控制,形成段选线的多路复用。译码器74LS145是位选部分,移位寄存器74LS164是段选部分。由于各位的段选线并联,段选码的输出对各位来说都是相同的。同一时刻,如果各位选线都处于选通状态的话,六位的LED将显示相同的字符。要各位LDE能够显示出与本位相应的显示字符,就须采用扫描显示方式。即在同一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字型码,这样同一时刻,六位LED中只有选通的那一位显示出字符,而其他五位则是熄灭的。而在下一刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段选线上输出相应位将要显示字符的字符码。

  这样循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于人眼有视觉残留现象,只要每位显示间隔足够短,则可造成多位同时亮的效果。

  3 硬件设计

  电路原理图如图2所示。以单片机AT89C51为,由译码器74LS145与移位寄存器74LS164实现串行输出显示,其中74LS164输出段选信号,74LS145输出位选信号。

  

放大器

  具体连接方法是将P1.0口与寄存器74LS164的A,B端口连接,P1.1口与移位寄存器74LS164的CLK连接,P1.5,P1.6,P1.7口分别与译码器74LS145的A,B,C端口连接,在P3.5口(即T1)输入脉冲信号。

  电路实现的关键是设法取得准确的一秒定时,并让计数器只计数一秒,这样计数结果则为频率值。实现的方法是利用单片机内的16位定时/计数器,用定时器/计数器0作为定时器,实现一秒定时;用定时器/计数器1作为计数器,对输入的脉冲进行计数。当按动开关时,开始定时及计数,时间到停止计数,计数值通过LED显示,得到频率值。再次按动开关又进行定时计数。

  4 软件设计

  4.1 实现一秒定时

  采用12 MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时/计数器TO作定时器,工作于方式1产生50 ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。

  4.2 计数部分

  将定时器/计数器的方式寄存器TMOD,用软件赋初值51H,即01010001B。这时定时器/计数器1采用工作方式1,方式选择位C/T设为1,即设T1为16位计数器。定时器/计数器O采用工作方式1,C/T设为0,即设TO为16位定时器。

  计算计数初值:设计数初值为X,本设计采用12 MHz的晶振。机器周期=12×(1/晶振频率)=12×(1/12×10。)一1×10一。,(2M—X)×1×10—0—50×10_。,X一15 536。

  所以计数初值为15 536,用十六进制表示为3CBOH。

  当定时器/计数器T1设定为计数方式时,其计数脉冲是来源T1端口的外部事件。当T1端口上出现由“1”(高电平)到“0”(低电平)的负跳变脉冲时,计数器则加1计数。计算机是在每个机器周期的S5P2状态时采样T1端口,当前一个机器周期采样为1且后一个机器周期采样为0时,计数器加1计数。计算机需用两个机器周期来识别1次计数,因而计数速率为振荡频率的1/24。在采用12 MHz晶振的情况下,单片机计数速度为0.5 MHz即500 kHz。

  另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。由此可见,从T1口输入脉冲信号,T1可实现对脉冲个数的计数。

  4.3 程序流程图

  计时采用定时T0中断完成,其余状态循环调用显示子程序。主程序流程如图3所示。

  

放大器

  5 测量结果及误差分析

  5.1 测量结果

  给电路加+5 V电压,输入信号,按动开关,即可得到频率值。将所测频率值与示波器测量结果比较,如表1所示。

  5.2 误差来源分析

  (1)单片机计数速率的限制引起误差。从表l测量数据可以看出被测信号频率越高,测量误差越大,且所测信号频率不能超过480 kHz。这是因为采用的是12 MHz的晶振,单片机计数速度为500 kHz,所以当被测信号越接近500 kHz时,测量结果与实际频率的误差就越大。而当被测信号大于500 kHz时,频率计将测不出信号频率。

  (2)原理上存在±1误差。由于该设计是在计数门间一秒内的频率信号脉冲数,所以定时开始时的个脉冲和定时时间到时的一个脉冲信号是否被记录,存在随机性。这种误差对测量频率低的信号影响较大。其误差原理示意图如图4所示。

  

放大器

  (3)晶振的准确度会影响一秒定时的准确度,从而引起测量结果误差。

  5.3 减小误差措施

  (1)选用频率较高和稳定性好的晶振。如选24 kHz的晶振可使测量范围扩大,稳定性好的晶振可以减小误差。

  (2)测量频率低的信号时,可适当调整程序,延长门间,减少原理上±1的相对误差。

  (3)测量频率较高的信号时,可先对信号进行分频,再进行测量。

  6 结 语

  基于单片机设计的数字频率计具有原理简单、易于调试和测量方便等优点,主要用来测量低频信号的频率。由于其测量范围会受单片机计数速率的限制,其测量量程较小,所以可以从原理上进行改进以提高其测频范围,比如通过增加分频电路,就可实现对高频信号的测量。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分