基于单片机的数字频率计的设计_第1页
基于单片机的数字频率计的设计_第2页
基于单片机的数字频率计的设计_第3页
基于单片机的数字频率计的设计_第4页
基于单片机的数字频率计的设计_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行缓慢,而且测量频率的范围比较小。考虑到上述问题,本论文设计一个基于单片机技术的数字频率计。首先,我们把待测信号经过放大整形;然后把信号送入单片机的定时计数器里进行计数,获得频率值;最后把测得的频率数值送入显示电路里进行显示。本文从频率计的原理出发,介绍了基于单片机的数字频率计的设计方案,选择了实现系统得各种电路元器件,并对硬件电路进行了仿真。关键字:单片机,频率计,测量目录第1章引言1第2章方案论证22.1 数字频率计设计的几种方案22.2

2、 几种方案的优劣讨论32.3 本次设计采用的方案3第3章系统硬件设计43.1 数字频率计工作原理43.1.1 一般数字式频率计的原理43.1.2 基于单片机的数字频率计原理43.2 电路原理图53.3 放大整形电路63.3.1 放大整形电路的必要性63.3.2 放大整形电路的原理63.4 分频电路103.4.1 分频电路介绍103.5 四选一电路113.6 单片机133.7 显示电路143.7.1 显示原理143.7.2 显示电路图163.8 电路pcb板18第4章系统软件设计204.1 测频软件实现原理204.2 软件流程图204.3 几个重要的分程序21第5章系统的仿真和调试345.1 硬

3、件电路的仿真345.2 误差分析37结束语38参考文献40致谢41附录42附录一:系统整体电路图42附录二:电路pcb图43附录三:系统整体程序44第1章 引言随着电子信息产业的发展,信号作为其最基础的元素,其频率的测量在科技研究和实际应用中的作用日益重要,而且需要测频的范围也越来越宽。传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量范围低,精度低。因此,随着对频率测量的要求的提高,传统的测频的方法在实际应用中已不能满足要求。因此我们需要寻找一种新的测频的方法。随着单片机技术的发展和成熟,用单片机来做为一个电路系统的控制电路逐渐显示出其无与伦比

4、的优越性。因此本论文采用单片机来做为电路的控制系统,设计一个能测量高频率的数字频率计。用单片机来做控制电路的数字频率计测量频率精度高,测量频率的范围得到很大的提高。本论文的任务是设计一个基于单片机技术的数字频率计。主要介绍了整形电路、控制电路和显示电路的构成原理,以及其测频的基本方法。进行了相应的硬软件设计。第2章 方案论证2.1 数字频率计设计的几种方案测量频率的方法有很多种,主要分为模拟法和数字法两大类,因为本次设计的要求和环境,现在主要讨论数字法中的电子计数式的几种测频方法。电子计数式的测频方法主要有以下几种:脉冲数定时测频法(m法),脉冲周期测频法(t法),脉冲数倍频测频法(am法),

5、脉冲数分频测频法(at法),脉冲平均周期测频法(m/t法),多周期同步测频法。下面是几种方案的具体方法介绍。脉冲数定时测频法(m法):此法是记录在确定时间tc内待测信号的脉冲个数mx,则待测频率为: fx=mx/tc (2-1)脉冲周期测频法(t法):此法是在待测信号的一个周期tx内,记录标准频率信号变化次数mo。这种方法测出的频率是: fx=mo/tx (2-2)脉冲数倍频测频法(am法):此法是为克服m法在低频测量时精度不高的缺陷发展起来的。通过a倍频,把待测信号频率放大a倍,以提高测量精度。其待测频率为: fx=mx/ato (2-3)脉冲数分频测频法(at法):此法是为了提高t法高频测

6、量时的精度形成的。由于t法测量时要求待测信号的周期不能太短,所以可通过a分频使待测信号的周期扩大a倍,所测频率为: fx=amo/tx (2-4)脉冲平均周期测频法(m/t法):此法是在闸门时间tc内,同时用两个计数器分别记录待测信号的脉冲数mx和标准信号的脉冲数mo。若标准信号的频率为fo,则待测信号频率为: fx=fomx/mo (2-5)多周期同步测频法:是由闸门时间tc与同步门控时间td共同控制计数器 计数的一种测量方法,待测信号频率与m/t法相同。2.2 几种方案的优劣讨论以上几种方法各有其优缺点:脉冲数定时测频法,时间tc为准确值,测量的精度主要取决于计数mx的误差。其特点在于:测

7、量方法简单,测量精度与待测信号频率和门控时间有关,当待测信号频率较低时,误差较大。脉冲周期测频法,此法的特点是低频检测时精度高,但当高频检测时误差较大。脉冲数倍频测频法,其特点是待测信号脉冲间隔减小,间隔误差降低;精度比m法高a倍,但控制电路较复杂。脉冲数分频测频法,其特点是高频测量精度比t法高a倍,但控制电路也较复杂。脉冲平均周期测频法,此法在测高频时精度较高,但在测低频信号时精度较低。多周期同步测频法,此法的优点是,闸门时间与被测信号同步,消除了对被测信号计数产生的1个字误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。2.3 本次设计采用的方案根据频

8、率的定义,频率是单位时间内信号波的个数,因此采用上述各种方案都能实现频率的测量。但是本论文设计的是一个用单片机做为电路控制系统的数字式频率计,采用脉冲定时测频法,则在低频率的测量时误差会大一些。采用脉冲周期测频法则测高频率时精度无法保证;采用脉冲数倍频测频法和脉冲数分频测频法则精度有所提高,但控制电路较复杂;采用脉冲平均周期测频法则很难兼顾低频信号的测量;而采用多周期同步测频法,闸门时间与被测信号同步,消除了对被测信号计数产生的1误差,测量精度大大提高,且测量精度与待测信号的频率无关,达到了在整个测量频段等精度测量。本次设计由于个人水平有限,因此,本次设计根据需要,采用脉冲定时测频法。第3章

9、系统硬件设计3.1 数字频率计工作原理3.1.1 一般数字式频率计的原理数字式频率计是测量频率最常用的仪器之一,其基本设计原理是首先把待测信号通过放大整形,变成一个脉冲信号,然后通过控制电路控制计数器计数,最后送到译码显示电路里进行显示,其基本构成框图如图3-1所示。 放大整形电路 控制门电路 计数器电路 译码显示电路待测信号图3-1 数字式频率计原理框图由上图可以看出,待测信号经过放大整形电路后得到一个待测信号的脉冲信号,然后通过计数器计数,可得到需要的频率值,最后送入译码显示电路中显示出来。但是控制部分才是最重要的,它在整个系统的运行中起至关重要的作用。3.1.2 基于单片机的数字频率计原

10、理由上节介绍可知,控制电路在数字频率计中起至关重要的作用。采用什么样的控制电路,直接决定了数字频率计的性能。由第二章的内容可知,为了得到一个高性能的数字频率计,本次设计采用单片机来做为数字频率计的核心控制电路,辅之于少数的外部控制电路。因此本此设计的系统包括信号放大整形电路、分频电路、单片机at89c51和显示电路等。本系统让被测信号经过放大整形后,进入单片机开始计数,利用单片机内部定时计数器定时,在把所记得的数经过相关处理后送到显示电路中显示。其系统原理框图将在下面介绍。根据上述的基于单片机的数字频率计的设计原理,我们可设计一个由放大整形电路、分频电路、多路数据选择器、at89c51以及显示

11、电路来构成的数字式频率计,其系统框图如图3-2所示。放大整形电路分频电路多路数据选择器单片机显示电路待测信号图3-2 系统构成框图 3.2 电路原理图由上面的内容可看到,本次设计的基于单片机的数字式频率计包括波形整形电路、分频电路、多路数据选择器、单片机和显示电路等几个模块。所以本次设计的数字式频率计的电路由以下几块构成:由施密特触发器构成的波形整形放大电路、由74ls90构成的分频电路、由74ls153四选一电路构成的四选一电路、at89c51单片机以及由74ls138译码电路、74ls245上拉电路和八段数码管显示电路构成的数码显示电路构。其原理图如图3-3所示。图3-3 系统电路原理图3

12、.3 放大整形电路3.3.1 放大整形电路的必要性因为在单片机计数中只能对脉冲波进行计数,而实际中需要测量频率的信号是多种多样的,有脉冲波、还有可能有正弦波、三角波等,所以需要一个电路。把待测信号转化为可以进行计数的脉冲波。3.3.2 放大整形电路的原理矩形脉冲波的整形电路有两种:施密特触发器、单稳态触发器。而这两种电路都可以有门电路或是555定时器构成。由于本次设计的基于单片机的数字频率计的放大整形电路部分需求比较简单,所以我们选择由555定时器构成的施密特触发器来作为信号波形整形电路,下面我们给出其全面的介绍。施密特触发器是脉冲波形变换中经常使用的一种电路,下面我们对它的特点、输出特性、工

13、作原理等进行简单的介绍。一、特点1、电平触发:触发信号可以是变化缓慢的模拟信号,达某一电平值时,输出电压突变。为脉冲信号。2、电压滞后传输:输入信号从低电平上升过程中,电路状态转换时对应的输入电平,与从高电平下降过程中电路状态转换时对应的输入电平不同。利用上述两个特点,施密特触发器不仅能将边沿缓慢变化的信号波形整形为边沿陡峭的矩形波,还可以将叠加在矩形脉冲高、低电平上的噪声有效地清除。二、 输出特性1、同向输出:当时,为同向输出,此时当时,当时,。其同向输出特性图如图3-4所示。图3-4 同向输出特性图2、反向输出:当时,为反向输出,此时当,当时,其反向输出特性图如图3-5所示。 图3-5 反

14、向输出特性图正向阈值电平:上升时,引起突变时对应的值。负向阈值电平:下降时,引起突变时对应的值。三、整形原理用门电路构成施密特触发器1、构成,用cmos非门构成的施密特触发器电路图如图3-6所示。 图3-6 用cmos非门构成的施密特触发器电路图2、工作原理,其工作原理如表3-1所示。表3-1 用cmos非门构成的施密特触发器工作原理表 3、计算回差电压(1)、求在从0开始上升时,。在ui=vt+时,g1、g2门要翻转前的瞬间,电路中电流流向和电位情况如图3-7所示。 图3-7 求vt+时电路图从求,入手求:由公式(3-1)就可以推导出公式(3-2),就可以得出。 (3-1) (3-2)(2)

15、、求在从最大值开始下降时,。在,g1、g2门要翻转前的瞬间,电路中电流流向和电位情况如图3-8所示。 图3-8 求vt-是电路图从求入手求:由公式(3-3)可以推导出公式(3-4),再由公式联合公式(3-5)以及公式(3-6),就可以得到公式(3-7),得到vt-的值。 (3-3) (3-4) (3-5) (3-6) (3-7)(3)、求回差电压求出和之后,由下面的公式(3-8)就可求出。 (3-8)当vdd一定时,调r1、r2 ,可调,即可调、,可调脉宽。(4)、电压传输特性。当ui=0时,uo=uol是施密特同相输出,其电压输出特性如图3-9所示。图3-9 电压传输特性(6)、逻辑符号。施

16、密特触发器常见的逻辑符号如图3-10所示。图3-10 施密特触发器的逻辑符号集成施密特触发器,常用ttl电路集成施密特触发器有7413等。常用cmos电路集成施密特触发器有cc40106等。3.4 分频电路3.4.1 分频电路介绍本次设计采用的是脉冲定时测频法,由于考虑到单片机的定时计数器得计数能力有限,无法对过高频进行测量,所以我们对待测信号进行了分频,这样能提高测量频率的范围,还能相应的提高频率测量的精度。所以我们需要把待测信号进行分频。在本次设计中,因为我们要进行的是十分频、一百分频和一千分频,所以我们选用74ls90电路,经过正确的连接后就可以进行十分频,进行三次十分频就可以得到分频一

17、千次的信号。其引脚图和功能表分别如图3-11和表3-2所示。 图3-11 74ls90引脚图表3-2 74ls90功能表 表2 74ls90功能表信号经过分频电路74ls90,其频率将减小到原信号的十分之一。3.5 四选一电路本次设计需要用到一个四选一电路,用来选择输入单片机进行计数的待测信号。74ls153就是其中比较好用和常用的一种四选一电路元件。所以这次采用很常见的74ls153集成电路,其电路图如下图图3-12所示。 数据选择器有多个输入,一个输出。其功能类似于单刀多掷开关,故又称为多路开关(mux)。在控制端的作用下可从多路并行数据中选择一路送输出端。ttl中规模数据选择器是根据多位

18、数据的编码情况将其中一路数据由输出端 图3-12 ls153电路原理图送出的电路,74ls153是双四选一数据选择器,其中有两个四选一数据选择器,它们各有四个数据输入端:1d3、1d2、1d1、1d0和2d3、2d2、2d1、2d0。一个输出端1y、2y和一个控制许可端s。系统控制端s为低电平有效。当控制许可端s=1时,传输通道被封锁,芯片被禁止,y=0,输入的数据不能传送出去;当控制许可端s=0时,传输通道打开,芯片被选中,处于工作状态,输入的数据被传送出去a1、a0是地址选择端,两路选择器共用。管脚如图3-12所示。74ls153逻辑功能见表3-3。从功能表可看出,当s端输入为低电平时,四

19、选一数据选择器处于工作状态,它有4位并行数据输入d0d3,单选择地址输入a1、a0的二进制码依次由00递增至11时,4个通道的并行数据便依次传送到输出端w。表3-3 74ls153的功能表a1a0/sw10000d0010d1100d2110d33.6 单片机单片机作为控制系统和计数器,是本次设计的最重要的部分,at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mc

20、s-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。所以本次设计采用at89c51单片机。本次设计采用的是89c51单片机, 89c51是一种高性能低功耗的采用cmos工艺制造的8位微控制器,它提供下列标准特征:4k字节的程序存储器,128字节的ram,32条i/o线,2个16位定时器/计数器,,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。其引脚说明如下:引脚说明:vcc:电源电压。gnd:接地。p0口:p0口是一组8位漏极开路型双向i

21、/o口,作为输出口用时,每个引脚能驱动8个ttl逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。当p0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,p0口具有内部上拉电阻。在eprom编程时,p0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。p0口:p0口是一带有内部上拉电阻的8位双向i/o口。p0口的输出缓冲能接受或输出4个ttl逻辑门电路。当对p0口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,p0口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(iil)。p1口

22、:p2是一带有内部上拉电阻的8位双向的i/o端口。p1口的输出缓冲能驱动4个ttl逻辑门电路。当向p1口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(iil)。p2口在访问外部程序存储器或16位地址的外部数据存储器(例如movx dptr)时,p2口送出高8位地址数据。在这种情况下,p2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时(例movx r1),p2口输出特殊功能寄存器的内容。当eprom编程或校验时,p2口同时接收高8位地址和一些控制信号。p3口:p3是一带有内部上拉电

23、阻的8位双向的i/o端口。p3口的输出缓冲能驱动4个ttl逻辑门电路。当向p3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(iil)。p3口同时具有at89c51的多种特殊功能,p3.0的第二功能是串行输入口rxd, p3.1的第二功能是串行输出口txd, p3.2的第二功能是外部中断0,p3.3的第二功能是外部中断1,p3.4的第二功能是定时器t0,p3.5的第二功能是定时器t1,p3.6的第二功能是外部数据存储器写选通/wr,p3.7的第二功能是外部数据存储器读选通/rd。3.7 显示电路3.7.1 显

24、示原理我们测量的频率最终要显示出来。八段led数码管显示器基本电路如图3-13所示。图3-13 八段led数码管显示器八段led数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。led数码管显示器有两种形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极led数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极led数码管显示器。如下图所示。共阴和共阳结构的led数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而

25、显示的各种字符。8个笔划段hgfedcba对应于一个字节(8位)的d7、d6、d5、d4、d3、d2、d1、d0,于是用8位二进制码就能表示欲显示字符的字形代码。在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的i/o接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中cpu的开销小,能供给单独锁存的i/o接口电路很多。在单片机系统中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有

26、显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极com是各自独立地受i/o线控制。cpu向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于com端,而这一端是由i/o控制的,所以我们就能自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的办法,轮流控制各个显示器的com端,使各个显示器轮流点亮。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。综合以上内容,我们在这次

27、设计中采用led数码管,采用单片机静态显示计数来显示。采用一个74ls138译码器来控制各个数码管,采用一个74ls245来做上拉电路,使数码显示管有足够的电压进行显示。3.7.2 显示电路图显示电路由数码管和74ls138组成,数码管已经介绍过了,所以不再多加阐述,现在介绍显示电路组成的另一重要电路:74ls138。在本次设计中,由74ls138连接数码管的接地端,由此来控制数码管的亮和灭。其引脚图和功能表分别如图3-14和表3-4所示。图3-14 74ls153引脚图表3-4 74ls138功能表g1g2cbay0y1y2y3y4y5y6y7111111111011111111100000

28、11111111000110111111100101101111110011111011111010011110111101011111101110110111111011011111111110由图和功能表可以看出,74ls138译码器有三个地址输入端a、b、c和八个译码输出端y0y7,当输入为000时,y0输出端为0,其他输出端都为1;同理可推出其他输出状态,即只有输出变量下标对应的二进制代码与输入代码相等的输出端为0,其他的输出端都为1。另外,该译码器还有三个使能端:g1、/g2a、/g2b,只有当g1=1、/g2a=0、/g2b=0同时满足,才能译码。三个条件中任何一个不满足就禁止译码

29、。其中译码选通端/g2b也被称作数据输入端,主要指它用于数据分配时所起的作用。设置多个使能端使得该译码器能被灵活组成各种电路。由于单片机输出的显示数据电压不够高,无法直接送到数码管上直接显示,因此需要用一个上拉电路来提高输出数据的电压值,以便送到数码管显示。在本次设计中我们选用dm74ls245n。其电路图如图3-15所示。图3-15 显示上拉电路图3.8 电路pcb板完成了整体电路图的设计,就要进行电路的pcb的设计,设计后得到的电路pcb板图如图3-16所示。图3-16 电路pcb板第4章 系统软件设计4.1 测频软件实现原理测频软件的实现是基于电路系统来进行设计的。本次设计采用的是脉冲定

30、时测频法,所以在软件实现上基本遵照系统的设计原理,进行测频。本次软件设计语言采用汇编语言,在电脑上编译通过后即可下载到电路上的实际电路中,即可实现频率的测量。软件设计的基本思路是:1、把要用到的内部存储器的地址运用伪指令标号,方便后面设计中运用;2、跳转到中断程序进行初步数据采集;3、开始主程序,首先判断是否有待测信号,无信号就等待信号,有信号则进行下一步;4、判断是否定时到1s,若没有到达1s定时,则执行下面的5和6步得操作,若达到1s,则执行第6步以后的操作;5、判断是否第一次,若是,则判断当前的档位是否设置合适,若合适则直接跳转到返回主程序,若不合适,则进入第6步;6、调整档位,重新进入

31、中断开始初步计数;7、判断档位是否合适,合适则把测得的数据转换为十进制数据,根据当前的档位相应的调整数位,并取表找到相应的显示数据,然后执行第10步操作;8、若上一步中判断出档位不合适,则根据频率进行相应的档位调整。9、恢复初值,重新开始计数;10、返回主程序。4.2 软件流程图根据上一节所叙述的电路设计的基本思路,我们可画出系统流程图如图4-1所示。 数码转换开始次数加1调整档位,重新设置计时返回主程序判断是否有信号判断是定时到1s判断是否适合显示 返回否否是是是是否第一次档位是否合适适否否是是否图4-1 系统流程图4.3 几个重要的分程序本次系统由有几个关键的程序,分别是系统主控程序、数码

32、转化程序和数据显示程序。下面分别介绍这几个程序。 1、控制程序:本文设计的是基于单片机的数字频率计的设计,用单片机来做为数字频率计的控制部分。因此,单片机的控制程序在本次设计中显得非常重要。经过设计,我们得到了如下的控制程序。;*;- main -;* main: nop call display0;led动态显示刷新 call delay100 jnb b_t1if,main;每50ms处理一次。;= clr b_t1if mov a,times_50ms cjne a,#20,no_1s jmp yes_1s; 满20次即为一秒钟;=no_1s:mov a,times_50mscjne a

33、,#1,no_1s_end ;times_50ms不为1,返回;当times_50ms为1时,判断当前所选档位是否过高或者过低;若计数器buf大于100,则说明满1秒时必然大于2000,则提前调高频率衰减档位,;并清零各计数值,重新在新档位测量mov a,counter_buf_h jnz no_1s_1;计数器高位不为0,说明超100 mov a,counter_buf_lcjne a,#100,no_1s_0no_1s_0:jc no_1s_low;计数器buf小于100,继续跳转到no_1s_low判断是否需要调低档位no_1s_1:mov a,freq_loss;超量程,判断当前频率衰

34、减档位,若小于3则加一档cjne a,#3,no_1s_2jmp no_1s_endno_1s_2:jc no_1s_3mov a,#3mov freq_loss,a;档位大于3,则修正为3no_1s_3:inc freq_loss;频率衰减档位加1mov a,freq_losscjne a,#1,no_1s_4setb p153_b;freq_loss=1clr p153_ajmp no_1s_20no_1s_4:cjne a,#2,no_1s_5clr p153_b;freq_loss=2setb p153_ajmp no_1s_20no_1s_5:clr p153_b;freq_loss

35、=3clr p153_ajmp no_1s_20;=no_1s_low:mov a,counter_buf_lcjne a,#10,no_1s_10no_1s_10:jnc no_1s_end;偏低,则判断是否需要降低频率衰减档位mov a,freq_loss;jz no_1s_end;已经是最低档,无需调整dec freq_loss;减一档mov a,freq_losscjne a,#0,no_1s_11setb p153_b;freq_loss=0setb p153_ajmp no_1s_20no_1s_11:cjne a,#1,no_1s_12setb p153_b;freq_loss=

36、1clr p153_ajmp no_1s_20no_1s_12:clr p153_b;freq_loss=2setb p153_ajmp no_1s_20no_1s_20:;调整档位后,重新计数clr amov times_50ms,amov counter_buf_l,amov counter_buf_h,ano_1s_end:jmp main;=;=yes_1s:;把计数器的数转换成10进制,并根据当前档位设定好要显示的6个数字,;存放在display_data1-display_data6中。;mov a,counter_buf_hmov r7,amov a,counter_buf_lm

37、ov r6,acall change16_10;=;在频率衰减控制下,计数器数据不会超出2000多少,因此只取转换后的低4位转换成数据显示mov a,r3anl a,#0fhmov temp1,amov a,r3anl a,#0f0hswap amov temp2,amov a,r4anl a,#0fhmov temp3,amov a,r4anl a,#0f0hswap amov temp4,a;=;根据频率衰减档位调整数位mov a,freq_losscjne a,#0,loss_1clr amov data4,amov data5,ajmp loss_endloss_1:cjne a,#1

38、,loss_2mov a,data3mov data4,amov a,data2mov data3,amov a,data1mov data2,amov a,data0mov data1,aclr amov data0,amov data5,ajmp loss_endloss_2:cjne a,#2,loss_3mov a,data3mov data5,amov a,data2mov data4,amov a,data1mov data3,amov a,data0mov data2,aclr amov data0,amov data1,ajmp loss_endloss_3:mov a,dat

39、a2mov data5,amov a,data1mov data4,amov a,data0mov data3,aclr amov data0,amov data1,amov data2,aloss_end:;高位若为0,则置为11,取出显示代码为led全灭mov r0,#data5;取最高位数据地址mov r2,#5loop_clr:mov a,r0jnz discdmov a,#11mov r0,adec r0djnz r2,loop_clr;=;取表找相应显示代码discd:mov r0,#data_addr;mov r1,#display_data_addr;mov r2,#6;mov

40、 dptr,#tabdilp:mov a,r0movc a,a+dptrmov r1,ainc r0inc r1djnz r2,dilp;=;重新计数clr amov times_50ms,amov counter_buf_l,amov counter_buf_h,ajmp maintab: ;/显示码码表/ db 3fh,06h,5bh,4fh,66h; db 6dh,7dh,07h,7fh,6fh,0ffh;2、数码转化程序:在本次设计中,单片机计数器所计得的数是二进制,以十六进制数的形式存放在寄存器中,而我们需要显示的是十进制数的频率,因此需要进行转化才能显示。数码转化程序设计的原理:本

41、次设计的单片机数码转换是通过单片机的移位乘二特性和单片机的十进制调整功能来实现的。先把双字节的十六进制数转换为8421bcd码,在控制显示的时候通过位调整就可以得到计数所得频率的十进制数据,供给显示。其具体的转换程序如下。;*; - 16进制转10进制 -;*;双字节十六进制整数转换成双字节码整数;入口条件:待转换的双字节十六进制整数在r6、r7中。;出口信息:转换后的三字节码整数在r3、r4、r5中。;影响资源:psw、a、r2r7 堆栈需求: 字节change16_10: clr a ;码初始化 mov r3, a mov r4, a mov r5, a mov r2, #10h ;转换双

42、字节十六进制整数chang_1: mov a, r7 ;从高端移出待转换数的一位到cy中 rlc a mov r7, a mov a, r6 rlc a mov r6, a mov a, r5 ;码带进位自身相加,相当于乘 addc a, r5 da a ;十进制调整 mov r5, a mov a, r4 addc a, r4 da a mov r4, a mov a, r3 addc a, r3 mov r3, a ;双字节十六进制数的万位数不超过,不用调整 djnz r2, chang_1 ;处理完 ret3、数码显示程序:单片机控制其内部计数器得到的数据要送到8位数码显示管中显示出来,

43、才能被我们所看到,直接得到我们所测量的频率。我们本次设计所采用的是数码管静态显示,所以我们要把数据循环的送入数码管显示。因为我们经过转换程序把所得的数据存储在40h45h中,因此,数码显示的基本原理就是把40h45h中的数据分时的通过p1口送到数码管,再通过74ls138来控制各个数码管的亮和灭。对于控制,我们在控制软件里。其流程图如图4-3所示。 把显示位数清零开始计算当前要显示的位数,取得地址灭led灯取数显示返回主程序判断显示位数是否为6判断显示位数是否大于6是否否是图4-2 数码显示流程图由此,可以写出显示程序如下:;*; - 显示子程序 -;*display0: mov a,coun

44、ter_display; cjne a,#6,display1 jmp display2;/当前显示位数等于6/display1: jnc display2;/当前显示位数大于6/ jmp display3display2: clr a mov counter_display,a;/当前显示位数大于等于6,清零/display3: mov a,#0ffh mov port_led,a;/变换数据前先灭led,以消除闪动/ mov a,counter_display mov port_led_138,a mov r1,#display_data_addr add a,#display_data_

45、addr;/计算当前要显示数据的地址,初始地址+相应位数/ mov r1,a mov a,r1;/取出要显示的相应位的数据/ mov port_led,a;/送出显示数据/ mov a,counter_display inc a mov counter_display,a;/显示位加1/reti第5章 系统的仿真和调试5.1 硬件电路的仿真为了保证系统能正常工作,我们需要对电路中关键的电路部分进行仿真,下面我们对波形整形电路和分频电路进行了仿真。proteus 是一款非常不错的单片机模拟软件。虽然电子模拟软件不少,但是能很好的模拟单片机的只有proteus软件。该软件能模拟 51 单片机,av

46、r单片机,pic 单片机,以及部分arm 芯片。支持的外围器件也很多包括a/d,lcd,led 数码管,温度,时钟等芯片。本次设计所有的电路都采用proteus对电路进行仿真。下面我们对波形整形电路和分频电路进行仿真。具体的操作步骤如下:1、设计仿真原理图。在这部分可以从电路电路原理图中把该部分复制到新的项目中,然后在添加好电源和地。给电路加上仿真激励源。2、设置仿真环境和仿真参数。在仿真电路图中为个元件的数值添加参数,添加需要观察的节点处的网络标号,把瞬态特信仿真方式如图5-1所示。图5-1 选择瞬态特性分析类3、设置瞬态分析的参数,如图5-2所示。图5-2 瞬态特性分析参数设置4、经过上述步骤后,设置好参数后,就可以单击ok键进行仿真。系统将进行瞬态特性分析。我们依照上述步骤,可以分别得出整形电路和分频电路的仿真波形图。图5-3是整形电路的仿真电路图,图5-4是其仿真得到的波形图,图5-5是分频电路的仿真电路图,图5-6是其仿真得到的波形图。图5-3 整形电路仿真电路图图5-4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论