1、- -第一章 绪论1.1 课题研究的意义随着科学技术的开展,尤其是单片机技术和半导体技术的高速开展,频率计的研究及应用越来越受到重视,这样对频率测量设备的要求也越来越高。目前的微处理器芯片开展迅速,出现诸如DSP、FPJA等不同领域的应用芯片。而单片机是一门开展极快,应用方式极其灵活的使用技术。它以灵活的设计、微小的功耗、低廉的本钱,在数据采集、过程控制、模糊控制、智能仪表等领域得到广泛的应用,极大的提高了这些领域的技术水平和自动化程度。本次课程设计的容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量。1.2 频率计研究的开展趋势对灵敏度和准确
2、度的要求:为了测量微波频率,频率计必须在测量频率点上有足够的灵敏度,这样当测量临界信号时才可能有更多的灵活性。如果要做准确的测量,一定要保证被测信号的频率和幅度在测量仪器的指标围之。测量仪器的准确度的选择:仪器的频率测量准确度取决于时基。大多数仪器使用的10MHZ参考振荡器具有107或108的频率准确度和稳定度。高分辨率比高精度更容易实现,因为增加显示位数比制造更稳定的振荡参考源要容易的多。可能影响频率计选择和应用的还有另外几个值得考虑的特性,如:采样时间、测量速度和跟踪速度,这些特性可能影响测量结果的准确及结果的及时处理。第二章 总体方案介绍21 频率计原理频率的测量实际上就是在1s时间对信
3、号进展计数,计数值就是信号频率。用单片机设计频率计通常采用两种方法,第一种方法是使用单片机自带的计数器对输入脉冲进展计数;第二种方法是单片机外部使用计数器对脉冲信号进展计数,计数值再由单片机读取。本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于11.0592MHz/24=460.8KHz。对外部脉冲的占空比无特殊要求。根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,T0应该工作在中断方式,用于1s时间的中断处理,T1用于对频率脉冲的计数。2.2 设计思想明确频率计工作原理以后,为了更方思路更清晰地对程序编写,还应该作出程序的总
4、体框图,如图2.1所示。程序的主体可以分为4个模块:定时计数、采集数据、进制转换和数码显示,当然,程序还应该包括很多细节问题。例如,动态显示的时候应该调用延时程序。图2.1 频率计系统总体框图第三章 硬件设计3.1 系统硬件的构成 本频率计的数据采集系统主要元器件是AT89C51单片机,由它完成对待测信号频率的计数和结果显示等功能,外部还有显示驱动芯片、LCD显示器、按键控制等器件。可分为以下四个模块:计时模块、计数模块、信息采集处理模块、LCD显示模块。由于本设计非常简单,实现的功能较少,所以计数模块采用单片机本身的部计时器和计数器。3.2 AT89C51单片机及其引脚说明AT89C51是一
5、种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停顿工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的容并且冻结振荡器,制止所用其他芯片功能,直到下一个硬件复位为止。第四章单元程序的设计4.1 1s定时本次设计选用定时器T0完成定时功能,选用方式1时最多也只能定时,显然不能满足定时1的要求,可以用下面这种方法解决:采用T0定时50,连续循环定时20次即可完成1定时,用一个计数单元30H存放循环的次数,每一次循环30
6、H单元自增1,当30H单元为20时那么1定时到时。其程序流程图如图4.1所示。定时器T0初始化程序如下:T EQU 30HMOV IE,#8AH ;开放T0、T1中断MOV TMOD,#51H ;T0定时,T1计数,都工作于方式一MOV 30H,#00 ;对30H单元清零SETB TR0根据流程图设计的1s定时程序如下:INT_T0:MOV TH0,#3CHMOV TL0,#0BH ;设置计时初值为50msINC TMOV A,TCJNE A,#20,RETUNE ;是否计时满1sMOV T,#00HRETUNE: RETI开场30H=0T0初始化定时50ms启动定时器T0定时到产生中断30+
7、1=20?1S定时到采集计数数据完毕图4.1 1s定时流程图4.2 T1计数程序设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以到达460800Hz,但计数器最多只能计数65536次,显然需要对计数单元进展扩展,扩展的思路是除了计数器T1的TH1和TL1用于计数外,再选用一个计数单元,每当计数器T1溢出回零时产生中断,中断程序执行计数扩展单元自增1,这样,当一秒时间到时采集的计数数据,扩展计数单元存放的是数据的最高位,TH1存放的是数据的次高位,TL1存放的是数据的最低位。当然,这里所说的“最高位“次高位以及“最低位都是针对十六进制而言的。本设计为了不增加设计的复
8、杂性,从其他多方面因素考虑,不扩展计数单元。T1计数程序的流程图如图4.2所示。开场T1初始化置初值为零计数开场1S到时否?按键为低电平?采集数据完毕图4.2 T1计数流程图计数器T1初始化程序如下:MOV IE,#8AH ;开放T0、T1中断MOV TMOD,#51H ;T0定时,T1计数,都工作于方式一MOV TH1,#00HMOV TL1,#00H ;计数初值为零根据流程图设计的计数程序如下:WAIT: KEY,$LCALL DELAY KEY,$ SETB TR14.3 频率数据采集1定时时间到时,存储计数器T1记录的数据即为输入时钟信号的频率,为了保证记录的频率准确度,1定时到时间后
9、应立即停顿T1的计数,因为指令的执行也需要时间,并且待测的时钟信号频率越高,指令执行所需要的时间就越不能忽略,这里采用的指令为CLR TR1。数据采集程序如下:VALUEH EQU 20HVALUEL EQU 21H CLR TR0CLR TR1MOV VALUEH,TH1 ;1s定时到那么采集数据MOV VALUEL,TL14.4 进制转换从计数器采集到的频率数据是十六进制的,如果直接把这些数据送给数码管显示显然很不直观,因此需要把这些数据向十进制转换。下面这段程序将VALUEH/VALUEL中的16进制数转换成10进制并且把5位数依次存入DVALUE0至DVALUE4中。程序如下:VALU
10、EHEQU20H;暂存TH1的值VALUELEQU21H ;暂存TL1的值DVALUE0EQU22H;暂存计数值的BCD码DVALUE1EQU23HDVALUE2EQU24HDVALUE3EQU25HDVALUE4EQU26HHTOD:MOVR2,VALUEHMOVR3,VALUELCLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,#10HLOOP1:CLRCMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R6ADDC A,R6DAAMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A
11、,R4DA AMOV R4,ADJNZ R7,LOOP1CZ:MOV R0,#DVALUE4MOV A,R6ANL A,#0FHMOV R0,ADEC R0MOV A,R6SWAP AANL A,#0FHMOV R0,ADEC R0MOV A,R5ANL A,#0FHMOV R0,ADEC R0MOV A,R5SWAP AANL A,#0FHMOV R0,ADEC R0MOV A,R4ANL A,#0FHMOV R0,ARET第五章 运行调试5.1 频率计系统总体程序各单元子程序已经设计完毕,将各子程序通过适当的指令起来,总程序的第一局部为T0、T1初始化,第二局部为1定时及计数,第三局部为采集频率,第四局部为进制转化,第五局部为数码显示,第六局部为延时程序。5.2 综合测试将编写的系统总体程序用WAVE6000软件编译成HEX文件,并且借助PROTEUS软件仿真运行。结果与设想相符合,满足要求。参考文献1 艳兵.计算机控制技术,国防工业,20062 涵芳. MCS-51/96系列 单片机原理及应用, 航空航天大学,19943 朝青.单片机原理及接口技术第三版. 航空航天大学,2005.94 王力虎.红波.PC控制及接口程序设计实例.科学,2004- word.zl