基于单片机的频率计的设计.docx
《基于单片机的频率计的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的频率计的设计.docx(8页珍藏版)》请在冰豆网上搜索。
基于单片机的频率计的设计
第一章绪论
1.1课题研究的意义
随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,频率计的研究及应用越来越受到重视,这样对频率测量设备的要求也越来越高。
目前的微处理器芯片发展迅速,出现诸如DSP、FPJA等不同领域的应用芯片。
而单片机是一门发展极快,应用方式极其灵活的使用技术。
它以灵活的设计、微小的功耗、低廉的成本,在数据采集、过程控制、模糊控制、智能仪表等领域得到广泛的应用,极大的提高了这些领域的技术水平和自动化程度。
本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量。
1.2频率计研究的发展趋势
对灵敏度和准确度的要求:
为了测量微波频率,频率计必须在测量频率点上有足够的灵敏度,这样当测量临界信号时才可能有更多的灵活性。
如果要做精确的测量,一定要保证被测信号的频率和幅度在测量仪器的指标范围之内。
测量仪器的准确度的选择:
仪器的频率测量准确度取决于时基。
大多数仪器使用的10MHZ参考振荡器具有107或108的频率准确度和稳定度。
高分辨率比高精度更容易实现,因为增加显示位数比制造更稳定的振荡参考源要容易的多。
可能影响频率计选择和应用的还有另外几个值得考虑的特性,如:
采样时间、测量速度和跟踪速度,这些特性可能影响测量结果的准确及结果的及时处理。
第二章总体方案介绍
2.1频率计原理
频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计通常采用两种办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。
本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于11.0592MHz/24=460.8KHz。
对外部脉冲的占空比无特殊要求。
根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,T0应该工作在中断方式,用于1s时间的中断处理,T1用于对频率脉冲的计数。
2.2设计思想
明确频率计工作原理以后,为了更方思路更清晰地对程序编写,还应该作出程序的总体框图,如图2.1所示。
程序的主体可以分为4个模块:
定时计数、采集数据、进制转换和数码显示,当然,程序还应该包括很多细节问题。
例如,动态显示的时候应该调用延时程序。
图2.1频率计系统总体框图
第三章硬件设计
3.1系统硬件的构成
本频率计的数据采集系统主要元器件是AT89C51单片机,由它完成对待测信号频率的计数和结果显示等功能,外部还有显示驱动芯片、LCD显示器、按键控制等器件。
可分为以下四个模块:
计时模块、计数模块、信息采集处理模块、LCD显示模块。
由于本设计非常简单,实现的功能较少,所以计数模块采用单片机本身的内部计时器和计数器。
3.2AT89C51单片机及其引脚说明
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
第四章单元程序的设计
4.11s定时
本次设计选用定时器T0完成定时功能,选用方式1时最多也只能定时,显然不能满足定时1的要求,可以用下面这种方法解决:
采用T0定时50,连续循环定时20次即可完成1定时,用一个计数单元30H存放循环的次数,每一次循环30H单元自增1,当30H单元为20时则1定时到时。
其程序流程图如图4.1所示。
定时器T0初始化程序如下:
CNTEQU30H
MOVIE,#8AH;开放T0、T1中断
MOVTMOD,#51H;T0定时,T1计数,都工作于方式一
MOV30H,#00;对30H单元清零
SETBTR0
根据流程图设计的1s定时程序如下:
INT_T0:
MOVTH0,#3CH
MOVTL0,#0BH;设置计时初值为50ms
INCCNT
MOVA,CNT
CJNEA,#20,RETUNE;是否计时满1s
MOVCNT,#00H
RETUNE:
RETI
图4.11s定时流程图
4.2T1计数程序
设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz,但计数器最多只能计数65536次,显然需要对计数单元进行扩展,扩展的思路是除了计数器T1的TH1和TL1用于计数外,再选用一个计数单元,每当计数器T1溢出回零时产生中断,中断程序执行计数扩展单元自增1,这样,当一秒时间到时采集的计数数据,扩展计数单元存放的是数据的最高位,TH1存放的是数据的次高位,TL1存放的是数据的最低位。
当然,这里所说的“最高位”“次高位”以及“最低位”都是针对十六进制而言的。
本设计为了不增加设计的复杂性,从其他多方面因素考虑,不扩展计数单元。
T1计数程序的流程图如图4.2所示。
图4.2T1计数流程图
计数器T1初始化程序如下:
MOVIE,#8AH;开放T0、T1中断
MOVTMOD,#51H;T0定时,T1计数,都工作于方式一
MOVTH1,#00H
MOVTL1,#00H;计数初值为零
根据流程图设计的计数程序如下:
WAIT:
JBKEY,$
LCALLDELAY
JBKEY,$
SETBTR1
4.3频率数据采集
1定时时间到时,存储计数器T1记录的数据即为输入时钟信号的频率,为了保证记录的频率精确度,1定时到时间后应立即停止T1的计数,因为指令的执行也需要时间,并且待测的时钟信号频率越高,指令执行所需要的时间就越不能忽略,这里采用的指令为CLRTR1。
数据采集程序如下:
VALUEHEQU20H
VALUELEQU21H
CLRTR0
CLRTR1
MOVVALUEH,TH1;1s定时到则采集数据
MOVVALUEL,TL1
4.4进制转换
从计数器采集到的频率数据是十六进制的,如果直接把这些数据送给数码管显示显然很不直观,因此需要把这些数据向十进制转换。
下面这段程序将VALUEH/VALUEL中的16进制数转换成10进制并且把5位数依次存入DVALUE0至DVALUE4中。
程序如下:
VALUEHEQU20H;暂存TH1的值
VALUELEQU21H;暂存TL1的值
DVALUE0EQU22H;暂存计数值的BCD码
DVALUE1EQU23H
DVALUE2EQU24H
DVALUE3EQU25H
DVALUE4EQU26H
HTOD:
MOVR2,VALUEH
MOVR3,VALUEL
CLRA
MOVR4,A
MOVR5,A
MOVR6,A
MOVR7,#10H
LOOP1:
CLRC
MOVA,R3
RLCA
MOVR3,A
MOVA,R2
RLCA
MOVR2,A
MOVA,R6
ADDCA,R6
DAA
MOVR6,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
DJNZR7,LOOP1
CZ:
MOVR0,#DVALUE4
MOVA,R6
ANLA,#0FH
MOV@R0,A
DECR0
MOVA,R6
SWAPA
ANLA,#0FH
MOV@R0,A
DECR0
MOVA,R5
ANLA,#0FH
MOV@R0,A
DECR0
MOVA,R5
SWAPA
ANLA,#0FH
MOV@R0,A
DECR0
MOVA,R4
ANLA,#0FH
MOV@R0,A
RET
第五章运行调试
5.1频率计系统总体程序
各单元子程序已经设计完毕,将各子程序通过适当的指令链接起来,总程序的第一部分为T0、T1初始化,第二部分为1定时及计数,第三部分为采集频率,第四部分为进制转化,第五部分为数码显示,第六部分为延时程序。
5.2综合测试
将编写的系统总体程序用WAVE6000软件编译成HEX文件,并且借助PROTEUS软件仿真运行。
结果与设想相符合,满足要求。
参考文献
1张艳兵.计算机控制技术,国防工业出版社,2006
2孙涵芳.MCS-51/96系列单片机原理及应用,北京航空航天大学出版社,1994
3李朝青.单片机原理及接口技术(第三版).北京航空航天大学出版社,2005.9
4王力虎.李红波.PC控制及接口程序设计实例.科学出版社,2004
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文