
利用AT89S52微控制器的频率计。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
第1 页共27 页1概述频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1 秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响本文。数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。因此,数字频率计是一种应用很广泛的仪器电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。集成电路的类型很多,从大的方面可以分为模拟电路和数字集成电路2 大类。数字集成电路广泛用于计算机、控制与测量系统,以及其它电子设备中。一般说来,数字系统中运行的电信号,其大小往往并不改变,但在实践分布上却有着严格的要求,这是数字电路的一个特点。2系统的总体设计:2.1原理设计本频率计的设计以AT89S52 单片机为核心,利用它内部的定时/计数器完成待测信号周期/频率的测量。单片机AT89S52 内部具有2 个16 位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。在构成为定时器时,每个机器周期加1 (使用12MHz 时钟时,每1us 加1),这样以机器周期为基准可以用来测量时间间隔。在构成为计数器时,在相应的外部引脚发生从1 到0 的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入每个机器周期被采样一次,这样检测一次从1 到0的跳变至少需要2 个机器周期(24 个振荡周期) ,所以最大计数速率为时钟频率的1/24 (使用12MHz 时钟时,最大计数速率为500 KHz) 。定时/计数器的工作由相应的运行控制位TR 控制,当TR 置1 ,定时/计数器开始计数;当TR 清0 ,停止计数。设计综合考虑了频率测量精度和测量反应时间的要求。例如当要求频率测量结果为4 位有效数字,这时如果待测信号的频率为1Hz ,则计数闸门宽度必须大于1000s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法。当待测信号的频率大于等于2Hz 时,定时/ 计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,这时要满足频率测量结果为4 位有效数字,则计数闸门宽度大于1s 即可。当待测信号的频率小于2Hz 时,定时/ 计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。用方波作计数闸门,完全满足测量精度的要求。频率计的量程自动切换在使用计数方法实现频率测量时,这时外部的待测信号为定时/ 计数器的计数源,利用定时器实现计数闸门。频率计的工作过程为:首先定时/计数器T0 的计数寄存器设置一定的值,运行控制位TR0 置1,启动定时/ 计数器0;利用定时器0 来控制1S 的定时,同时定时/计数器T1 对外部的待第2 页共27 页测信号进行计数,定时结束时TR1 清0 ,停止计数;最后从计数寄存器读出测量数据,在完成数据处理后,由显示电路显示测量结果。在使用定时方法实现频率测量时,这时外部的待测信号通过频率计的予处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/ 计数器1 的输入脚。这时频率计的工作过程为:首先定时/ 计数器1 的计数寄存器清0 ,然后检测到方波的第二个下降沿是否加至定时/ 计数器的输入脚;当判定下降沿加至定时/计数器的输入脚,运行控制位TR0 置1 ,启动定时/计数器T0 对单片机的机器周期的计数,同时检测方波的第三个下降沿;当判定检测到第三个下降沿时TR0 清0 ,停止计数,然后从计数寄存器T0 读出测量数据,在完成数据处理后,由显示电路显示测量结果。测量结果的显示格式采用科学计数法,即有效数字乘以10 为底的幂。这里设计的频率计用4 位数码管显示测量结果。定时方法实现频率测量。定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。这样无论采用何种方式,只要完成一次测量即可,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。数字频率计的硬件框图如图2.1 所示。由此可以看出该频率计主要由八部分组成,分别是:(1)待测信号的放大整形电路因为数字频率计的测量范围为峰值电压在一定电压范围内的频率发生频率发生周期性变化的信号,因待测信号的不规则,不能直接送入FPGA 芯片中处理,所以应该首先对待测信号进行放大、降压、与整形等一系列处理。(2)分频电路将处理过的信号4 分频,这样可以将频率计的测量范围扩大4 倍。(3)逻辑控制控制是利用计数还是即时检测待测信号的频率。(4)脉冲计数/定时根据逻辑控制对待测信号计数或定时。将计数或定时得到的数据直接输入数据处理部分。第3 页共27 页(5)数据处理根据脉冲计数部分送过来的数据产生一个控制信号,送入脉冲定时部分,如果用计数就可以得到比较精确的频率,就将这个频率值直接送入显示译码部分。(6)显示译码将测量值转换成七段译码数据,送入显示电路。(7)显示电路通过4 个LED 数码管将测得的频率值显示给用户。(8)系统软件包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算术运算模块、浮点数到BCD 码转换模块。由于数据处理、脉冲计数/定时、逻辑控制和显示译码都是在单片机里完成的,所以我们可以把系统分为以下几个模块:数据处理电路、显示电路、待测信号产生电路、待测信号整形放大电路,电源电路。2.2主要开发工具和平台2.2.1原理图和印刷电路板图设计开发工具:PROTELDXPProtel DXP 是第一套完整的板卡级设计系统,真正实现在单个应用程序中的集成。设计从一开始的目的就是为了支持整个设计过程,Protel DXP 让你可以选择最适当的设计途径来按你想要的方式工作。Protel DXP PCB 线路图设计系图2.1 数字频率计的硬件框图显示译码待测信号的放大整形电路数据处理逻辑控制脉冲计数/定时显示电路待测波输入分频电路第4 页共27 页统完全利用了Windows XP 和Windows 2000 平台的优势,具有改进的稳定性、增强的图形功能和超强的用户界面。Protel DXP 是一个单个的应用程序,能够提供从概念到完成板卡设计项目的所有功能要求,其集成程度在PCB 设计行业中前所未见。Protel DXP 采用一种新的方法来进行板卡设计,使你能够享受极大的自由,从而能够使你在设计的不同阶段随意转换,按你正常的设计流量进行工作。Protel DXP 拥有:分级线路图设计、Spice 3f5 混合电路模拟、完全支持线路图基础上的FPGA 设计、设计前和设计后的信号线传输效应分析、规则驱动的板卡设计和编辑、自动布线和完整CAM 输出能力等。在嵌入式设计部分,增强了JTAG 器件的实时显示功能,增强型基于FPGA的逻辑分析仪,可以支持32 位或64 位的信号输入。除了现有的多种处理器内核外,还增强了对更多的32 位微处理器的支持,可以使嵌入式软件设计在软处理器, FPGA 内部嵌入的硬处理器, 分立处理器之间无缝的迁移。使用了Wishbone 开放总线连接器允许在FPGA 上实现的逻辑模块可以透明的连接到各种处理器上。引入了以FPGA 为目标的虚拟仪器,当其与LiveDesign-enabled 硬件平台NanoBoard 结合时,用户可以快速、交互地实现和调试基于FPGA 的设计,可以更换各种FPGA 子板,支持更多的FPGA 器件。2.2.2单片机程序设计开发工具:KEILC51keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统,和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件,然后分别有C51 及A51 编辑器编译连接生成单片机可执行的二进制文件(.HEX),然后通过单片机的烧写软件将HEX 文件烧入单片机内。32.2.3 单片机仿真软件:PROTEUSProteus 是目前最好的模拟单片机外围器件的工具。可以仿真51 系列、AVR,PIC 等常用的MCU 及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI 器件,部分IIC 器件,...) 其实proteus 与multisim 比较类似,只不过它可以仿真MCU!唯一的缺点,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型。使用keil c51 v7.50 + proteus 6.7 可以像使用仿真器一样调试程序,可以完全仿真单步调试,进入中断等各种调试方案。Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛第5 页共27 页盾和现象。3系统详细设计:3.1硬件设计3.1.1数据处理电路(1)中央处理模块的功能:直接采集待测信号,将分两种情况计算待测信号的频率:如果频率比较高,在一秒内对待测信号就行计数。如果频率比较低,在待测信号的一个周期内对单片机的工作频率进行计数。将得到的频率值通过显示译码后直接送入显示电路,显示给用户(2)电路需要解决的问题单片机最小系统板电路的组建,单片机程序下载接口和外围电路的接口。单片机最小系统板的组建:①单片机的起振电路作用与选择:单片机的起振电路是有晶振和两个小电容组成的。晶振的作用:它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。MCS-51 一般晶振的选择范围为1~24MHz,但是单片机对时间的要求比较高,能够精确的定时一秒,所以也是为了方便计算我们选择12MHz 的晶振。晶振两边的电容:晶振的标称值在测试时有一个“负载电容”的条件,在工作时满足这个条件,振荡频率才与标称值一致。一般来讲,有低负载电容(串联谐振晶体),高负载电容(并联谐振晶体)之分。在电路上的特征为:晶振串一只电容跨接在IC 两只脚上的,则为串联谐振型;一只脚接IC,一只脚接地的,则为并联型。如确实没有原型号,需要代用的可采取串联谐振型电路上的电容再并一个电容,并联谐振电路上串一只电容的措施。单片机晶振旁的2 个电容是晶体的匹配电容,只有在外部所接电容为匹配电容的情况下,振荡频率才能保证在标称频率附近的误差范围内。最好按照所提供的数据来,如果没有,一般是30pF 左右。太小了不容易起振。这里我们选择30pF 的瓷片电容。我们选择并联型电路如图3.1 所示。②单片机的复位电路:2 1Y112MzC230pFC130pFXTAL1XTAL2图3.1第6 页共27 页影响单片机系统运行稳定性的因素可大体分为外因和内因两部分:外因:即射频干扰,它是以空间电磁场的形式传递在机器内部的导体(引线或零件引脚)感生出相应的干扰,可通过电磁屏蔽和合理的布线/器件布局衰减该类干扰;电源线或电源内部产生的干扰,它是通过电源线或电源内的部件耦合或直接传导,可通过电源滤波、隔离等措施来衰减该类干扰。内因:振荡源的稳定性,主要由起振时间频率稳定度和占空比稳定度决定起振时间可由电路参数整定稳定度受振荡器类型温度和电压等参数影响复位电路的可靠性。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。为了方便我们选择RC 复位电路可以实现上述基本功能如图3.2 所示。但是该电路解决不了电源毛刺(A 点)和电源缓慢下降(电池电压不足)等问题而且调整RC 常数改变延时会令驱动能力变差。增加Ch 可避免高频谐波对电路的干扰。复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。在选择元器件大小时,正脉冲有效宽度 2 个机器周期就可以有效的复位,一般选择C3 为0.1uF 的独石电容,R1 为1K 的电阻,正脉冲有效宽度为:ln10*R1*C3=230>2,即可以该电路可以产生有效复位。(3)程序下载线接口:AT89S52 自带有isp 功能,ISP 的全名为In System Programming,即在线编程通俗的讲就是编MCU 从系统目标系统中移出在结合系统中一系列内部的硬件资源可实的远程编程。ISP 功能的优点:①在系统中编程不需要移出微控制器。②不需并行编程器仅需用P15,P16 和P17,这三个IO 仅仅是下载程序的时候使用,并不影响程序的使用。③结合上位机软件免费就可实现PC 对其编程硬件电路连接简单如图3.3 所示。104C31KR1S1VCCD11N4007RESETCh0.1uF图3.2 复位电路第7 页共27 页系统复位时,单片机检查状态字节中的内容。如果状态字为0,则转去0000H地址开始执行程序这是用户程序的正常起始地址。如果状态字不0, 则将引导向量的值作为程序计数器的高8 位,低8 位固定为00H,若引导向量为FCH,则程序计数器内容为FC00H 即程序转到FC00H 地址开始执行而ISP 服务程序就是从,FC00H 处开始的那么也就是进入了ISP 状态了,接下来就可以用PC 机的ISP 软件对单片机进行编程了。(4)去耦电容好的高频去耦电容可以去除高到1GHZ 的高频成份。陶瓷片电容或多层陶瓷电容的高频特性较好。设计印刷线路板时,每个集成电路的电源,地之间都要加一个去耦电容。去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电路开门关门瞬间的充放电能;另一方面旁路掉该器件的高频噪声。数字电路中典型的去耦电容为0.1uf 的去耦电容有5nH 分布电感,它的并行共振频率大约在7MHz 左右,也就是说对于10MHz 以下的噪声有较好的去耦作用,对40MHz 以上的噪声几乎不起作用。1uf,10uf 电容,并行共振频率在20MHz 以上,去除高频率噪声的效果要好一些。在电源进入印刷板的地方和一个1uf 或10uf 的去高频电容往往是有利的,即使是用电池供电的系统也需要这种电容。每10 片左右的集成电路要加一片充放电电容,或称为蓄放电容,电容大小可选10uf。最好不用电解电容,电解电容是两层溥膜卷起来的,这种卷起来的结构在高频时表现为电感,最好使用胆电容或聚碳酸酝电容。去耦电容值的选取并不严格,可按C=1/f 计算;即10MHz 取0.1uf,对微控制器构成的系统,取0.1~0.01uf 之间都可以。从电路来说,总是存在驱动的源和被驱动的负载。如果负载电容比较大,驱动电路要把电容充电、放电,才能完成信号的跳变,在上升沿比较陡峭的时候,电流比较大,这样驱动的电流就会吸收很大的电源电流,由于电路中的电感,电阻(特别是芯片管脚上的电感,会产生反弹),这种电流相对于正常情况来说实际上就是一种噪声,会影响前级的正常工作。这就是耦合。去藕电容就是起到一个电池的作用,满足驱动电路电流的变化,避免相互间的耦合干扰。旁路电容实际也是去藕合的,只是旁路电容一般是指高频旁路,也就是给高频的开关噪声提高一条低阻抗泄防途径。高频旁路电容一般比较小,根据谐振频率一般是0.1u,0.01u 等,而去耦合电容一般比较大,是10u 或者更大,依据电路中分布参数,以及驱动电流的变化大小来确定。去耦和旁路都可以看作滤波。正如ppxp 所说,去耦电容相当于电池,避免1 23 45 67 89 10P6P17P16RESETP15GNDGNDVCC图3.3 程序下载线接口第8 页共27 页由于电流的突变而使电压下降,相当于滤纹波。具体容值可以根据电流的大小、期望的纹波大小、作用时间的大小来计算。去耦电容一般都很大,对更高频率的噪声,基本无效。旁路电容就是针对高频来的,也就是利用了电容的频率阻抗特性。电容一般都可以看成一个RLC 串联模型。在某个频率,会发生谐振,此时电容的阻抗就等于其ESR。如果看电容的频率阻抗曲线图,就会发现一般都是一个V 形的曲线。具体曲线与电容的介质有关,所以选择旁路电容还要考虑电容的介质,一个比较保险的方法就是多并几个电容。去耦电容在集成电路电源和地之间的有两个作用:一方面是本集成电路的蓄能电容,另一方面旁路掉该器件的高频噪声。数字电路中典型的去耦电容值是0.1μF。这个电容的分布电感的典型值是5μH。0.1μF 的去耦电容有5μH 的分布电感,它的并行共振频率大约在7MHz 左右,也就是说,对于10MHz 以下的噪声有较好的去耦效果,对40MHz 以上的噪声几乎不起作用。1μF、10μF 的电容,并行共振频率在20MHz 以上,去除高频噪声的效果要好一些。每10 片左右集成电路要加一片充放电电容,或1 个蓄能电容,可选10μF 左右。最好不用电解电容,电解电容是两层薄膜卷起来的,这种卷起来的结构在高频时表现为电感。要使用钽电容或聚碳酸酯电容。去耦电容的选用并不严格,可按C=1/F,即10MHz 取0.1μF,100MHz 取0.01μF,电路图如图3.4 所示。⑸单片机与外界的接口显示电路的段选使用P0 口,P0 口是属于TTL 电路,不能靠输出控制P0 口的高低电平,需要上拉电阻才能实现。由于单片机不能直接驱动4 个数码管的显示,需要数码管的驱动电路,驱动电路采用NPN 型的三极管组成,即上拉电阻又有第二个作用,驱动晶体管,晶体管又分为PNP 和NPN 管两种情况:对于NPN,毫无疑问NPN 管是高电平有效的,因此上拉电阻的阻值用2K——20K 之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于数码管负载,由于发管电流很小,因此上拉电阻的阻值可以用20k 的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K 的。对于PNP管,毫无疑问PNP 管是低电平有效的,因此上拉电阻的阻值用100K 以上的就行了,且管子的基极必须串接一个1~10K 的电阻,阻值的大小要看管子集电极的负载是什么,对于数码管负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k 的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。与外界的信号交换接口,电路图如图3.5。104CK11104CK12104CK13104CK14VCC图3.4 去耦电容第9 页共27 页数码管的段选通过P00~P07 口来控制的。数码管的位选通过P20~P23 口来控制的。计算待测信号的频率通过计数器1 来完成的所有待测信号解答计数器的T1口上,即P3.5。⑹单片机的选型:AT89SC52 和AT89SS52 最主要的区别在于下载电压,AT89SC52 单片机下载电压时最小为12V,而AT89S52 仅在5V 电压下就可以下载程序了,而且AT89S52支持ISP,即在线编程。为了使用方便,在本系统中我们使用AT89S52 单片机。①AT89S52主要性能与MCS-51 单片机产品兼容。8K 字节在系统可编程Flash 存储器。l 1000 次擦写周期。全静态操作:0Hz~33Hz。VCC1 2YK130pFCK130pFCK2VCCP00P01P02P03P04P05P06P07P20P21P22P23P15P16P17123456789PK1P00P01P02P03P04P05P06P07P20P21P22P23P00P01P02P03P04P05P06P07P1.0/T2 1P1.1/T2EX 2P1.2/ECI 3P1.3/CEX0 4P1.4/CEX1 5P1.5/CEX2 6P1.6/CEX3 7P1.7/CEX4 89 RST10 P3.0/RxD11 P3.1/TxD12 P3.2/INT013 P3.3/INT114 P3.4/T015 P3.5/T116 P3.6/WR17 P3.7/RD18 XTAL219 XTAL120 VSSP2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27P2.7/A15 2829 PSEN30 ALE/PROG31 EA/VPPP0.7/AD7 32 P0.6/AD6 33 P0.5/AD5 34 P0.4/AD4 35 P0.3/AD3 36 P0.2/AD2 37 P0.1/AD1 38 P0.0/AD0 39VCC 40UK1AT89S52图3.5 单片机与外界接口第10 页共27 页三级加密程序存储器。32 个可编程I/O 口线。三个16 位定时器/计数器。八个中断源。全双工UART 串行通道。低功耗空闲和掉电模式。掉电后中断可唤醒。看门狗定时器。双数据指针。掉电标识符。②功能特性描述:AT89S52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能: 8k 字节Flash,256 字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6 向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止R8 位微控制器8K 字节在系统可编程FlashP0 口:P0 口是一个8 位漏极开路的双向I/O 口。作为输出口,每位能驱动8 个TTL 逻辑电平。对P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在flash 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和P1.2 分别作定时器/计数器2 的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash 编程和校验时,P1 口接收低8 位地址字节。引脚号第二功能P1.0 T2(定时器/计数器T2 的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2 的捕捉/ 重载触发信号和方向控制) P1.5 MOSI ( 在系统编程用) P1.6MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16 位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用第11 页共27 页中,P2 口使用很强的内部上拉发送1。在使用8 位地址(如MOVX @RI)访问外部数据存储器时,P2 口输出P2 锁存器的内容。在flash 编程和校验时,P2 口也接收高8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为AT89S52 特殊功能(第二功能)使用,如下表所示。在flash 编程和校验时,P3 口也接收一些控制信号。引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0 外部输入)P3.5 T1(定时器1外部输入)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器写选通)。RST: 复位输入。晶振工作时,RST 脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,LE 脉冲将会跳过。如果需要,通过将地址为8EH的SFR 的第0 位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0 位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND。为了执行内部程序指令,EA 应该接VCC。在flash 编程期间,EA 也接收12 伏VPP 电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。③特殊功能寄存器特殊功能寄存器(SFR)的地址空间映象如表1 所示。并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2 和表3 所示),寄存器对RCAP2H 和RCAP2L 是定时器2 的捕捉/自动重载寄存器。中断寄存器:各中断允许位在IE 寄存器中,六个中断源的两个优先级也可在IE中设置。3.1.2显示电路LCD 与LED 的区别。第12 页共27 页LED 仅仅是由8 个led 灯组成的数码显示器件,电路简单,操作容易。LCD 是有点阵组成的显示器件,该器件电路和软件复杂,但是交互性好。该系统展示给用于的数据为频率值,用LED 数码管显示即可。LED 数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2 位、4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。① 静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O 端口进行驱动,或者使用如BCD 码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O 端口多,如驱动5 个数码管静态显示则需要5×8=40 根I/O 端口来驱动,要知道一个89S51 单片机可用的I/O 端口才32 个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。② 动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8 个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。由于我们使用的FPGA 芯片的型号为EPF10K10,有足够的IO 口分别去控制数码管的段选。这里我们采用动态显示方式。由于FPGA 的IO 口没有足够的驱动能力去驱动数码管,所以需要数码管的驱动电路,该驱动电路我们选择由三极管组成的电路,该电路简单,软件容易实现。其中一个数码管的驱动电路图如图3.6 所示。数码管为共阴极,当CS1=1 时,即三极管Q9 被饱和导通,则数码管的公共极被间接接地,数码管被选中,数据将在该管上显示,当CS=0 时,三极管Q9被截至,则数码管的公共极被没有接地,即使CSA,CSB,CSC,CSD,CSE,第13 页共27 页CSF,CSG,CSDP 被送入数据也不会有显示。CSA,CSB,CSC,CSD,CSE,CSF,CSG,CSDP 分别为数码管的位选,哪一位为“1”,即相应的三极管饱和导通,则相应的数码管段被点亮。“0”为截止。相应的数码管段灭,这样数码管就有数字显示出来。我们在该系统使用了4 个数码管,使用动态显示,即通过片选,是每个数码管都亮一段时间,不断循环扫描,由于人的眼睛有一段时间的视觉暂留,所以给人的感觉是每个数码管同时亮的,这样4 个数码管就把4 位十进制数据就显示出来了。数码管驱动电路:由于单片机芯片没有足够的能力驱动4 个数码管,因此需要增加数码管驱动电路。驱动电路我们可以选择由三极管组成的电路,该电路简单,程序容易实现.3.1.3待测信号产生电路可变基准发生器模块的功能为:主要用于仿真外界的周期性变化的信号,用于电路的测试,对频率的精度没有要求,只要能产生周期性变化的信号即可。该部分不为频率计的组成部分,再加上为了节省成本我们使用LM555 芯片组建的多谐振振荡器电路电路如图3.7 所示,电容C,电阻RA 和RB 为外接元件,其工作原理为接通电源后,5V 电源经RA 和RB 给电容C 充电,由于电容上电压不能突变,电源刚接通时,555 内部比较器A1 输出高电平,A2 输出低电平,即RD=1,SD=0,基于RS 触发器置“1”,输出端Q 为高电平,此时,Q=0,使A 12 f3 g4 e5 dA 68 c7 DP9 b10 aDS1Q1NPNQ2NPNQ3NPNQ4NPNQ5NPNQ6NPNQ7NPNQ8NPNQ9NPNVCC VCCVCC VCCVCC VCCVCC VCCA BCCDDEEFFGGDPDPAB100R1100R2100R3100R4100R5100R6100R7100R8100R91 2 3 4 5 6 7 8 9P1CS1CSACSACSBCSBCSCCSCCSDCSDCSECSE CSFCSFCSGCSGCSDPCSDP图3.6 显示电路第14 页共27 页内部放电管截止。当电容两端电压Vc 上升到大于5V 的电压的三分之一时,RD=1,SD=1,基本RS 触发器状态不变,即输出端Q 仍为高电平,当电容两端电压Vc 上升到略大于2*5V/3 是,RN=0,SD=1,基本RS 触发器置0,输出端Q 为低电平,这时Q=1,使内部放电管饱和导通。于是电容C 经RB 和内部的放电管放电,电容两端电压按指数规律减小。当电容两端电压下降到略小于5V 电压的三分之一时,内部比较器A1 输出高电平,A2 输出低电平,基本RS 触发器置1,输出高电平,这时,Q=0,内部放电管截止,于是电容结束放电,如此循环不止,输出端就得到了一系列矩形脉冲。如图3.8 所示。电路参数的计算:为了使Q 端输出频率可变,RB 用电位器来取代。电容选择如果选择105的独石电容,即C=1uF= uF ,RA选1K的电101062 TRIG OUT 34 RSTCVOL5T6 THR7 DISC8 VCC GND1U1LM555CJRACVCCRB5VVCC图3.7 待测信号产生电路图3.8 LM555 工作时电流变化第15 页共27 页阻,RB 选择5K的电位器,由公示f =1.443/RA+RBC计算可得:当RB=0时,f=1.443KHz,当RB=5K 时, f=240Hz, 由此可得, 该电路的输出频率范围为:240~1443(Hz)。元器件的简介LM555/LM555C 系列是美国国家半导体公司的时基电路。我国和世界各大集成电路生产商均有同类产品可供选用,是使用极为广泛的一种通用集成电路。LM555/LM555C 系列功能强大、使用灵活、适用范围宽,可用来产生时间延迟和多种脉冲信号,被广泛用于各种电子产品中。555 时基电路有双极型和CMOS 型两种。LM555/LM555C 系列属于双极型。优点是输出功率大,驱动电流达200mA。而另一种CMOS 型的优点是功耗低、电源电压低、输入阻抗高,但输出功率要小得多,输出驱动电流只有几毫安。另外还有一种双时基电路LM556,14 脚封装,内部有两个相同的时基电路单元。特性简介:直接替换SE555/NE555。定时时间从微秒级到小时级。可工作于无稳态和单稳态两种方式。可调整占空比。输出端可接收和提供200mA 电流。输出电压与TTL 电平兼容。温度稳定性好于0.005%/℃。应用范围精确定时。脉冲发生连续定时频率变换脉冲宽度调制脉冲相位调制电路特点:LM555 时基电路内部由分压器、比较器、触发器、输出管和放电管等组成,是模拟电路和数字电路的混合体。其中6 脚为阀值端(TH),是上比较器的输入。2 脚为触发端( TR ) , 是下比较器的输入。3 脚为输出端(OUT),有0 和1 两种状态,它的状态由输入端所加的电平决定。7 脚为放电端(DIS),是内部放电管的输出,它有悬空和接地两种状态,也是由输入端的状态决定。4 脚为复位端(R),叫上低电平(< 0.3V)时可使输出端为低电平。5 脚为控制电压端(CV ),可以用它来改变上下触发电平值。8 脚为电源(VCC),1 脚为地(GND)。一般可以把LM555 电路等效成一个大放电开关的R-S 触发器。这个特殊的触发器有两个输入端:阀值端(TH)可看成是置零端R,要求高电平;触发端(TR)可看成是置位端S,低电平有效。它只有一个输出端OUT,OUT 可第16 页共27 页等效成触发器的Q 端。放电端(DIS)可看成由内部放电开关控制的一个接点,放电开关由触发器的反Q 端控制:反Q=1 时DIS 端接地;反Q=0 时DIS 端悬空。此外这个触发器还有复位端R,控制电压端CV,电源端VCC和接地端GND。这个特殊的R-S 触发器有两个特点:(1)两个输入端的触发电平要求一高一低:置零端R 即阀值端TH 要求高电平,而置位端S 即触发端TR 则要求低电平。(2)两个输入端的触发电平,也就是使它们翻转的阀值电压值也不同,当CV 端不接控制电压是,对TH(R) 端来讲,> 2/3VCC 是高电平1,< 2/3VCC 是低电平0;而对TR(S)端来讲,> 1/3VCC 是高电平1,<1/3VCC 是低电平0。如果在控制端CV 加上控制电压VC,这时上触发电平就变成VC 值,而下触发电平则变成1/2VC。可见改变控制端的控制电压值可以改变上下触发电平值。3.1.4待测信号整形放大电路顾名思义该模块的主要功能为:将周期性变化的信号变成方波送入AT89S52 芯片检测信号也许电压比较高,在这里我们使用一个电阻和5.1V 的稳压管组成的一个降压电路。如果输入的信号功率比较低或输入电阻比较低需要电压跟随器提高功率或输入电阻。然后经过一个电压比较器将不规则的周期性变化的信号变成方波送入FPGA 处理,电路如图3.9 所示。电压跟随器,顾名思义,就是输出电压与输入电压是相同的,就是说,电压跟随器的电压放大倍数恒小于且接近1。电压跟随器的显著特点就是,输入阻抗高,而输出阻抗低,一般来说,输入阻抗要达到几兆欧姆是很容易做到的。输出阻抗低,通常可以到几欧姆,甚至更低。在电路中,电压跟随器一般做缓冲级及隔离级。因为,电压放大器的输出阻抗一般比较高,通常在几千欧到几十千欧,如果后级的输入阻抗比较小,那么信号就会有相当的部分损耗在前级的输出电阻中。在这个时候,就需要电压跟随器来从中进行缓冲。起到承上启下的作用。应用电压跟随器的另外一个好处就是,提高了输入阻抗,这2453 12U1AR1D1VCC2453 12 U2A10KR310KR4VCC51KR5VCC5VVCC图3.9 待测信号整形放大电路第17 页共27 页样,输入电容的容量可以大幅度减小,为应用高品质的电容提供了前提保证。电压跟随器的另外一个作用就是隔离,在HI-FI 电路中,关于负反馈的争议已经很久了,其实,如果真的没有负反馈的作用,相信绝大多数的放大电路是不能很好的工作的。但是由于引入了大环路负反馈电路,扬声器的反电动势就会通过反馈电路,与输入信号叠加。造成音质模糊,清晰度下降,所以,有一部分功放的末级采用了无大环路负反馈的电路,试图通过断开负反馈回路来消除大环路负反馈的带来的弊端。但是,由于放大器的末级的工作电流变化很大,其失真度很难保证。电压比较器是集成运放非线性应用电路,他常用于各种电子设备中,它将一个模拟量电压信号和一个参考固定电压相比较,在二者幅度相等的附近,输出电压将产生跃变,相应输出高电平或低电平。比较器可以组成非正弦波形变换电路及应用于模拟与数字信号转换等领域。图3.10 所示为一最简单的电压比较器原理图,UR 为参考电压,加在运放的同相的输入端,输入电压ui 加在反相的输入端。电路图传输特性当ui<UR 时,运放输出高电平,稳压管Dz 反向稳压工作。输出端电位被其箝位在稳压管的稳定电压UZ,即uO=UZ。当ui>UR 时,运放输出低电平,DZ 正向导通,输出电压等于稳压管的正向压降UD,即uo=-UD 因此,以UR 为界,当输入电压ui 变化时,输出端反映出两种状态,高电位和低电位。表示输出电压与输入电压之间关系的特性曲线,称为传输特性。图3-1(b)为(a)图比较器的传输特性。常用的电压比较器有过零电压比较器、具有滞回特性的过零比较器、滞回电压比较器,窗口(双限)电压比较器。这里我们使用LM339 构成各种电压比较器。3.1.5分频电路⑴频率的功能为了提高系统的可测信号的频率,添加分频器可以扩大频率的测量范围。⑵电路的选择与比较分频电路可以使用CPLD 和74LS74 完成。CPLD 和74LS74 也可以实现高速频率的分频工作,但是一般情况CPLD 用于多分频的,如10 分频以上。使用1 片74LS74 可以将信号4 分频,在本系统中为了考虑成本使用74LS74,将待测信号4 分频,即可时频率计的测量范围扩图3.10 电压比较器原理第18 页共27 页大四倍,电路图如图3.11 所示。74LS74 是两个D 触发器组成的,仿真如图3.12 所示。3.1.65V电源产生电路该模块的主要功能是:为电路中的所有的元器件提供电源。在选择5V 稳压芯片时,可以选择5.1V 稳压管或LM7805 集成芯片。由于的不考虑负载的情况下,两种选择能得到同样的效果,但是,加上许多负载时,5.1V 稳压管的输出电压会随着后面负载的输入电阻的变化而变化,如果电源的输出电阻比较大,而负载的输入电阻比较小的时候,负载的变化将会引起电源输出电压的很大的变化,由于LM7805 的输出电阻非常的大,接近于无穷大,所以在制作电源时使用LM7805 在性能上将会比5.1V 稳压管好。即使负载的功率很高,我们也可以通过加入扩流电路使电源提高输出功率。电路的选择与特点:二极管的选择:选择1N400 系列中的1N4007,1N4007 的反向截止电压为1000V,对于我们电路输入整流桥之前就已经通过变压器使220V 市电变为9V的交流电,1N4007 有足够的能力使9V 电压反向截至。通过4 个二极管组成的整流桥后虽然把有正有负的交流电变成了全是正的角流电,这样的交流电即使有效电压为正5V 的,也不能把这样的电压给FPGA 和单片机等芯片供电,需要把这样的电压继续整流变成比较平稳的直流电。所以要经过电容初步滤波和整43 CLK D 21Q 5Q 6CLRPRUFP1A1011 CLK D 1213Q 9Q 8CLRPRUFP1BVCCVCCVCCVCC图3.11 分频电路图3.12 分频电路仿真第19 页共27 页流。为了电容两端的电压不支持突变,当外界电压高于电容两端电压时,外界就向电容充电,当外界电压低于电容电压时,电容就要向外界放电,通过电容使电压保持在一个恒定的值。我们在电路中使用的两个不同的电容为:C4、C5,C5 使用的是电解质电容,因为一般情况下电解质电容容量比较大,存储电量比较多,在滤波电路中多用于高频滤波,这里我们使用的是容量100uF,最高电压为25V 的电解质电容。C4 使用的是独石电容,容量比电解质的小,一般在uF 以下,多用于低频滤波。这里我们使用比较常用的104,即0.1uF。由Q1,Q2,Q3 组成的是过流保护的扩大输出电流的电路。Q2 的输出电流I0增加为I0=I01+I02。正常时,Q1,Q3 截至,电阻R1 上产生压降使T2 导通,若I0 过流,I01 增加,限流电阻R3 上压降增大使T3 导通,导致T1 趋于饱和,T2 管基-射间电压|VBE1|降低,限制了功率管T2 的电流IC1,保护功率管不致因过流而损坏。将电容输出的电压送入LM7805 芯片继续稳压整流,使电压变成FGPA、单片机可以接收的5V 电源。9V 的交流电输入到4 个二极管组成的整流桥,通过整流桥后,有效电压为输入电压的0.9 倍,即:0.99 8.1V ,当通过接着的两个电容时,这时的电压为输入电压的1.2 倍,即: 。由于LM7805 要求输入电压高于91.2 10.8V 标准输出电压2V,由于使用的是7805,输出电压为标准的正5V,即输入电压要高于5 2 7(V ),通过整流桥和电容之后的电压为10.8V>7V,由此可以看出LM7805 将正常工作,输出电压为5V。电路如图3.10 所示。元器件的选型与电路参数的计算:LM7805 芯片简介:外形图及引脚排列H 7805 系列为3 端正稳压电路,TO-220 封装,能提供多种固定的输出电压,应用范围广。内含过流、过热和过载保护电路。带散热片时,输出电流可达1A。虽然是固定稳压电路,但使用外接元件,可获得不同的电压和电流。主要特点:1 IN3OUT 2GNDU1LM7805Q1PNPQ2PNPQ3 NPNR1R2R30.33uFC10.1uFC2D1D21N4007D3D40.1uFC410UFC5125V图3.10第20 页共27 页输出电流可达2A。输出电压有:5V。过热保护。短路保护。输出晶体管SOA 保护。7805 的功能框图如图3.11:注意:输入电压,即为纹波电压中的低值点,都必须高于所需输出电压2V 以上。当稳压器远离电源滤波器时,要求用C1。CO 可改善稳定性和瞬态响应。该模块的不足和对进一步完善提出建议:该模块的不足:转换的效率低:线性稳压器的效率直接与其调整管所消耗的功率有关。调整管的功耗等于电流×(输入电压-输出电压),由此可见,有些情况下调整管会产生较大损耗。例如,负载为1A 时,将10V 的电压降至5V 输出,线性稳压器的功耗为5W。效率将低于50%。该电路将会很耗电。散热问题:由上可知线性稳压器的功耗将在高于总电路的50%,例如,我们的电路功率为10W,那么线性稳压器的功率将会高于5W,这5W 的99%将通过热量散失到外界,如果散热管理不适当将会使整个系统在高温下工作,影响整个系统的性能之外,也严重的影响着整个系统的寿命。提出建议:线性稳压器的低效率迫使寻求新的改进方案,开关电源引起人们的关注。根据开关电源的工作原理,在不同负载和电压下,一个设计良好的开关电源的效率可达90%甚至更高。这相比线性稳压器,效率提高了40%。通过直观的比较,开关电源降压的优势便体现出来了,其他开关电源的拓扑结构同样具有相近或是更高的效率。开关电源设计不仅仅具有高效率这一主要优势,由于功耗的降低还带来许多直接的好处。例如,与低效率的竞争产品相比,开关电源的散热片面积大大减小。降低了对热管理的要求;而且更重要的是,由于器件不会工作在低效的高温环境中,大大提高了器件的可靠性,进而延长工作寿命。图3.11第21 页共27 页3.2软件设计3.2.1编程语言的选择:汇编和C 语言汇编语言(Assembly Language)是面向机器的程序设计语言在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。C 语言发展如此迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C 语言加上一些汇编语言子程序, 就更能显示C 语言的优势了,象PC- DOS 、WORDSTAR 等就是用这种方法编写的。归纳起来C 语言具有下列特点:①C 是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。② C 是结构式语言结构式语言的显著特点是代码及数据的分隔化, 即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C 语言是以函数形式提供给用户的, 这些函数可方便的调用,并具有多种循环、条件语句控制程序流向, 从而使程序完全结构化。③C 语言功能齐全C 语言具有各种各样的数据类型, 并引入了指针概念, 可使程序效率更高。另外C 语言也具有强大的图形功能, 支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的。④C 语言适用范围大C 语言比汇编更容易编写和移植,虽然该程序对时间要求比较严格但是如果我们使用定时器的话对,这样就既可以解决用延时带来的不精确的问题,也提高了编写程序的效率。3.2.2程序流程图:⑴主程序该计数器时通过计数或定时来完成计算待测信号的频率的,所以频率的计算都是在中断里完成的。主函数的流程图如图3.12 为:第22 页共27 页检测一个信号首先在1 秒钟中内对待测频率计数,通过定时器0 来定时1 秒。通过计数器1 对待测频率计数,通过这种方法检测出待测信号的频率,如果频率小于2 的话,通过这种方法检测出来的频率精度会很低,所以如果频率低于2Hz,用计数器1 来检测两个下降沿,在两个下降沿内,运行定时器0,通过这种方法计算频率比较低的信号。两种方案的选择由变量flag 控制,对一个未知频率信号,我们先假设该频率高于2Hz,当用第一种方法检测出来的值小于2Hz,我通过对变量的控制执行第二种方案。定时器/计数器0 和定时器/计数器1 的主要作用:首先当待测信号送入到频率计时,频率计将该信号作为频率大于2Hz 出来,定时器/计数器0 设为定时模式,定时器/计数器1 设为计数模式。定时器0 的作用为定时1 秒,在这一秒里,计数器1 对待测信号计数。由此可以测出待测的频图3.12 主程序流程图第23 页共27 页率值,当检测到的频率值小于2Hz 时,频率计自动转换到对低频信号处理模式,定时器1 的作用将变为自动检测待测频率的下降沿,定时器0 的作用是在相邻的两个下降沿里计时。由此可以测出频率小于2 的信号。定时器0 的程序流程图如图3.13。计数器1 的程序流程图如图3.14 所示。如图3.13 定时器0 中断流程序图3.14 定时器1 中断流程图YN第24 页共27 页打开Keil C,单击“工程”菜单中的“目标Target1 属性”,跳出一个设置“目标Target1 属性”的对话框。打开“输入”页,在产生执行文件的框里,把“E 生成HEX文件”前的钩打上,重新编译,即工程所在的文件夹里会产生一个HEX 格式的文件。用keil C 即可产生的HEX 的二进制文件,既可以在PROTES 中仿真使用,也可以下载到单片机中运行。3.3电路板的制作3.3.1元器件的封装在设计装配方式之前,要求将系统的电路基本定型,同时还要根据整机的体积以及机壳的尺寸来安排元器件在印刷电路板上的装配方式。具体做这一步工作时,可以先确定好印刷电路板的尺寸,然后将元器件配齐,根据元器件种类和体积以及技术要求将其布局在印刷电路板上的适当位置。可以先从体积较大的器件开始,如电源变压器、磁棒、全桥、集成电路、三极管、二极管、电容器、电阻器、各种开关、接插件、电感线圈等。待体积较大的元器件布局好之后,小型及微型的电子元器件就可以根据间隙面积灵活布配。二极管、电感器、阻容元件的装配方式一般有直立式、俯卧式和混合式三种。①直立式。电阻、电容、二极管等都是竖直安装在印刷电路板上的。这种方式的特点是:在一定的单位面积内可以容纳较多的电子元件,同时元件的排列也比较紧凑。缺点是:元件的引线过长,所占高度大,且由于元件的体积尺寸不一致,其高度不在一个平面上,欠美观,元器件引脚弯曲,且密度较大,元器件之间容易引脚碰触,可靠性欠佳,且不太适合频率较高的电路采用。②俯卧式。二极管、电容、电阻等元件均是俯卧式安装在印刷电路板上的。这样可以明显地降低元件的排列高度,可实现薄形化,同时元器件的引线也最短,适合于较高工作频率的电路采用,也是目前采用得最广泛的一种安装方式。③混合式。为了适应各种不同条件的要求或某些位置受面积所限,在一块印刷电路板上,有的元器件采用直立式安装,也有的元器件则采用俯卧式安装。这受到电路结构各式以及机壳内空间尺寸的制约,同时也与所用元器件本身的尺寸和结构形式有关,可以灵活处理。1、单片机:单片机使用双列直插式DIP 封装,40 个引脚,每个引脚的距离为100mil。封装模型如图3.18 所示:图3.18 单片机PCB 模型第25 页共27 页2、数码管的封装:数码管的封装采用LEDDIP-10,但是因为每个厂家生产出来的段选并不是都是相同的,但是没必要重新设计数码管的封装,仅仅检查引脚分配即可,在本设计使用的数码管引脚分配如图3.19 所示。其他元器件封装:电阻AXIAL无极性电容RAD电解电容RB电位器VR二极管DIODE三极管、场效应管TO电源稳压块78 系列TO-220单排多针插座SIP双列直插元件DIP晶振XTAL13.5软硬件结合测试当给电板通电时,LM555 的3 号输出引脚的电压为2.5V 左右。说明输出脉冲的占空比为50%。通过通过示波器查看波形,和理论的波形一致,通过调节电位器可以改变输出波形的频率。图3.19 元器件引脚映射第26 页共27 页数码管显示当调节电位器时,数码管的显示也是在理论范围只内的。第27 页共27 页致谢在本论文结束之际,回想本科阶段的学习和生活,感慨甚多,毕业课题和论文是在导师郑老师的指导下完成的,同时也要感谢自动化教研室的老师,感谢他们的耐心指导。感谢所有帮助和支持过我的人。郑老师对论文的进展付出了大量的汗水和心血,并给予了许多具体的实验指导方案,在论文的最后成稿中提出了许多宝贵的意见,从而使论文的质量得以提高,从郑老师身上,我学到的不仅是做学问、搞科研的态度、方法和毅力,而且更多的是做人的准则。借此论文完成之际,向郑老师表示深深的谢意!最后,再一次向关心和帮助我的各位表示我衷心的感谢和深深的敬意!
全部评论 (0)


