放大整形模块 由于输入的信号可以是正弦波、三角波、矩形波等,而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。在整形之前由于不清楚被测信号的强弱的情况。所以在通过整形之前通过放大衰减处理。 本文采用单管共射极放大电路对信号进行放大和再由非门74LS00构成施密特触发器对输出的信号进行整形成矩形波后再次输出。 3.2.1 与非门74LS00 74LS00 为四组2 输入端与非门(正逻辑),共有 54/7400、54/74H00、54/74S00、54/74LS00 Y=(AB)非
3.2.2 放大整形模块原理图 此模块原理图: 图5 放大整形电路原理图 3.3 分频模块 本文采用12MHZ的时钟,最大计数速率为500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。 为了测量提高精度,当被测信号频率值较低时,直接使用单片机计数器计数测得频率值;当被测信号频率值较高时采用外部十分频后再计数测得频率值。这两种情况使用T1(P3.5)和TO(P3.4,程序定义为十分频接入口)计数选择,由单片机先简单测得被测信号是高频信号还是低频信号,然后根据信号频率值的高低进行通道的相应选择,继而测得相应频率值。 因此此模块主要包括分频器74LS161、与非门74LS00。 3.3.1 分频器74LS161芯片 74LS161是常用的四位二进制可预置的同步加法计数器。 表4 74161的功能表 从表中可以知道,当清零端RD=“0”,计数器输出Q3、Q2、Q1、Q0立即为全“0”,这个时候为异步复位功能。当RD=“1”且LD=“0”时,在CP信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3,D2,D1,D0的状态一样,为同步置数功能。而只有当RD=LD=EP=ET=“1”、CP脉冲上升沿作用后,计数器加1。74LS161还有一个进位输出端CO,其逻辑关系是CO= Q0·Q1·Q2·Q3·CET。合理应用计数器的异步清零功能和同步计数功能,一片74LS161可以组成16进制以下的任意进制分频器。本文组成了十进制的分频器。 图6上图为分频电路 3.4 显示电路 显示模块由频率值显示电路和量程转换指示电路组成。频率值显示电路采用四位共阳极数码管动态显示频率计被测数值,量程转换指示电路由红、黄、绿三个LED分别指示Hz、KHz及MHz频率单位,使读数简单可观。 数码管是一种半导体发光器件,其基本单元是发光二极管。常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。根据管脚资料,可以判断使用的是何种接口类型。 图7 两种数码管内部原理图 因为这里用的是共阳极数码管,它的公共端为高电平,因此要让其中各段(DP,A,B,C,D,E,F,G)的发光二极管发光,只要使它另一端置为低电平,即置0。 3.4.1 频率数值显示电路 图8共阳极数码管显示电路图 3.4.2 频率数值单位显示电路 图9 LED档位指示电路 四、系统软件设计 本文中系统软件设计采用模块化设计,整个系统分为初始化模块、频率测量模块、量程自动切换模块和显示模块等。 整个系统软件设计的程序由C语言编写,通俗易懂。 系统软件设计模块框图: 图10系统软件设计模块框图 4.1 开始 程序预处理,先声明头文件,定义一些变量。 程序入口,main()函数框图: 图11 主函数框图 4.2 初始化模块 初始化模块初始化分频器、量程档位、LED显示、工作寄存器、中断控制和定时/计数器的工作方式等。 4.3 频率测量模块和量程自动切换模块 经过初始化计数器1,每一次下降沿触发一次计数器1中断,每次中断执行中断处理程序则fCnt加1,因此fCnt为信号下降沿次数;经过初始化定时器0, 每50ms触发一次定时器0中断,每次中断执行中断处理程序则对数据下降沿次数fCnt进行处理,通过对数据的大小判断实现量程自动切换等,从而计算出信号的频率,然后调用显示模块把频率值显示出来。其中,16位定时/计数器的最高计数值为65535,因此,还需要先由硬件十分频后,再有定时/计数器对被测信号计数,加大测量的精度和范围。 计数器0(或者1)和定时器2的中断处理框图: 图12 计数器0(或者1)中断处理 图13定时器2中断处理 量程自动切换模块框图: 图14 量程自动切换程序总流程图 4.4 显示模块 显示程序将频率值和量程档位在数码管和LED管显示出来。由于所有4位数码管的8 根段选线由单片机的P0口控制,因此,在每一瞬间4位数码管会显示相同的字符,要想每位显示不同的字符就必须采用扫描方法轮流点亮各位数码管,即在每一瞬间只点亮某一位显示字符,由P1.0-P1.3逐位轮流点亮各个数码管,在此瞬间,段选控制口P0输出相应字符。P2.4-P2.6控制三个发光二极管,通过光颜色的不同表示量程档位的不同。 P1.0-P1.3对应共阳极数码管的1,2,3,4;P0.0-P0.7对应共阳极数码管的A,B,C,D,E,F,G,DP;P2.4-P2.6对应发光二极管的颜色:绿色(MHZ档),黄色(KHZ),红色(HZ)。发光二极管全亮表示所测信号频率超出测量范围。 显示模块框图: 图15 显示子程序流程图 4.5 延时模块 延时模块框图: 图16 延时程序流程图 4.6 频率计仿真 4.6.1 用KEIL软件 先创建工程,后导入bs.c文件,其中bs.c文件就是软件设计中的源代码: 图17 keil软件应用图 设置一些软件目标选项: 由此打开选项: 图18软件设置选项图 点击后,弹出对话框并设置相关属性。 点击按钮后,编译连接,若代码无问题,之后会生成bs.hex文件,如下图: 图19 (.hex)文件图 4.6.2 使用软件Proteus仿真频率计 信号的放大整形模块、分频模块和显示模块都要与单片机模块相连才能达到所需的要求,因此,这三个模块就一起仿真,用Proteus软件仿真如下图: 图20 频率计仿真图 其中需要注意是一些设置: 单片机设置: 图21 单片机属性设置图 其中是需要导入由KEIL软件生成的"*.hex"文件,再是时钟频率为12MHZ。 电源的设置: 图22 电源大小设置图 设置电源为5V。 4.6.3 频率计仿真运行调试 设置如下: 图23 频率计测量10HZ信号运行图 其中红色LED亮,是表示数码管显示的频率值是HZ档,也就是频率的单位是HZ,也就表明运行结果读数是1HZ。 2.给定46.3kH的正弦波 点击确定后,点击运行按钮,之后看频率计仿真运行情况: 图24 频率计测量46.3KHZ信号运行图 3.0 给定9.643MHZ的矩形信号波后信号运行图 图25 频率计测量9.643MHZ信号运行图 其中绿色LED亮,是表示数码管显示的频率值是MHZ档,也就是频率的单位是MHZ,也就表明运行结果读数是9.643MHZ。 4.0 给定超过量程信号波后,信号运行图如下 其中三个LED灯都会点亮,数码管全部都显示为0
完整的Word格式文档51黑下载地址:
系统硬件设计.docx
(2.26 MB, 下载次数: 40)
|