基于单片机智能频率计的设计_毕业设计论文1.doc

上传人:来看看 文档编号:3921841 上传时间:2019-10-10 格式:DOC 页数:34 大小:969KB
返回 下载 相关 举报
基于单片机智能频率计的设计_毕业设计论文1.doc_第1页
第1页 / 共34页
基于单片机智能频率计的设计_毕业设计论文1.doc_第2页
第2页 / 共34页
基于单片机智能频率计的设计_毕业设计论文1.doc_第3页
第3页 / 共34页
基于单片机智能频率计的设计_毕业设计论文1.doc_第4页
第4页 / 共34页
基于单片机智能频率计的设计_毕业设计论文1.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《基于单片机智能频率计的设计_毕业设计论文1.doc》由会员分享,可在线阅读,更多相关《基于单片机智能频率计的设计_毕业设计论文1.doc(34页珍藏版)》请在三一文库上搜索。

1、 南 京 理 工 大 学毕业设计说明书(论文)作 者:学 号:学院(系):电光学院专 业:电子信息工程题 目:基于单片机智能频率计的设计毕业设计说明书(论文)中文摘要本文介绍了以MCS-51单片机为核心的智能频率计的设计。在KEIL软件上进行程序的编写,在PROTEUS软件上进行电路连接的方式实现软件和硬件的结合,最后来完成频率的测量。频率计主要由单片机模块,频率选择模块和显示模块组成。针对不同范围段的频率,设计了三种测频方法。在低频段(0-10Hz)采用测周法进行测量,在中频段(10-500Hz)采用多周期同步法,在高频段(500-30KHz)是采用测频方法进行测量。其中多周期法大大提高了测

2、量精度,实现了同频段等精度的测量。关键词 单片机 频率 测量 高精度 多周期法毕业设计说明书(论文)外文摘要AbstractThe article describes the design of the intelligent frequency meter as the core of MCS-51.Tt is the combination of software and hardware to write the program on the KEIL software and to implement for circuit connection on the PROTEUS soft

3、ware so that to finally complete the frequency measurement. Frequency counter mainly consists of single-chip microcomputer module, frequency selection the module and display module. For different ranges of frequencies, has designed three methods of frequency measurement. In low frequency bands (0-10

4、Hz) use measuring cycle method for measuring, in middle frequency bands (20-500Hz) use the method of multi-cycle synchronism, in high frequency bands (500-32KHz) use frequency measurement method for measurement. multi-cycle synchronism method improves measurement accuracy, achieved the same measurem

5、ent with other precision measuring.Keywords Single-chip computer, frequency measurement, high precision Way of Multi-cycle目 录1.前言51.1智能频率计研究意义51.2智能频率计发展现状61.3智能频率计设计内容62.总体设计原理62.1总体设计框图与原理72.2频率测量原理及方法72.2.1 直接测频法72.2.2周期法测频82.2.3 多周期法测频83.硬件电路设计93.1MCS51单片机简介93.1.1 单片机内部介绍93.1.2单片机管脚103.2电路实现113.

6、2.1 复位电路113.2.2时钟电路123.2.3控制电路123.2.4显示电路143.2.5总电路图164软件电路174.1总体设计图17主程序单元184.3初始化单元184.4中断程序单元214.5显示电路程序24仿真结果25结论30致谢31参考文献32附录:331. 前言1.1 智能频率计研究意义伴着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。在电子领域内,频率测量的精确度是最高的。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用智能频率计来测量,以提高

7、精确度。智能频率计是电子测量与仪表技术最基础的电子仪表类别之一,智能频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,而且它是数字电压表必不可少。除了测量频率、频率比、周期、时间、相位、相位差等基本功能外,还具有自捡、自校、自诊断、数理统计、计算方均根值、数据存储和数据通信等功能。此外,还能测量电压、电流、阻抗、功率和波形等。而传统的频率计数器通常由组合电路和时序电路等大量的硬件电路构成,一般采用传统开发模式,需要的硬件成本高,系统开发周期长,开发效率比较低。采用测频率法直接测频率,测量的精度相对较低。当被测信号在高频段时可以采用直接测频率法,但是当信号处于低频段时采用直接测

8、频的弊端就暴露出来了,不仅量程受限,而且测量起来也十分不准确,只能采用测周期法间接测量频率。但对于中间频段,无论采用测频或者测周期法,对于传统的频率计而言其测量精度均不高。通用传统电子计数器在整个测量频段内,其测量精度是不一致的,并且测量精度也不高。本课题利用AT89C51单片机为控制核心,利用单片机内部的定时和中断功能设计了频率计数器,它可以降低传统仪器制作复杂度,减少成本投入,大大改善仪器的功能和性能。单片机是一门发展极快,,应用方式极其灵活的使用技术。它以灵活的设计、微小的功耗、低廉的成本,在数据采集、过程控制、模糊控制、智能仪表等领域得到广泛的应用。AT89C51是一种带有4K 字节可

9、电擦除电编程的只读存储器,高性能的8位CMOS处理器,可1000次循环写/擦,数据保留时间为10年左右,128字节的内部RAM,32个可编程I/O线, 2个16位的定时器/计数器,5个中断源,可编程串行口等电路。智能频率计中主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能。从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将

10、大幅提高,可实现精度较高、等精度和宽范围频率计的要求。随着单片机技术的不断发展,单片机能实现更加灵活的逻辑控制功能,具有很强的数据处理能力,可以用单片机通过软件设计直接用十进制数字显示被测信号频率。随着微控制芯片在数字仪器中的大量使用,使得智能仪器是数字仪器发展的主要方向之一。市场上的频率计产品很多,但基本上都是采用专用计数芯片如(ICM7240,ICM7216) 和数字逻辑电路组成,由于这些芯片本身的工作频率不高(如ICM7240仅有15MHz左右),从而限制了产品工作频率的提高, 远不能满足在一些特殊的场合需要测量很高的频率的要求,而且测量精度也受到芯片本身极大的限制。1.2 智能频率计发

11、展现状目前频率计的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小。实现的具体方法也有很多,如定时法测频率和计数法测频率。1.3 智能频率计设计内容利用单片机,D触发器,数据选择器,MAX7219显示驱动,LED显示等,加上控制程序,实现频率的测量。参数如下:a) 测量范围1Hz10KHz.b) 能根据输入信号频率自动使用最合适的方法测量。c) 用六位数码管显示测量值。2. 总体设计原理2.1总体设计框图与原理C51单片机显示电路信号输入低、中、高频率硬件电路主要以C51单片机为核心,利用它内部的计数、定时、中断功能,外加一些控制

12、电路和显示电路的连接实现不同频段的频率的自动测量。最后电路能实现频率从1Hz到32000Hz频率的测量,当频率在中频(10-500Hz)时会使用多周期和测频法轮流显示的方式,为了比较二者的测量准确度的差异。2.2 频率测量原理及方法脉冲信号的频率是指在单位时间内由信号所产生的脉冲个数,即fx=NT。频率的测量则需在脉冲个数和计数时间上选取一个基准,对另一个进行测量。 2.2.1 直接测频法 充分利用单片机内的两个定时/计数器,一个作为定时器,给出标准闸门t(通常选择1s),另一个作为来计数器,计数fx的变化次数N,fx=NT。 误差分析:1=dfxfx=NN=1N=1Tfx,所以测频法的误差来

13、源主要是计数器只能进行整数计数而引起的1误差。此法在被测信号频率较低时,引起的误差比较大,而频率很高时,误差较小。因此直接测频法适合测量高频。N图1 测频法原理图2.2.2周期法测频 周期法是指在被测信号一个周期内,计数标准脉冲Fz,所得的计数值N与fx关系为:fx=FzN。 将单片机内定时/计数器T0为16位定时器,对内部机器周期计数,定时器的开关由外部中断0控制,检测到一个周期信号的下降沿开始计数,下一个下降沿停止计数。误差分析:2=dfxfx=NN=1N=fxFz,测周法的主要误差也是由于计数器只能进行整数计数而引起的1误差,在频率较高时,误差较大,因此只适用于低频测量。 TxNFz 图

14、2 周期法测频原理图2.2.3 多周期法测频标准频率信号不是用来填充待测信号的周期, 而是与待测信号分别输入到两个计数器进行同步计数。首先, 由单片机( 或相应控制电路) 给出闸门开启信号,此时, 计数器并不开始计数, 而是等到被测信号的下降沿到来时, 才真正开始计数。然后, 两级计数器分别对被测信号和标准信号计数。当单片机给出闸门关闭信号后, 计数器并不立即停止计数而是等到被测信号下降沿来到的时刻才真正结束计数, 完成一次测量过程,有图所示。可以看出, 实际闸门与参考闸门并不严格相等, 但最大差值不超过被测信号的一个周期。被测信号的计数为Nx,标准信号的计数值为N0,标准信号的频率为f0,则

15、被测信号的频率为:fx=NxN0f0。误差分析:3=dfxfx=-NxN02f0dN01fx=1N0。只与标准信号和计数时间有关系,与被测信号无关,测量精度大大提高。多周期同步法的闸门时间不是固定的值,而是被测信号的整周期倍,即与被测信号同步,因此消除了被测信号计数产生的1个误差,达到了在整个测量频段的等精度测量。被测信号个数预置闸门实际闸门Tp标准频率信号个数被测信号fx标准信号f0图3 多周期法测频原理图3. 硬件电路设计3.1 MCS51单片机简介3.1.1 单片机内部介绍C51是8位CPU,片内振荡器。4K字节ROM,128字节RAM。21个特殊功能寄存器,32根I/O线,可寻址各64

16、K字节的外部数据、程序存储器空间。2个16位的定时器/计数器。五个中断源,两个优先级。一个全双工串行口,有位寻址功能,适于布尔运算的位处理机。图4 C51单片机内部图3.1.2 单片机管脚MCS-51单片机是一个具有40根引脚的双列直插式器件,4个并行口共有32根引脚,可分别用作地址线,数据线和I/O线,另外还有6根控制信号线,两根电源线。其芯片管脚图见图图5 C51芯片管脚图PO口:PO口有两种用途。一个是做普通I/O端口。一个是做地址/数据复用总线。外部扩展存储器时,当做数据总线。外部扩展存储器时,当作地址总线。不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上

17、拉电阻。本文用的设计没有用到P0口。P1口:P1口是一个标准的准双向口,往往作通用的I/O口使用。准双向口工作的特点是:在某引脚由输出状态变为输入时,则应先往对应锁存器写入“1”,以免读错引脚上的信息。P1口最大的特点是按位可编程的输入输出口。本论文中主要使用的端口功能如下: P1.0控制选择器地址端低位P1.1控制选择器地址端高位P1.3控制选择器使能端P1.6BEGIN启动测量P1.7START 多周期测量时启动脉冲 P2口:P2口输出有锁存功能,做准双向口使用输入时要先向口写1.每根引脚既可以做地址输出,也可以做数据输出和输入。本文主要用到P 2.0、P2.1、P2.2用于频率的显示。P

18、3口:P3口是一个双功能口,第一功能和P2口一样可作为通用I/O,每位可定义为输入和输出,且是一个准双向口。P3口工作于第二功能时,各位的定义如表所示:P3.0PXD(串行输入通道)P3.1TXD(串行输出通道)P3.2外中断0P3.3外中断1P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6外部数据存储器写选通P3.7外部数据存储器读选通ALE/PROG:地址锁存允许输出。VDD/:当VDD为高电平时,CPU执行片内程序存储器指令。当为低电平时,CPU 只执行片外程序存储器指令。XTAL1:作为振荡器倒相放大器的输入。使用外振荡器时,必须接地电位。XTAL2: 作为振荡

19、器倒相放大器的输出和内部时钟发生器的输入。当使用外振荡器时,接收外振荡器信号。RST/VPD:复位输入。当振荡器工作时,在此端线持续给出两个机器周期的高电平可以完成复位。由于有一个内部的下拉电阻,只需要在本端和Vcc端之间加一个电容,便可以做到上电复位。3.2电路实现3.2.1 复位电路 初始化需要复位电路,当单片机开始运行时,当系统工作过程中会出现故障无法正常工作时,都需要复位信号使系统重新开始工作。本文选用手复位电路。 图6 复位电路图3.2.2 时钟电路定时控制逻辑电路是控制器产生各种控制信息、协调各部件运转的核心,它需要一个时钟基准,通过它产生CPU的操作时序。8051的时钟可以由两种

20、方式产生,一种是内部方式,另一种是外部时钟方式。XTAL1为芯片内部振荡电路输入端,XTAL2为芯片内部振荡电路输出端。若采用内部方式,在XTAL1,XTAL2引脚上外接定时元则在内部可产生与外加晶体同频率的振荡时钟。若采用外部时钟方式,此时把XTAL1接地,振荡频率由XTAL2引脚提供。本文采用内部方式。图7 时钟电路图3.2.3 控制电路 主要用到边沿D触发器和双四选一选择器74LS153. 图8 边沿D触发器的示意图边沿D触发器的工作原理:1.CLK=0期间,触发器输出状态保持不变。2.当CLK=1时,触发器输出状态保持不变。3.当CLK由0变为1时,触发器输出的新状态Qn+1=D.所以

21、此触发器输出状态的改变发生在CLK的上升沿,而输出的新状态仅仅由CLK上升沿到来前一瞬间的输入信号D决定,其他时刻输入信号D的变化对输出无影响。CLK DQnQn+101110011000110101110111111 维持阻塞D触发器特性表图9 双四选一数据选择器示意图数据选择器工作原理:1.AB是公共控制地址单元。2.E为使能端,低电平有效。3.每个单元输出满足表达式:Y=(+)。使能端低电平有效,分别控制自己的单元框输入输入输入输出A1A0 Y10000D0010D1100D2110D3 双四选一功能表利用D触发器和选择器,主要实现电路的粗略测频与多周期测频功能。将信号直接输入到D触发器

22、的时钟端,触发器的D端输入P1.7作为预设闸门时间控制位,输出端用另一变量INT表示,根据D触发器的原理,INT则应和输入信号同步,所以作为闸门信号,则避免了直接测频和测周法的误差。具体实现如下:外部中断0开启,模拟开关0接通,由P17开始启动,中断开始计数,然后中断结束计数结束,计算。P17为0,不启动定时器0,1。开T0中断。设置T1为计数,计未知频率次数,T0为内部定时器,50ms一次,因为内部计数频率高,故设置T0中断,50000次后times加1,同时继续定时。T1为外部时钟,初值为0。开启T1和T0,置P17为1,进行计数。延时100ms(或500ms)后,开启外中断0中断,置P1

23、7为0,启动外中断0。在外中断0中服中,停止计数器0,1,读计数值。计算外部频率。FX=NX/N0*1000000。其中:N0=times*50000+TH0*256+TL0 NX=TH1*256+TL1选择器的地址端用C51的可位寻址端P1.0,P1.1控制,使能端用P1.3位控制。此电路配合单片机能实现针对不同频段的频率采用不同方法测频率。3.2.4 显示电路显示电路采用MAX7219芯片实现LED数码显示,相比与传统的显示驱动电路。它的电路结构紧凑、节省了CPU的I/O接口、芯片功能强大、编程不复杂等。MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX

24、7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。图10 MAX7219引脚图各引脚的功能为:DIN:串行数据输入端DOUT:串行数据输出端,用于级联扩展LOAD:装载数据输入CLK:串行时钟输入DIG0-DIG7:8位LED位选线,从共阴极中吸入电流SEG ASEG G DP 段驱动

25、和小数点驱动ISET:通过一个10电阻和Vcc相连,设置段电流MAX7219有下列几组寄存器:译码控制寄存器、亮度控制寄存器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。编程时只有正确操作这些寄存器,MAX7219才可工作。译码控制寄存器(X9H):MAX7219有两种译码方式:B译码方式和不译码方式。当选择不译码时,8个数据为分别一一对应7个段和小数点位;B译码方式是BCD译码,直接送数据就可以显示。实际应用中可以按位设置选择B译码或是不译码方式。扫描界限寄存器(XBH):此寄存器用于设置显示的LED的个数(18)。亮度控制寄存器(XAH):共有16级可选择,用于设置LED的显示亮度,从

26、0xX00xXF关断模式寄存器(XCH) 共有两种模式选择,一是关断状态,(最低位 D0=0)一是正常工作状态(D0=1)。显示测试寄存器(XFH) 用于设置LED是测试状态还是正常工作状态,当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。 工作时,MAX7219规定一次接收16位数据,在接收的16位数据中:D15D12可以与操作无关,可以任意写入,D11D8决定所选通的内部寄存器地址,D7D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位

27、D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。此表列出了每个数字对应的段位码图11 MAX7219数字对应的段位码从单片机引出三根线,连接MAX7219的DIN、LOAD、CLK口,通过软件的控制实现电路的显示。3.2.5 总电路图图12 智能频率计总电路图4 软件电路4.1总体设计图软件设计的语句主要通过控制单片机来协调电路的功能,辅之MAX7219芯片和LED显示程序,构成软件的主要成分。主要分为四部分:主程序单元,初始化单元,中断单元,显示单元。开 始周期法测频直接测频法多周期测频法大于10Hz?大于500Hz?频率粗侧YY NY结束主程序单元为达到智能转换频率测量

28、方法的目的,必须对进行测量的频率进行初步测量。根据不同频率段的频率,自行运用最合适的测量方法。所以不论多大的频率都得运用直接测频法进行粗测,粗测的方法用的是直接测频法。程序运行前,需对直接测频进行初始化,即不允许中断打开,不开启定时器,将1设为16位计数器,T0设为16位定时器,定时常数为50ms。之所以定50ms,而不是直接定时1s,是因为对于晶振为12MHz,16位的定时/计数方式,一次最大的计数时间为65.536ms.将1的计数高位与低位清零。初始化之后,若按下测量按钮,T1计数器开启,同时在主程序中开启总中断,此中断为定时器0中断,主要是每隔50ms中断一次,当中断20次即一秒时,进入

29、中断中的子程序,禁止T1的计数,禁止中断,读出计数的数值,然后将计数器的高位低位清零,为下一次计数做准备。若经过初步测量的频率大于500HZ,则直接对初测的频率进行显示。同时设置中断标志位,允许外部中断1中断,好开始下一次的测量。若经过初测的频率大于10Hz且小于500Hz,则进入测频和多周期轮流显示。此为了凸显多周期测频的优越性,先显示直接测频的数值,延时1秒,进入多周期测量程序中。若经过初步测量的频率小于10Hz,则进入测周法测频中,先测周初始化,开中断,测频率,在显示。如果没有输入频率,则不显示数字。4.3初始化单元初始化中因用到了定时器/计数器,下面介绍一下其功能。MCS-51有两个十

30、六位定时/计数器T0、T1,可以用作定时器或外部事件计数器,并有四种工作方式。定时/计数器方式控制寄存器TMODD7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下:工作方式选择位M1、M0,M1、M0的状态决定定时器的工作方式:M1M0功能说明00方式0为13位的定时/计数器01方式1为16位的定时/计数器10方式2为常数自动重装入的8位定时/计数器11方式3T0在该方式时成为两个8位定时/计数器,T1在该方式时停止计数C/T=0为定时器方式。C/T=1为外部

31、事件计数器方式。GATE:GATE为1时,定时器的计数受定时运行控制位和外部引脚输入电平的控制(TR0和INT0控制T0的运行,TR1和INT1控制T1的运行),GATE为0时定时器计数不受外部引脚输入电平的控制,而只受运行控制位(TR0、TR1)的控制。测频的初始化:根据直接测频的原理,即在一秒内计数信号脉冲的个数,所以直接测频主要用到单片机的计数/定时功能,初始化首先不开启总中断,不开启定时器,设置T1为16位计数器,T0为16位定时器,定时常数为50ms,计数高位低位清零,电子开关断开,其他初值为0。具体如下:void start() /测频的初始化IE=0;/不允许中断TR0=TR1=

32、0;/不开启定时器TMOD=0x51;/T1为16位计数器,T0为16位定时器TH0=(65536-50000)/256;TL0=(65536-50000)%256;/定时常数50msTH1=TL1=0;P13=1;/电子开关断开ET0=1;/允许T0中断step=0;/测频状态t0_enable=0;/测频初值ex0_enable=0;/外中断初值ex1_enable=0;IT0=0;times=0;/测频初值多周期测频初始化:根据多初期测频的原理,会使用到单片机的内部定时器功能,计数器功能,此二者均需同时受软件和硬件同时控制。还有外部中断。类似直接测频初始化,首先不开中断,不开启定时器,设

33、置T1为16位计数器,硬件启动,T0为16为定时器,内部计数,硬件启动。P17为0,不启动T0和T1。同样设置定时50ms,P13=0开启电子开关,允许D触发器的输出作为外部中断的输入信号。具体如下:void start1()/多周期测频初始化IE=0;/不支持中断TR0=TR1=0;/不开启定时器TMOD=0xD9;/T1为16位计数器,硬件启动,T0为16为定时器,内部计数,硬件启动START=0;/P17为0,不启动T0和T1TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=TL1=0;step=1;/多周期标志ex0_enable=0;t0

34、_enable=0;ex1_enable=0;IE=0x82;IT0=0;times=0;P13=0;P11=0;P10=0;测周初始化:根据测周法的原理,需要用到计数器与外部中断。具体实现如下:void start2()/测周初始化IE=0;TR0=TR1=0;TMOD=0x01;/定时器0内部计数TH0=(65536-50000)/256;TL0=(65536-50000)%256;step=2; /开始测周ex0_enable=0;t0_enable=0;ex1_enable=0;times=0;P13=0; /允许电子开关选择T1信号去触发中断P11=0;P10=1;IT0=1;/外中

35、断0下降沿触发EX0=1;/允许外中断0中断ET0=0;/禁止T0中断flag=0;4.4中断程序单元MCS-51有5个中断源:两个外部中断是、(P3.2、P3.3)上输入的外部中断事件,低电平或负跳变有效,在每个机器周期的S5P2状态采样,并置位TCON中的IE0和IE1中断请求标志位:三个内部的中断源,他们是定时器/计数器T0、T1的溢出中断源和串行口的发送接收中断。中断控制器寄存器TCON的各位(可位寻址):D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TR0:计数/定时器T0运行控制位。IE0:外部中断0请求源标志。IIT0:外部中断源0触发方式控制位

36、。IT0=0,外部中断0程控为电平触发方式。IT0=1,外部中断0程控为边沿触发方式。TF0:定时/计数器T0溢出中断标志位,CPU执行中断服务程序时由硬件复位。中断允许寄存器IEMCS-51的CPU对中断源的开放或屏蔽,即每一个中断源是否被允许中断,是由内部的中断允许寄存器IE(IE为特殊功能寄存器)控制的,其格式如下:D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0EA:CPU的 开放标志。EA=1,CPU开放中断;EA=0,CPU屏蔽所有的中断申请。ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。ET1:定时器/计数器T1的溢出中断允许位。ET

37、1=1,允许T1中断;ET1=0,禁止T1中断。EX1:外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。中断服务程序:使用MCS-51的中断,要为使用到的中断源编写中断服务程序。C51为中断服务程序的编写提供了方便的方法。C51的中断服务程序是一种特殊的函数,它的说明形式为: Void 函数名(void) interrupt n using m 函数体语句 这里,interrupt和using是为编写C51中断服务程序而引入的关键字,interrupt表示该函数是一个中断服务函数,interrupt后的整数n表示该中断服务函数是对应哪一个中断源。每个中断源

38、都有系统指定的中断编号: 中断源 中断编号 外部中断0 0 定时器T0 1 外部中断1 2 定时器T1 3 串行口中断 4 定时器T2 5using指定该中断服务程序要使用的工作寄存器组号,m为0-3。1) 定时器0中断服务程序:直接测频法时的程序,每50ms中断一次,当中断20次即定时1秒时,若STEP=0(代表直接测频)则执行中断中程序,禁止计数,禁止中断,此时取出计数器T1中的计数的数值,然后将T1的高位低位清零,为下一次计数做准备。具体实现如下:void INT_T0() interrupt 1/定时器0中断服务程序TH0=(65536-50000)/256;TL0=(65536-50

39、000)%256;times+;if(times=20&step=0)/测频TR0=TR1=0; /禁止计数IE=0; /禁止中断tmp=TH1*256+TL1;zz=tmp;TH1=TL1=0;times=0;t0_enable=1; 2) 外中断0中断服务程序:根据多周期和测周法的原理,会使用到外部信号的脉冲中断,来控制计数器的计数时间 。当有外部信号进入中断程序中,若STEP=1时则进行多周期中断程序。即终止TO和T1的计数,禁止中断,完成多周期的测量。若STEP=2则进行测周法。即当信号脉冲下降沿来的时候定时器T0开始计时,当下一个脉冲下降沿来的时候关闭计数器。同时T1在此期间对标准脉

40、冲进行计数。实现如下:else if(step=2)/测周if(flag=0)TR0=1;/开始计时ET0=1;times=0;flag=1;/设定标志else if(flag=1)TR0=0;/关闭定时器IE=0; /禁止中断flag=0;/设立标志ex0_enable=2; /显示数据3) 外中断1中断服务程序:当单片机闸门时间结束时,信号的下降沿来时,进入此中断,禁止外部中断,计数多周期的频率值。实现如下:void INT_X1() interrupt 2/外中断1中断服务程序IE=0; /禁止中断step=0; /跳出循环zz=-1;ex1_enable=1;t=0;4.5显示电路程序

41、传统的动态显示电路和静态显示电路都有其弊端行。例如传统动态显示会出现闪烁和亮度不足的缺点。而静态电路则线路复杂,成本高等缺点。本文采用MAX7219芯片,专门用来驱动八位LED显示的串行接口。它使用起来不论从电路的连接还是软件上的编程都较之传统的显示方法简单许多。它只需MCS-51提供三根线(DIN:串行数据输入端;CLK:移位脉冲输入端;LOAD:数据装载信号输入端)就可以将相关指令写入MAX7219里,进而实现数据的显示。首先需对MAX7219进行初始化设置,主要设置其扫描限制,译码模式,亮度和关断模式。其流程图如下:MAX7219驱动每个LED显示该字符测得频率值显示初始化取每个LED应

42、该显示的字符 仿真结果当输入为4Hz时,此时用的是直接测频法,仿真结果如下:图13 当输入频率为4Hz时的仿真结果图当输入频率为20Hz时,F代表多周期法测得频率,P表示直接测频测得的频率。仿真结果如下:图14 当输入频率为20Hz时多周期法仿真结果图图15 当输入20Hz频率时直接测频法的仿真结果图当输入为250Hz时,仿真结果如下:图16 当输入250Hz频率时多周期法仿真结果图图17 当输入250Hz时直接测频法仿真结果图当输入信号为1000Hz时,此时采用的是周期法,仿真结果如下:图18 当输入1000Hz时直接测频法仿真结果图当输入信号为10000Hz时,仿真结果如下:图19 当输入10000Hz时直接测频法仿真结果又测试了一组值进行分析:实际频率值1420100400100050001000031250频率计测得频率值141997(多)100(直)388(多)400100150031000531264绝对误差00131213514相对误差005%3%3%0.10%0.06%0.05%0.05%通过实际仿真测量发现存在了一些问题,当频率小于10HZ的时候,测得的数值误差很大,可能是外中断仿真时的错误,外中断捕捉不到实时的边沿触发引脚,造成一个周期中没能完成两次中断。同时也发现频率越大,测量的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1