《课程设计论文基于AT89S51单片机数字频率计的设计.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于AT89S51单片机数字频率计的设计.doc(17页珍藏版)》请在三一办公上搜索。
1、目录第1章 绪 论第2章 数字频率计数器测频的基本原理第3章 频率测量的技术指标3.1 频率准确度3.2 频率测量范围3.3 数字显示位数3.3 测量时间第4章 设计思路及方案4.1、设计方案的选择4.2、计数法第5章 元件清单关键元器件的相关参数第6章 程序设计及代码6.1 程序设计流程图6.1.1 总程序流程方框图6.1.2 子程序流程图6.2 c语言程序第7章 protues仿真图第八章 protel原理图PCB板图第九章 总结与分析一 绪 论 本次课题设计的主要任务是制作一个单片机数字频率计进行频率的自动测量并用数码管显示被测信号的频率,测频范围为1HZ500KHZ。我的设计的思路是这
2、样的,采用的是晶振为12MHZ的AT89S51单片机,首先利用该单片机的定时器/计数器T0作为定时器,使其工作在方式1,计算初值每50ms产生一次定时溢出中断,最终定时1s=50ms*20,与此同时,我再利用单片机的定时器/计数器T1作为计数器,工作在方式1,对被测信号采集数据,对1s定时所采集的数据就为该信号的频率,考虑到被测信号的多样性,有方波,正弦波,三角波等等,而本次我设计的只是针对被测信号方波,而且它的精度为1HZ,考虑到某些程序本身在运行时要用到一定的时间,故实际定时是大于1s,从而会产生一定的误差,在被测信号为高频方波时,这种误差会表现地特别明显,在设计过程中我尽量减少因程序本身
3、带来的误差,使的测量的结果尽可能的接近实际频率。在程序设计时,用kell完成成*.hex文件,利用proteurs 7.1搭建好硬件后进行仿真,调最后用protel绘制PCB板,做出实物,试程序,实现相应功能。 实际应用时,我们可以先将非方波的信号通过一些专用的器件进行波形整形使其变成同频率的方波,然后进行测试,从而进一步完善其功能。数字频率计在通信领域中应用的较广,频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。在无线通讯测试中,频率计既可以被用来对无线通讯基站
4、的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。二 数字频率计数器测频的基本原理数字频率计是用十进制来显示被测信号频率的一种测量装置。所谓“频率”,就是周期性信号在单位时间内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则频率可以表示为:因此,数字频率计的原理框图如下图所示:图1 数字频率计的原理框图(1)首先脉冲形成电路进行波形变换将被测信号变成频率等于fx的脉冲信号(2)时基信号发生器提供标准的时间脉冲信号,若其周期为1S,则门控电路的输出信号持续时间亦准确的等于1S。(3)闸门电路有标准秒信号控制,当秒信号到来时,闸门开通,被测脉冲信号通过
5、闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器记得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。(4)逻辑控制单元的作用有两个:其一,产生清”0”脉冲,是计数器每次从零开始计数;其二,产生锁存信号,使显示器上的数字稳定不变。(5)最后,将锁存器中的数据送入译码显示器即可实现频率测量。三 频率测量的技术指标衡量一台数字频率计的主要技术指标有:3.1 频率准确度 数字频率计测量频率时的测量误差称为频率准确度,常用相对误差fx/fx来表示。分析表明:式中,1/(Tfx)=N/N称为量化误差,是数字频率计所特有的误差。fc/fc=T/T 称为闸门时间的相对误差
6、,主要由基准信号发生器提供的标准频率的准确度所决定,fc/fc1/(Tfx).3.2 频率测量范围 数字频率计测量的最高频率成为频率测量范围,主要由脉冲形成电路的频率响应决定。3.3 数字显示位数 频率计的数字显示的位数决定了数字频率计的分辨率。一般情况下,位数越多分辨率越高,当然需要的计数译码器的位数也就越多。3.3 测量时间 数字频率计完成一次测量所需的总时间称为测量时间。若用t表示总测量时间,则 t=t1+t2+t3+t4式中,t1准备时间,t2计数时间,t3锁存时间,t4复位时间四 设计思路及方案4.1、常用设计方案信号的频率就是信号在单位时间内所产生的脉冲个数,其表达式为f=N/T,
7、其中f为被测信号的频率,N为技术其所累计的脉冲个数,T为产生N个脉冲所需的时间。技术其所记录的结果,就是被测信号的频率。如在1s内记录1000个脉冲,则被测信号的频率为1000HZ。测量频率的基本方法有两种:计数法和计时法,或称测频法和测周期法。4.2、计数法计数法是将被测信号通过一个定时闸门加到计数器进行计数的方法,如果闸门打开的时间为T,计数器得到的计数值为N1,则被测频率为f=N1/T。改变时间T,则可改变测量频率范围。如图4-1所示。计数值N1T被测信号标准闸门图4-1测频法测量原理 设在T期间,计数器的精确计数值应为N,根据计数器的计数特性可知,N1的绝对误差是N1=N+1,N1的相
8、对误差为N1=(N1-N)/N=1/N。由N1的相对误差可知,N的数值愈大,相对误差愈小,成反比关系。因此,在f以确定的条件下,为减少N的相对误差,可通过增大T的方法来降低测量误差。当T为某确定值时(通常取1s),则有f1=N1,而f=N,故有f1的相对误差:f1=(f1-f)/f=1/f 从上式可知f1的相对误差与f成反比关系,即信号频率越高,误差越小;而信号频率越低,则测量误差越大。因此测频法适合用于对高频信号的测量,频率越高,测量精度也越高。五 元件清单:1 共阴数码管 62 极性电容1000uf 23 普通电容 104ufx2 30pfx2 20pfx24 In4004二极管 45 稳
9、压块7805 16 12M晶振 17 9脚10k电阻排 18 按键 29 at89s51 110 74ls373 111 74LS138 112 电阻50欧姆x15 10kx3 六 protel原理图七 PCB板图 :八 PROTUES仿真图: 九 程序.1 程序设计流程图总程序流程方框图图6.1.1 总程序流程图 子程序流程图 程序:#include#include#include#define uchar unsigned char#define ulong unsigned long#define weixuan P2#define duanxuan P0uchar disdata5;s
10、bit f=P37;uchar t11=0x00,t12=0x00,t13=0x00,times=20;/* 7SEG-CC display code */char code tab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/* Timer 0 interrupt service subroutine */void timer0(void) interrupt 1 TR1=0;TR0=0;times-;if(times!=0) TH0=0x3c; TL0=0xb0; TR0=1; TR1=1;else TH0=0x3c; TL0=0x
11、b0; /* Counter 1 interrupt service subroutine */void timer1(void) interrupt 3 TR1=0;TR0=0; t11+;TR0=1;TR1=1; /* delay subroutine */void delay0(void) uchar i; for(i=0;i200;i+); /* main()*/void main() ulong htod=0; uchar i; TMOD=0x51; SP=0x70; IE=0x8a; TH0=0x3c; TL0=0xb0; TH1=0x00; TL1=0x00; while(1)
12、if(f=0)/判断P1.7是否为低电平,若是则开始定时和计数 while(!f); if(f=1) TR0=1; TR1=1; t11=0x00; TH1=0x00; TL1=0x00; if(times=0) /定时1S结束则将在P3.5采集到的数据转换成十进制 t12=TH1;/并将各位上的的数值取出存入到disdata0-disdata5六个变量中 t13=TL1; htod=t11*65536+t12*256+t13; disdata0=htod/100000; htod=htod%100000; disdata1=htod/10000; htod=htod%10000; disda
13、ta2=htod/1000; htod=htod%1000; disdata3=htod/100; htod=htod%100; disdata4=htod/10; disdata5=htod%10; times=0; /动态显示输出 weixuan=0x10; for(i=0;i6;i+) duanxuan=tabdisdatai; delay0(); weixuan+;十 分析总结 本次制作用到的主要芯片有AT89S51、74LS373、74LS138。单片机用到的是P0口和P2口,P0口必须接上拉电阻,5v供电电压;74LS373用来驱动数码管OE 为低电平时,O0O7 为正常逻辑状态,可用来驱动负载或总 线。当 OE 为高电平时,O0O7 呈高阻态,即不驱动总线,也不为总线的负载,但 锁存器内部的逻辑操作不受影响。 当锁存允许端 LE 为高电平时,O 随数据 D 而变。当 LE 为低电平时,O 被锁存在 已建立的数据电平。 74LS138用来进行位选,一个选通端(E1)为高电平,另两个选通端(E2)和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A0A1A2=110时,则Y6输出端输出低电平信号。 利用 E1、E2和E3可级联扩展成 24 线译码器;最后加上自己的总结