

免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的等精度频率计设计摘要频率测量是电子学测量中最为基本的测量之一。频率计主要是由信号输入和放大电路、单片机模块、分频模块及显示电路模块组成。at89c51单片机是频率计的控制核心,来完成它待测信号的计数,译码,显示以及对分频比的控制。利用它内部的定时/计数器完成待测信号频率的测量。在整个设计过程中,所制作的频率计采用外部分频,实现10hz2mhz的频率测量,而且可以实现量程自动切换流程。以at89c51单片机为核心,通过单片机内部定时/计数器的门控时间,方便对频率计的测量。其待测频率值使用lcd液晶显示器显示,并可以自动切换量程。本次采用单片机技术设计一种数字显示的频率计,具有测量准确度高,响应速度快,体积小等优点。关键词: 频率计 单片机 计数器 量程自动切换- iv -abstractfrequency measurement is the most basic measurement in electronic field. frequency meter is mainly composed of a signal input and an amplifying circuit, scm module, frequency module and a display circuit module. at89c51 mcu is the control core frequency of dollars to complete its count of the signal under test, decoding, display and control of the frequency division ratio. using its internal timer or counter to complete the signal of the under test cycle / frequency of measurement.throughout the design process, periodic measurement of the frequency meter application and the corresponding mathematical treatment to achieve 10hz 10 khz frequency measurements, and can automatically switch the flow to achieve scale. to the core of at89c51 microcontroller, with the mcu internal timer / counter gate time, it can be easier for frequency measurement. the use of microcomputer technology to design a digital display of frequency meter, have a measurement of high accuracy, fast response, small size and so on.keywords:frequency meter, single chip microcomputer, counter, automatic range switching目录摘要iabstractii目录iii前言11 频率计简介21.1 频率计概述21.2 频率计发展与应用21.3 频率计设计内容32 设计原理与总体方案设计42.1 测频原理简介42.2总体思路42.3总体设计框图43 系统硬件电路单元电路设计73.1 at89c51主控制器模块73.1.1 at89c51的介绍:73.1.2 复位电路及时钟电路83.1.3 单片机系统93.2 电源模块103.2.1 直流稳压电源的基本原理103.2.2 电源电路设计123.3 电平转换模块123.4 分频模块133.4.1 分频电路分析133.4.2 分频电路143.4.3 数据选择器74151153.5 显示模块163.5.1 lcd1602简介163.5.2 lcd1602接口应用183.5.3 lcd的指令说明193.5.4 基本操作时序203.5.5 1602显示电路213.6 总体电路图224 系统软件设计254.1 等精度频率计的算法设计254.2 软件模块设计254.3 中断服务子程序274.4 主程序流程图284.5 程序清单294.5.1主程序294.5.2显示子程序305 系统仿真与调试33总结35致 谢36参考文献37前言数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。若在一定时间间隔t内测得这个周期性信号的重复变化次数n,则其频率可表示为f=n/t。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数n是在1秒时间内的累计数,所以被测频率fx=nhz。本设计正是基于以上思想,以at89c51单片机为核心,通过单片机内部定时/计数器的门控时间,方便对频率计的测量。在整个设计过程中,所制作的频率计采用外部分频,实现10hz2mhz的频率测量,而且可以实现量程自动切换流程。其待测频率值使用lcd液晶显示器显示,并可以自动切换量程。本次采用单片机技术设计一种数字显示的频率计,具有测量准确度高,响应速度快,体积小等优点。- 37 -1 频率计简介频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。1.1 频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点1。1.2 频率计发展与应用在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。单片机已成为电子系统的中最普遍的应用。单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。其中以89c51为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。1.3 频率计设计内容利用电源、单片机、分频电路及lcd1602液晶显示器显示等模块,设计一个等精度频率计能够测量出被测信号的频率。 参数要求如下:(1) 测量范围1hz10khz;(2) 用lcd1602液晶显示屏显示测量值;(3) 能根据输入信号自动切换量程;(4) 输入电压300mv(5) 输入信号波形:任意周期信号;2 设计原理与总体方案设计2.1 测频原理简介测量一个信号的频率有两种方法:第一种是计数法,用基准信号去测量被测信号的高电平持续的时间,然后转换成被测信号的频率。第二种是计时法,计算 在基准信号高电平期间通过的被测信号个数。根据设计要求测量1hz10khz的正弦信号,首先要将正弦信号通过过零比较转换成方波信号,然后变成测量方波信号。如果用第一种方法,当信号频率超过1khz的时候测量精度将超出测量极度要求,所以当被测信号的频率高于1khz的时候需要将被测信号进行分频处理。如果被测信号频率很高需要将被测信号进行多次分频直到达到设计的精度要求。根据设计要求用单片机的内部t0产生基准信号,由into输入被测信号,通过定时方式计算被测信号的高电平持续时间。通过单片机计算得出结果,最后有1062液晶显示器显示测量结果。2.2总体思路频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间内对信号进行计数,计数值就是信号频率。本文介绍了一种基于单片机at89c51 制作的频率计的设计方法,所制作的频率计测量比较高的频率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外部分频。该频率计实现1hz10khz的频率测量,而且可以实现量程自动切换功能.2.3总体设计框图根据上述系统分析,频率计系统设计共包括五大模块:单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。各模块作用如下:(1) 单片机控制模块:以at89c51单片机为控制核心,来完成它待测信号的计数,译码,和显示以及对分频比的控制。利用其内部的定时计数器完成待测信号周期频率的测量。单片机at89c51内部具有2个16位定时计数器,定时计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。(因为at89c51所需外围元件少,扩展性强,测试准确度高。)(2) 电源模块:为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。(3) 放大整形模块:放大电路是对待测信号的放大,降低对待测信号幅度的要求。整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。(4) 分频模块:考虑单片机外部计数,使用12 mhz时钟时,最大计数速率为500 khz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。可用74hc4017进行外部十分频。(5) 显示模块:利用lcd1602液晶显示器显示待测信号的频率蓝底白字, 标准型16x2液晶显示字符模块(背光/蓝屏) 1602采用标准的16脚接口,是屏显驱动模块,工业字符型液晶,能够同时显示16x02即32个字符。1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符。综合以上频率计系统设计有单片机控制模块、电源模块、放大整形模块、分频模块及显示模块等组成,频率计的总体设计框图如图2.1所示。at89c51液晶显示被测信号信号转换(过零比较)分频处理数据选择器图2.1 等精度频率计系统设计框图3 系统硬件电路单元电路设计3.1 at89c51主控制器模块3.1.1 at89c51的介绍:at89c51是一种带4k字节flash存储器(fperomflash programmable and erasable read only memory)的低电压、高性能cmos 8位微处理器,俗称单片机。at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3.1所示图3.1 单片机at89c51图p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p0口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须接上拉电阻。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为低八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 3.1.2 复位电路及时钟电路复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位(图3.2)和手动复位(图3.3)。 图3.2手动复位 图3.3 自动复位 有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能6。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000m无源晶振接入xtal1和xtal2引脚。并联2个30pf陶瓷电容帮助起振。3.1.3 单片机系统单片机采用at89c51,采用12mhz的晶振频率。单片机的p3.2口接被处理后的被测信号,p0口接液晶显示器的数据输入端,ale,rd,wr,p0.0,p0.1通过外接控制电路接液晶显示器的控制端。单片机系统的电路如图3.4所示。图3.4 单片机系统3.2 电源模块3.2.1 直流稳压电源的基本原理直流稳压电源一般由电源压器t、整流、滤波及稳压电路所组成8,基本框图如图3.5所示。图3.5 直流稳压电源框图及波形(1)电源变压器t的作用是将220v的交流电压变换成整流滤波电路所需要的交流电压ui。变压器副边与原边的功率比为p2/p1=n,式中n是变压器的效率。(2)整流电路(如图3.6):整流电路将交流电压ui变换成脉动的直流电压。再经滤波电路滤除较大的波纹成分,输出波纹较小的直流电压u1。常用的整流滤波电路有全波整流滤波、桥式整流滤波等。 图3.6 整流电路(3)滤波电路(如图3.7):各滤波电路c满足rl-c=(35)t/2,式中t为输入交流信号周期,rl为整流滤波电路的等效负载电阻。图3.7 滤波电路(4)稳压电路:常用的稳压电路有两种形式:一是稳压管稳压电路,二是串联型稳压电路。二者的工作原理有所不同。稳压管稳压电路其工作原理是利用稳压管两端的电压稍有变化,会引起其电流有较大变化这一特点,通过调节与稳压管串联的限流电阻上的压降来达到稳定输出电压的目的。它一般适用于负载电流变化较小的场合。串联型稳压电路是利用电压串联负反馈的原理来调节输出电压的。集成稳压电源事实上是串联稳压电源的集成化。3.2.2 电源电路设计根据上述介绍设计,电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用led进行电源工作状态指示。lm78xx系列三端稳压ic来组成稳压电源所需的外围元件极少9,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用lm7805稳压芯片进行5v的电源电路设计。具体的5v电源电路如下图3.8所示。图3.8 电压5v直流电源电路3.3 电平转换模块要将正弦信号转换成方波信号可以用过零比较电路实现。正弦信号通过lm833n与零电平比较,电压大于零的时候输出lm833n的正电源+5v,电压小于零的时候输出负电源0v。如图3.9所示图3.9 电平转换电路3.4 分频模块分频电路用于扩展单片机频率测量范围,并实现单片机频率和周期测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。可用74161进行分频。3.4.1 分频电路分析本频率计的设计以at89c51单片机为核心,利用他内部的定时计数器完成待测信号周期频率的测量。单片机at89c51内部具有2个16位定时计数器,定时计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 mhz时钟时,每1s加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的124(使用12 mhz时钟时,最大计数速率为500 khz),因此采用74ls161进行外部十分频使测频范围达到2mhz。为了测量提高精度,当被测信号频率值较低时,直接使用单片机计数器计数测得频率值;当被测信号频率值较高时采用外部十分频后再计数测得频率值。这两种情况使用74ls151进行通道选择,由单片机先简单测得被测信号是高频信号还是低频信号,然后根据信号频率值的高低进行通道的相应导通,继而测得相应频率值。3.4.2 分频电路经尝试,最后决定使用74hc4017分频电路十进制的计数器74hc4017来分频,当被测信号脉冲个数达到10个时74hc4017产生溢出,c0端输出频率为输入频率的1/10,达到十分频的作用。如果当频率很高是需要多次分频只需将多片74hc4017级联就可以了。74hc4017时序图如图3.10所示,系统分频电路如图3.11所示。图3.1074hc4017时序图图3.11 系统分频电路3.4.3 数据选择器74151工作原理:根据设计要求要根据计数脉冲个数来选择分频次数,从而达到能够自动切换频率量程的测试,我们可以用74151来选择分频次数,74151的选择控制信号有单片机的i/o口来控制,最终能够量程自动切换功能。74151简单介绍:数据选择端(abc)按二进制译码,以从8 个数据(d0-d7)中选取1 个所需的数据。只有在选通端strobe 为低电平时才可选择数据。如图3.12所示:图3.12 芯片74151实物图管脚的介绍:引出端符号: a、b、c 选择输入端 d0d7 数据输入端 strobe 选通输入端(低电平有效) w 反码数据输出端 y 数据输出端如图为功能表图,图3.13图3.13 功能表图根据设计要求要根据计数脉冲个数来选择分频次数,可以用74151来选择分频次数,74151的选择控制信号有单片机的i/o口来控制。数据选择电路如图3.14所示。图3.14 数据选择模块3.5 显示模块3.5.1 lcd1602简介在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、led数码管、液晶显示器。如图3.15为lcd1206实物图:图3.15 lcd1206实物介绍图液晶显示器的功能介绍:液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、pda移动通信工具等众多领域。液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(static)、单纯矩阵驱动(simple matrix)和主动矩阵驱动(active matrix)三种。液晶显示器各种图形的显示原理:线段的显示:点阵图形式液晶由mn个显示单元组成,假设lcd显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示ram区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由ram区的000h00fh的16字节的内容决定,当(000h)=ffh时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3ffh)=ffh时,则屏幕的右下角显示一条短亮线;当(000h)=ffh,(001h)=00h,(002h)=00h,(00eh)=00h,(00fh)=00h时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是lcd显示的基本原理。字符的显示:用lcd显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示ram区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在lcd上开始显示的行列号及每行的列数找出显示ram对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示:汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32b,分左右两半,各占16b,左边为1、3、5右边为2、4、6根据在lcd上开始显示的行列号及每行的列数可找出显示ram对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32b显示完就可以lcd上得到一个完整汉字。3.5.2 lcd1602接口应用引脚说明:第1脚:vss为地电源。第2脚:vdd接5v正电源。第3脚:vl为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度。第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:r/w为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和r/w共同为低电平时可以写入指令或者显示地址,当rs为低电平r/w为高电平时可以读忙信号,当rs为高电平r/w为低电平时可以写入数据。第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。管脚说明示意图如图3.16所示:图3.16 液晶显示器1602管脚示意图3.5.3 lcd的指令说明序号指令rsr/wd7d6d5d4d3d2d1d01清显示00000000012光标返回000000001*3置输入模式00000001i/ds4显示开/关控制0000001dcb5光标或字符移位000001s/cr/l*6置功能00001dlnf*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01bf计数器地址10写数到cgram或ddram)10要写的数据内容11从cgram或ddram读数11读出的数据内容表3.1指令说明表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01h,光标复位到地址00h位置。指令2:光标复位,光标返回到地址00h。指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 dl:高电平时为4位总线,低电平时为8位总线 n:低电平时为单行显示,高电平时双行显示 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器ram地址设置。指令8:ddram地址设置。指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。3.5.4 基本操作时序lcd液晶显示器的基本操作时序,可参考表3.2.表3.2基本操作时序表读状态输入rs=l,r/w=h,e=h输出d0d7=状态字写指令输入rs=l,r/w=l,d0d7=指令码,e=高脉冲输出无读数据输入rs=h,r/w=h,e=h输出d0d7=数据写数据输入rs=h,r/w=l,d0d7=数据,e=高脉冲输出无读写操作时序如图3.17和3.18所示。图3.17 读操作时序图3.18 写操作时序3.5.5 1602显示电路显示电路由1602组成,其电路如图3.19所示。图3.19 显示电路模块3.6 总体电路图综合上述描述硬件电路主要分为信号转换电路、分频电路、数据选择电路、单片机系统和显示电路五部分。其总体电路如图3.20所示。图3.20 总体电路图4 系统软件设计等精度频率计的软件设计主要由主程序、分频选择程序、液晶显示程序组成。4.1 等精度频率计的算法设计根据设计要求频率范围是1hz10khz,当频率为10hz时,t=100000us,高电平为50000us,0.1%的误差为100us,由单片机产生的基准频率为12mhz,t0=1us,最大误差为1us,计数个数为50000(方式1),满足设计要求。当频率增加到1khz时,产生的误差刚刚能达到设计要求,这时计数个数为500。当频率大于1khz时(即计数个数小于500)就需要将被测频率分频后再测量,如当频率为10khz时,先计算计得的脉冲数等于50,小于了500,所以将10khz的信号10分频得到1khz,这时就满足要求了。最后得到的频率 f=其中n为计得的脉冲个数,i为分频的次数。4.2 软件模块设计系统软件设计采用模块化设计方法。整个系统由初始化模块,信号频率测量模块,自动量程转换和显示模块等模块组成。系统软件流程如图4.1所示。频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。测量初始化模块设置堆栈指针(sp)、工作寄存器、中断控制和定时计数器的工作方式。定时计数器的工作首先被设置为计数器方式,即用来测量信号频率。图4.1 系统软件流程总图首先定时计数器的计数寄存器清0,运行控制位tr置1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时tr清0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。定时计数器的工作被设置为定时器方式,定时计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位tr置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位tr清0,停止计数。16位定时计数器的最高计数值为65535,当待测信号的频率较低时,定时计数器可以对被测信号直接计数,当被测信号的频率较高时,先由硬件十分频后再有定时计数器对被测信号计数,加大测量的精度和范围。4.3 中断服务子程序t0中断服务子程序流程如图4.2所示。测频时,定时器t0 工作在定时方式,每次定时50ms ,则t0 中断20 次正好为1秒,即t0用来产生标准秒信号,定时器t0 用作计数器,对待测信号计数,每秒钟的开始启动t0 ,每秒钟的结束关闭t0 ,则定时器t0 之值乘以分频系数就为待测信号的频率。图4.2 t0中断服务子程序定时计数器t1工作在计数方式, 对信号进行计数,计数器1中断流程图如图4.3所示。图4.3 计数器1中断服务子程序4.4 主程序流程图主程序首先对系统环境初始化,设置分频选通信号p2=0x00,选通0通道。设置t0工作方式,采用硬件启动方式,gate=1,当int0和tr0同时为1时启动计时,计数方式为方式1(16位),th0和tl0都置零。当外部中断int0=1时等待,当外部中断为0时启动t0即tr0=1,当int0一直为0时就等待,一旦int0=1就启动计数同时等待,当int0为0时跳出并关闭t0即tr0=0。这样就计得高电平期间基准脉冲个数,当脉冲个数小于500时就选择10分频信号,即p2自加1,同时记录分频一次;如果分频后脉冲个数还小于500则再次分频,直到计数个数大于500。其示意图如图4.4所示。开始初始化数据信号系统初始化读出计数个数nn500变换数据选择通道,计算分频次数iy显示结果n图4.4 主程序流程图4.5 程序清单4.5.1主程序#include#include#include#includesbit p32=p32;main() unsigned int period,k,j,i=0; float f,m; char buff30; init_lcd(); p2=0x00; while(1) tmod=0x09;(gate=1,启动外中断请求;选择方式一计数) th0=0; tl0=0; while(p32=1); tr0=1; while(p32=0); while(p32=1); tr0=0; period=th0*256+tl0;(计算时钟脉冲的个数) while(period=500) /*判断是否分频及计算分频次数*/ p2+;i+;period=period*10; if(i=6)p2=0x00;break; k=pow(10,i); /* 10的i次方*/ f=(1000000.0/(2*period)*k; if(f1000) sprintf(buff,f=%5.2fhz,f); else m=f/1000.0; sprintf(buff,f=%5.2fkhz,m); lcdprintf(0,0,buff); 4.5.2显示子程序#include char code cgram_table=0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,/;年0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,/;月0x0f,0x09,0x09,0x0f,0x0,0x09,0x0f,0x00;/;日void delay() unsigned char i; for(i=0;i250;i+);void init_lcd() unsigned char i; wr_com=0x38; /设置为8位数据总线,16*2,5*7点阵 for(i=0;i100;i+) delay(); wr_com=0x01; /清屏幕 for(i=0;i50;i+) delay(); wr_com=0x06; /光标移动,显示区不移动,读写操作后ac加1 for(i=0;i50;i+) delay(); wr_com=0x0c; for(i=0;i50;i+) delay();/* /void init_cgram() unsigned char i;/;设置自定义字符 wr_com=0x40; for(i=0;i24;i+) wr_dat=cgram_tablei; for(i=0;i1)y=1; wr_com=(y*0x40+x)|0x80; delay(); delay(); while(*s!=0) wr_dat=*s; s+; delay(); delay(); 5 系统仿真与调试电路图完成后,首先在keil软件中调程序,经过多次调试将程序中的错误和警告全部改正,并生成.hex文件,再运行程序,程序正确无误后开始做设计的仿真,首先在仿真软件proteus中画好电路图。等精度频率计的调试比较简单,在电平转换前的输入端输入标准的正弦信号,把编译好的程序指定到proteus中的单片机中。运行proteus即可在显示器中观测到显示结果。显示结果如图5.1所示。图5.1 仿真结果演示图当然我们在调试过程中也遇到了不少的困难。首先我们用4017来作为十分频器,但是没有注意到4017是cmos型的,而我们系统所用的是ttl电平,所以最后改用了74hc4017;在刚开始的时候当输入某个频率时输出显示为零,或者为负数,最后发现是输出的数据类型定义错了,因为最大要测量10khz的频率,所以要定义输出数据类型为long int型,否则输出将产生溢出显示负数。经软件的调试修改再调试,如此反复,排除各种故障最终基本完成了设计所要求的任务。由单片机内部定时器计数器构成基本测量电路,外加整形和分频电路,由系统软件设计可以测出1hz-5mhz的量程范围,可以实现量程档的自动转换,使用的动态显示测量时会出现闪烁现象,但显示数值准确,稳定时显示不闪烁。 软件仿
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省义乌市秀湖中学2026届英语九年级第一学期期末学业质量监测试题含解析
- 广东省汕头市潮南区两英镇2026届英语九上期末经典试题含解析
- 2026届山东省菏泽市英语九上期末质量检测模拟试题含解析
- 2026届上海民办日日学校化学九上期末联考试题含解析
- 2025版中央空调的合同
- 2025桶装水订购合同
- 2025灌溉施工合同范本
- 2025化工类产品购销合同书
- 2025仓库物业服务合同范本
- 2025岗位证书聘用标准合同书
- 2023年公务员职业道德培训考试题库
- 八纲辨证-课件
- 房产归属协议书范本
- 服务类合同补充协议
- 学生休学申请表(新)
- 350吨履带吊地基承载力验算
- 露天采石场供配电系统安全管理制度
- TSG-R0005-2022《移动式压力容器安全技术监察规程》(2022版)
- 2020 ACLS-PC-SA课前自我测试试题及答案
- 考研英语翻译
- 北京科技大学机械制图杨皓第四版习题集答案PPT课件
评论
0/150
提交评论