《基于AT89C51单片机的简易频率计的设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C51单片机的简易频率计的设计.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于AT89C51单片机的简易频率计的设计Algorithms of Signal Classification Based on Spectrum Analysis彭岚峰胡佳佳Peng Lanfeng Hu Jiajia(南昌大学科学技术学院,江西南昌330029)(College of Science and Technology Nanchang University, Jiangxi Nanchang,330029) 摘要:为了解决市场上各种多功能、高精度数字频率计高价格的问题,本文通过综合分析实际工作的要求,选择市场上低价格的常用元件,由单片机产生闸门时间与时钟等基准信号以减少外围电
2、路,从而提出了一种基于单片机(AT89C51)为主控制核心、LCD 1602为显示界面的频率计设计方案。本方案可满足简易频率计体积小、成本低、精度高、可测频带宽的市场需求。 关键词:单片机;频率计;液显 中图分类号:TM93文献标识码:A文章编号:1671-4792(2012) 09-0121-03 Abstract: In order to meet the great necessity of multi-function, high-precision digital frequency meter with a lower price, we choose the common che
3、ap components, and use microcontroller to produce the basic clock signal to minimize the peripheral circuit. A design of frequency meter based on microcontroller (AT89C51) and LCD1602 is proposed, which has the properties of small size, low cost, high precision and wide frequency bandwidth. Keywords
4、: AT89C51:Frequency Meter; Liquid Crystal Displ0引言实现复杂度。 频率计又称为电子计数器,是一种常用电子测量仪器。它的基本功能是测量信号的频率和周期,广泛应用于教学、科研、高精度仪器测量、工业控制等领域。目前,市场上的频率计基本上都是由专用计数芯片与数字逻辑电路组成。由于这些芯片的工作频率低,从而限制了产品工作频率的提高,远不能满足在一些特殊的场合需要。运用51系列单片机设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高。本次设计给出了一种基于单片机(AT89C51)为主控
5、制芯片的频率计设计方案,不但切实可行,而且体积小、保密性强、设计简单、精度高、可测频带宽,大大降低了设计成本和实现复杂度。1总体设计方案频率计的结构主要包括时钟信号发生电路、阀门控制、单片机控制电路和LCD显示电路。频率计的主要核心部件是采用AT89C51来产生定时和记录脉冲变化次数,运用AT89C51来构成计数器,突破了大部分运用数字电路模板来构成计数器。本设计主要采用AT89S52芯片和LCD 1602来实现,软件编程主要采用C51语言来编程。图一给出了设计框图。图一 频率计构造图控制核心 以单片机为核心,待测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把待测的正弦波或者三角
6、波整形为方波。利用单片机的计数器/定时器的功能对待测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。显示部分 LCD 1602是具有记忆功能的液晶显示器,当频率值不发生变化时无需更新显示区域。此特点可节约单片机的运行时间,减少测量转换时间。波形整形电路 采用LM358比较电路来整形波形,40K电阻和100K的可调电阻对电压分压,因为LM358比较器的开环增益很大,所以输入电压大于分压电压的将变为电源电压5v,而小于电源电压的会变成0v。这样就可以把正弦波、三角波整形成方波。图二给出了整形电路图。图二 波形整形电路2软件设计 频率计的核心部分是程序
7、的编写,算法的好坏将直接影响频率计的精度。包括了以下的主要程序:主程序、LCD 1602显示程序、显示转换程序、频率计算程序。主程序主程序只做控制作用,调用了三个子程序定时器1中断初始化、LCD 1602初始化、在LCD上显示Welcome,调用结束后等待中断到来。void main(void)Initial_S1(); /定时器1中断初始化LCDSTART(); /LCD1602初始化Putlcddata();/在LCD上显示Welcomewhile(1);2.2 LCD 1602显示程序 void LCDSTARTQLCDDATA=0x01; /清屏光标复位DISP();LCDDATA=0
8、x38; /设置显示模式:8位子行Sx 7点阵DISP();LCDDATA=0x0c; /显示器开、光标开、光标允许闪烁DISP();LCDDATA=0x06; /文字不动,光标自动右移DISP();LCDDATA=0x84; /设置显示初始位置DISP();计数程序本设计中T0采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以到达460800Hz,但计数器最多只能计数65536次,显然需要对计数单元进行扩展。扩展的思路是除了计数器TO的THO和TLO用于计数外,再选用一个计数单元,每当计数器TO溢出回零时产生中断,中断程序执行计数扩展单元自增1。本设计需要测量频率最大为10
9、000Hz,可以不用扩展。void timerl interrupt 3TH1=THCLK;TL1=TLCLK;switch(n) case2: if (-switchtime=0) Frequencyvalue=(THO*256+TLO)/4)* 1000;NumToCharO; THO=O;TLO=0; break; case3: if (-switchtime=0) Frequencyvalue=(THO*256+TLO)/4)* 100;NumToChar(); TH0=0;TL0=0; break; easel:if (-switchtime=0) Frequencyvalue=(T
10、H0*256+TLO)/4)* 10+60;NumToChar(); TH0=0;TL0=0; break; 显示转换从计数器采集到的频率数据是整数,不能直接把这些数据送给LCD显示,因此需要把这些数据转换为标准有效的字符串。下面这段程序将整数转换成字符串。 void NumToChar() frequency 0=Fre quencyvalue/ 10000+48; frequency 1= (Frequencyvalue% 10000)/1000+48; frequency 2=(Frequencyvalue% 1000)/ 100+48; frequency 3=(Frequencyva
11、lue% 100)/10+48; frequency 4=Frequencyvalue% 10+48; frequency5=H; frequency 6=z; frequency 7=0; LCDDATA=Oxc4; /设置显示初始位置 DISPQ; PutlcddataQ; 3结束语 本设计采用了应用广泛的AT89C51单片机为控制芯片,为频率计的设计提出了一种新的方向。基于AT89C51单片机的简易频率计可满足简易频率计体积小、成本低、精度高、可测频带宽的市场需求。因此,本方案具有一定的应用价值。参考文献 1邱关源.电路M.北京:高等教育出版社,2006. 2谢自美.电工线路设计实验测试M.武汉:华中科技大学出版社,2006. 3王港元.电工电子学实践指导M.江西:江西科学技术出版社,2009. 4阎石.数字电子技术基础M.北京:高等教育出版社,2006. 5赵全利,肖兴达.单片机原理及应用教程(第二版)M.机械工业出版社,2007, 7. 6Xuefei Xie. A Novel High Frequency Current-Driven Synchronous Rectifier For Low Voltage High Current ApplicationsJ.APEC 2001:469-475.学习文档 仅供参考
限制150内