基于AT89C51单片机的简易频率计的设计_单片机频率计课程设计

2020-02-27 其他范文 下载本文

基于AT89C51单片机的简易频率计的设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机频率计课程设计”。

基于AT89C51单片机的简易频率计的设计 Algorithms of Signal Claification Based on

Spectrum Analysis

彭岚峰胡佳佳 Peng Lanfeng Hu Jiajia(南昌大学科学技术学院,江西南昌330029)(College of Science and Technology } Nanchang University, Jiangxi Nanchang,330029)摘要:为了解决市场上各种多功能、高精度数字频率计高价格的问题,本文通过综合分析实际工作的要求,选择市场上低价格的常用元件,由单片机产生闸门时间与时钟等基准信号以减少外围电路,从而提出了一种基于单片机(AT89C51)为主控制核心、LCD 1602为显示界面的频率计设计方案。本方案可满足简易频 率计体积小、成本低、精度高、可测频带宽的市场需求。关键词:单片机;频率计;液显

中图分类号:TM93文献标识码:A文章编号:1671-4792(2012)09-0121-03

Abstract: In order to meet the great neceity of multi-function, high-precision digital frequency meter with a lower price, we choose the common cheap components, and use microcontroller to produce the basic clock signalto minimize the peripheral circuit.A design of frequency meter based on microcontroller(AT89C51)andLCD1602 is proposed, which has the properties of small size, low cost, high precision and wide frequency bandwidth.Keywords: AT89C51:Frequency Meter;Liquid Crystal Displ 0引言实现复杂度。

频率计又称为电子计数器,是一种常用电子测量仪器。它的基本功能是测量信号的频率和周期,广泛应用于教学、科研、高精度仪器测量、工业控制等

领域。目前,市场上的频率计基本上都是由专用计数芯片与数字逻辑电路组成。由于这些芯片的工作频率低,从而限制了产品工作频率的提高,远不能满足在一些特殊的场合需要。运用51系列单片机设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高。本次设计给出了一种基于单片机(AT89C51)为主控制芯片的频率计设计方案,不但切实可行,而且体积小、保密性强、设计简单、精度高、可测频带宽,大大降低了设计成本和实现复杂度。

1总体设计方案

频率计的结构主要包括时钟信号发生电路、阀门控制、单片机控制电路和LCD显示电路。频率计的主要核心部件是采用AT89C51来产生定时和记录脉冲变化次数,运用AT89C51来构成计数器,突破了大部分运用数字电路模板来构成计数器。本设计主要采用AT89S52芯片和LCD 1602来实现,软件编程主要采用C51语言来编程。图一给出了设计框图。

图一频率计构造图

1.1控制核心

以单片机为核心,待测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把待测的正弦波或者三角波整形为方波。利用单片机的计数器/定时器的功能对待测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。

1.2显示部分

LCD 1602是具有记忆功能的液晶显示器,当频率值不发生变化时无需更新显示区域。此特点可节约单片机的运行时间,减少测量转换时间。

1.3波形整形电路

采用LM358比较电路来整形波形,40K电阻和100K的可调电阻对电压分压,因为LM358比较器的开环增益很大,所以输入电压大于分压电压的将变为电源电压5v,而小于电源电压的会变成0v。这样就可以把正弦波、三角波整形成方波。图二给出了整形电路图。

图二波形整形电路

2软件设计

频率计的核心部分是程序的编写,算法的好坏将直接影响频率计的精度。包括了以下的主要程序:主程序、LCD 1602显示程序、显示转换程序、频率计算程序。

2.1主程序

主程序只做控制作用,调用了三个子程序定时器1中断初始化、LCD 1602初始化、在LCD上显示Welcome,调用结束后等待中断到来。void main(void)Initial_S1();

//定时器1中断初始化 LCDSTART();

//LCD1602初始化 Putlcddata();//在LCD上显示Welcome while(1);} 2.2 LCD 1602显示程序

void LCDSTARTQ { LCDDATA=0x01;

//清屏光标复位 DISP();LCDDATA=0x38;

//设置显示模式:8位子行Sx 7点阵 DISP();LCDDATA=0x0c;

//显示器开、光标开、光标允许闪烁 DISP();LCDDATA=0x06;

//文字不动,光标自动右移 DISP();LCDDATA=0x84;

//设置显示初始位置 DISP();} 2.3计数程序

本设计中T0采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz,但计数器最多只能计数65536次,显然需要对计数单元进行扩展。扩展的思路是除了计数器TO的THO和TLO用于计数外,再选用一个计数单元,每当计数器TO溢出回零时产生中断,中断程序执行计数扩展单元自增1。本设计需要测量频率最大为10000Hz,可以不用扩展。void timerl} interrupt 3 { TH1=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=(TH0*256+TLO)/4)* 10+60;NumToChar();

TH0=0;TL0=0;} break;}

}

} 2.4显示转换

从计数器采集到的频率数据是整数,不能直接把这些数据送给LCD显示,因此需要把这些数据转换为标准有效的字符串。下面这段程序将整数转换成字符串。

void NumToChar()

{

frequency [0]=Frequencyvalue/ 10000+48;

frequency

[1]=

(Frequencyvalue% 10000)/1000+48;

frequency [2]=(Frequencyvalue% 1000)/ 100+48;

frequency [3]=(Frequencyvalue% 100)/10+48;

frequency [4]=Frequencyvalue% 10+48;

frequency[5]='H';

frequency [6]='z';

frequency [7]='';

LCDDATA=Oxc4;

//设置显示初始位置

DISPQ;PutlcddataQ;

} 3结束语

本设计采用了应用广泛的AT89C51单片机为控制芯片,为频率计的设计提出了一种新的方向。基于AT89C51单片机的简易频率计可满足简易频率计体积小、成本低、精度高、可测频带宽的市场需求。因此,本方案具有一定的应用价值。参考文献

[1]邱关源.电路}M].北京:高等教育出版社,2006.[2]谢自美.电工线路设计·实验·测试[M].武汉:华中科技大学出版社,2006.[3]王港元.电工电子学实践指导}M].江西:江西科学技术出版社,2009.[4]阎石.数字电子技术基础[M].北京:高等教育出版社,2006.[5]赵全利,肖兴达.单片机原理及应用教程(第二版)[M].机械工业出版社,2007, 7.[6]XuefeiXie.A Novel High Frequency Current-Driven Synchronous Rectifier For Low VoltageHigh Current Applications[J].APEC} 2001:469-475.

《基于AT89C51单片机的简易频率计的设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
基于AT89C51单片机的简易频率计的设计
点击下载文档
相关专题 单片机频率计课程设计 设计 频率计 单片机 单片机频率计课程设计 设计 频率计 单片机
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文