资源描述
毕业实践任务书 系 名 称 电气工程系 专业及班级 电气S2009-7 学生姓名 丁洪军 学 号 21 毕业实践题目:基于单片机控制的频率计的设计 指 导 教 师(签字): 教研室主任(签字): 系 主 任(签字): 2011 年 9 月 15 日摘 要在传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。正是由于频率计能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。频率测量是电子学测量中最为基本的测量之一。频率计主要是由信号输入和放大电路、单片机模块、分频模块及显示电路模块组成。在整个设计过程中,所制作的频率计采用外部分频,实现1Hz40MHz的频率测量,采用外部按钮量程切换流程。以AT89S52单片机为核心,通过单片机内部定时/计数器的门控时间,方便对频率计的测量。其待测频率值使用8位共阳极数码管显示。本次采用单片机技术设计一种数字显示的频率计,具有测量准确度高,响应速度快,体积小等优点。关键词:频率计;单片机;计数器;量程切换 目录第一章 前言11.1频率计概述11.2频率计发展与应用11.3频率计设计内容1第二章 系统总体方案设计22.1测频的原理22.2总体思路32.3具体模块3第三章 硬件电路具体设计53.1 AT89S52主控制器模块53.1.1 AT89S52的介绍53.1.2 复位电路及时钟电路63.1.3 引脚功能73.1.4 单片机引脚分配93.2 电源模块93.2.1 直流稳压电源的基本原理93.2.2 电源电路设计113.3放大整形模块113.4 分频设计模块123.4.1 分频电路分析123.4.2 74LS161芯片介绍133.4.3 分频电路143.5 显示模块143.5.1 数码管介绍143.5.2 频率值显示电路15第四章 系统的软件设计164.1 软件模块设计164.2 中断服务子程序174.3 显示子程序194.4 应用软件简介194.4.1 Keil简介194.4.2 protues简介21第五章 频率计的系统调试225.1 硬件调试225.1.1 电源模块调试225.1.2整形模块调试225.1.3 分频模块调试245.2 软件调试245.2.1 Pouteus软件调试245.2.2 功能调试255.3系统调试265.3.1 系统软件调试265.3.2 系统软硬件调试265.4 误差分析27第六章 总结28参考文献29致 谢30附录一 系统原理图附录二 频率计源程序频率计的设计第一章 前言频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。1.1频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点。1.2频率计发展与应用在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。单片机已成为电子系统的中最普遍的应用。单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。1.3频率计设计内容利用电源、单片机、分频电路及数码管显示等模块,设计一个简易的频率计能够粗略的测量出被测信号的频率。 参数要求如下:1测量范围1HZ40MHZ;2用8位数码管显示测量值;3能根据输入信号切换量程并且可以测量方波、三角波及正弦波等多种波形;第二章 系统总体方案设计2.1测频的原理测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。被测信号,通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端。由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。若在一定的时间间隔T内累计周期性的重复变化次数N,则频率的表达式为式: (21)图2-1说明了测频的原理及误差产生的原因。时基信号待测信号 丢失(少计一个脉冲) 计到N个脉冲 多余(比实际多出了0.x个脉冲)图2-1 测频原理在图1中,假设时基信号为1KHZ,则用此法测得的待测信号为1KHZ5=5KHZ。但从图中可以看出,待测信号应该在5.5KHZ左右,误差约有0.5/5.59.1%。这个误差是比较大的,实际上,测量的脉冲个数的误差会在1之间。假设所测得的脉冲个数为N,则所测频率的误差最大为=1(N-1)*100%。显然,减小误差的方法,就是增大N。本频率计要求测频误差在1以下,则N应大于1000。通过计算,对1KHZ以下的信号用测频法,反应的时间长于或等于10S,。由此可以得出一个初步结论:测频法适合于测高频信号。频率计数器严格地按照公式进行测频。由于数字测量的离散性,被测频率在计数器中所记进的脉冲数可有正一个或负一个脉冲的量化误差,在不计其他误差影响的情况下,测量精度将为: (22)应当指出,测量频率时所产生的误差是由N和T俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为了增加T的稳定度,只需提高晶体振荡器的稳定度和分频电路的可靠性就能达到。上述表明,在频率测量时,被测信号频率越高,测量精度越高。2.2总体思路频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间内对信号进行计数,计数值就是信号频率。本文介绍了一种基于单片机AT89S52 制作的频率计的设计方法,所制作的频率计测量比较高的频率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外部分频。该频率计实现1HZ40MHZ的频率测量,而且可以实现量程自动切换功能,8位共阳极动态显示测量结果,可以测量正弦波、三角波及方波等各种波形的频率值。2.3具体模块根据上述系统分析,频率计系统设计共包括五大模块:单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。各模块作用如下:1、单片机控制模块:以AT89S52单片机为控制核心,来完成它待测信号的计数,译码,和显示以及对分频比的控制。利用其内部的定时计数器完成待测信号周期频率的测量。单片机AT89S52内部具有2个16位定时计数器,定时计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。(因为AT89C52所需外围元件少,扩展性强,测试准确度高。)2、电源模块:为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。3、放大整形模块:放大电路是对待测信号的放大,降低对待测信号幅度的要求。整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。4、分频模块:考虑单片机外部计数,使用12 MHz时钟时,最大计数速率为500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。可用74161进行外部分频。5、显示模块:我们测量的频率最终要显示出来八段LED 数码管显示器由8 个发光二极管组成。基中7 个长条形的发光管排列成“日”字形,另一个圆点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED 数码管显示器有两种形式:一种是8 个发光二极管的阳极都连在一起的,称之为共阳极LED 数码管显示器;另一种是8 个发光二极管的阴极都连在一起的,称之为共阴极LED 数码管显示器。如下图所示。共阴和共阳结构的LED 数码管显示器各笔划段名和安排位置是相同的。当二极管导通时,对应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段 h g f e d c b a 对应于一个字节(8 位)的D7、D6、D5、。D4、D3、D2、D1、D0,于是用8 位二进制码就能表示欲显示字符的字形代码。中动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O 接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU 的开销小,能供给单独锁存的I/O 接口电路很多。在单片机系统显示电路采用8位共阳极数码管动态显示,为了加大数码管的亮度,使用74LS246进行驱动,便于观测。综合以上频率计系统设计有单片机控制模块、电源模块、放大整形模块、分频模块及显示模块等组成,频率计的总体设计框图如图2-2所示。 图2-2 频率计总体设计框图第三章 硬件电路具体设计根据系统设计的要求,频率计实际需要设计的硬件系统主要包括以下几个部分:AT89S52单片机最小系统模块、电源模块、放大整形模块、分频模块及显示模块,下面将分别给予介绍。3.1 AT89S52主控制器模块3.1.1 AT89S52的介绍该AT89S52是一个低功耗,高性能CMOS8位微控制器,可在4K字节的系统内编程的闪存存储器。该设备是采用Atmel的高密度非易失性存储器技术和符合工业标准的80C52指令集合引脚。芯片上的Flash程序存储器课重新编程的系统或常规非易失性内存编程。通过结合通用8位中央处理器的系统内课编程闪存的单芯片,AT89S52是一个功能强大的微控制器提供了高度灵活的和具有成本效益的解决办法,可在许多嵌入式控制中应用。8位单片机是MSC-51系列产品升级版,有世界著名半导体公司ATMEL在购买MSC-51设计结构后,利用自身优势技术(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产,推广一批如51F020等高性能单片机。AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。AT89S52引脚如下图3-1所示。图3-1 AT89S52引脚图3.1.2 复位电路及时钟电路复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位(图3-2)和手动复位(图3-3)。 图3-2 上电复位 图3-3 手动复位有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。AT89S52单片机最小系统如图3-4所示。图3-4单片机最小系统原理图3.1.3 引脚功能VCC:电源电压;GND:地;P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1 输出缓冲器能驱动4个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入和定时器/计数器2的触发输入,P1口功能具体如表3-1所示。在flash编程和校验时,P1口接收低8位地址字节。表31 P1口的第二种功能说明表引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4 个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口亦作为AT89C52特殊功能(第二功能)使用,P3口功能如表3-2所示。在flash编程和校验时,P3口也接收一些控制信号。表3-2 P3口的第二种功能说明表引脚号第二功能引脚号第二功能P3.0RXD(串行输入)P3.4T0(定时器0外部输入)P3.1TXD (串行输出)P3.5T1(定时器1外部输入)P3.2(外部中断0)P3.6(外部数据存储器写选通)P3.3(外部中断1)P3.7(外部数据存储器写选通)RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.1.4 单片机引脚分配根据系统设计及各模块的分析得出,单片机的引脚分配如表3-3所示。 表 3-3 单片机端口分配表模 块端口功能显示模块P0.0-P0.4、 P2.0-P2.7数码管频率值显示P1.4-P1.6LED单位显示分频模块P1.0-P1.2通道选择P1.3清零3.2 电源模块3.2.1 直流稳压电源的基本原理直流稳压电源一般由电源变压器T、整流、滤波及稳压电路所组成,基本框图如图3-5所示。图3-5 直流稳压电源框图及波形(1)电源变压器T的作用是将220V的交流电压变换成整流滤波电路所需要的交流电压Ui。变压器副边与原边的功率比为P2/P1=n,式中n是变压器的效率。(2)整流电路:整流电路将交流电压Ui变换成脉动的直流电压。再经滤波电路滤除较大的波纹成分,输出波纹较小的直流电压U1。常用的整流滤波电路有全波整流滤波、桥式整流滤波等。 图3-6 整流电路(3)滤波电路:各滤波电路C满足RL-C=(35)T/2,式中T为输入交流信号周期,RL为整流滤波电路的等效负载电阻。图3-7 滤波电路图3-8 滤波波形(4)稳压电路:常用的稳压电路有两种形式:一是稳压管稳压电路,二是串联型稳压电路。二者的工作原理有所不同。稳压管稳压电路其工作原理是利用稳压管两端的电压稍有变化,会引起其电流有较大变化这一特点,通过调节与稳压管串联的限流电阻上的压降来达到稳定输出电压的目的。它一般适用于负载电流变化较小的场合。串联型稳压电路是利用电压串联负反馈的原理来调节输出电压的。集成稳压电源事实上是串联稳压电源的集成化。3.2.2 电源电路设计根据上述介绍设计,电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。LM78XX系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用LM7805稳压芯片进行5V的电源电路设计。具体的5V电源电路如下图3-9所示。图3-9 5V直流电源电路3.3放大整形模块由于输入的信号可以是正弦波,三角波。而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。在整形之前由于不清楚被测信号的强弱的情况。所以在通过整形之前通过放大衰减处理。当输入信号电压幅度较大时,通过输入衰减电路将电压幅度降低。当输入信号电压幅度较小时,前级输入衰减为零时若不能驱动后面的整形电路,则调节输入放大的增益,时被测信号得以放大。根据上述分析,放大电路放大整形电路采用高频晶体管3DG100与74LS00等组成。其中2N3904为NPN型高频小功率三极管,组成放大器将输入频率为fx的周期信号如正弦波、三角波及方波等波形进行放大。与非门74LS00构成施密特触发器,它对放大器的输出波形信号进行整形,使之成为矩形脉冲。具体放大整形电路如图3-10所示。 图3-10 放大整形电路3.4 分频设计模块分频电路用于扩展单片机频率测量范围,并实现单片机频率和周期测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。可用74161进行分频。3.4.1 分频电路分析本频率计的设计以AT89S52单片机为核心,利用他内部的定时计数器完成待测信号周期频率的测量。单片机AT89S52内部具有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 74LS161芯片介绍74LS161是常用的四位二进制可预置的同步加法计数器,可以灵活的运用在各种数字电路,以及单片机系统种实现分频器等很多重要的功能。74LS161引脚如图3-11所示。图3-11 74LS161引脚图时钟CP和四个数据输入端P0P3,清零/MR,使能CEP,CET,置数PE,数据输出端Q0Q3,以及进位输出TC (TC=Q0Q1Q2Q3CET)。表3-4为74161的功能表。表3-4 74161的功能表清零RD预置LD使能EP ET时钟CP预置数据输入A B C D输出Q0 Q1 Q2 Q3L L L L LHL 上升沿A B C DA B C DHHL 保 持HH L 保 持HHH H上升沿 计 数其中RD是异步清零端,LD是预置数控制端,A、B、C、D是预置数据输入端,EP和ET是计数使能端,RCO(=ET.QA.QB.QC.QD)是进位输出端,它的设置为多片集成计数器的级联提供了方便。计数过程中,首先加入一清零信号RD0,使各触发器的状态为0,即计数器清零。RD变为1后,加入一置数信号LD0,即信号需要维持到下一个时钟脉冲的正跳变到来后。在这个置数信号和时钟脉冲上升的共同作用下,各触发器的输出状态与预置的输入数据相同,这就是预置操作。接着EP=ET=1,在此期间74161一直处于计数状态。一直到EP=0,ET1,计数器计数状态结束。从74LS161功能表功能表中可以知道,当清零端CR=“0”,计数器输出Q3、Q2、Q1、Q0立即为全“0”,这个时候为异步复位功能。当CR=“1”且LD=“0”时,在CP信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3,D2,D1,D0的状态一样,为同步置数功能。而只有当CR=LD=EP=ET=“1”、CP脉冲上升沿作用后,计数器加1。74LS161还有一个进位输出端CO,其逻辑关系是CO= Q0Q1Q2Q3CET。合理应用计数器的清零功能和置数功能,一片74LS161可以组成16进制以下的任意进制分频器。3.4.3 分频电路根据以上分析,采用74LS161进行16分频和JK触发器512分频设计分频电路如图3-12所示。图3-12 分频电路3.5 显示模块显示模块由频率值显示电路和量程转换指示电路组成。频率值显示电路采用四位共阳极数码管动态显示频率计被测数值,使用三极管8550进行驱动,使数码管亮度变亮,便于观察测量。3.5.1 数码管介绍常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。根据管脚资料,可以判断使用的是何种接口类型,两种数码管内部原理如图3-13所示。图3-13 两种数码管内部原理图LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有12 mA,最大极限电流也只有1030 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。3.5.2 频率值显示电路数码管电路设计不加驱动时,数码管显示数值看不清,不便于频率值的测量与调试。因此加入74LS246进行驱动数码管。使用8位数码管进行频率值显示,如果选择共阴极数码管显示,则需要8个三极管进行驱动,而采用共阳极数码管则需要74LS246驱动,为了节约成本,因此选用共阳极数码管进行动态显示,具体数码管设计电路如图3-14所示。图3-14 数码管显示电路第四章 系统的软件设计系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件Keil和Proteus的使用方法和调试仿真。4.1 软件模块设计系统软件设计采用模块化设计方法。整个系统由初始化模块,信号频率测量模块,自动量程转换和显示模块等模块组成。系统软件流程如图4-1所示。频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。测量初始化模块设置堆栈指针(SP)、工作寄存器、中断控制和定时计数器的工作方式。定时计数器的工作首先被设置为计数器方式,即用来测量信号频率。图4-1系统软件流程总图首先定时计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。定时计数器的工作被设置为定时器方式,定时计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位TR清0,停止计数。16位定时计数器的最高计数值为65535,当待测信号的频率较低时,定时计数器可以对被测信号直接计数,当被测信号的频率较高时,先由硬件十分频后再有定时计数器对被测信号计数,加大测量的精度和范围。本次设计由于本人知识的有限,所以设计的系统并不是最理想的。例如可以采用脉冲数定时测频法和脉冲周期测频法相结合,在高频的时候采用脉冲数定时测频法,在低频率的时候采用周期测频法。此法可保证测频过程中精度一直很高,但实现的电路和程序都将很复杂。还可以用外部计数器和单片机定时计数器共同计数来代替用单片机的定时计数器来进行定时,这样测量的精度可以进一步提高,但相对的端口分配和控制会相对复杂一些。4.2 中断服务子程序T1中断服务子程序流程如图4-2所示。测频时,定时器T1 工作在定时方式,每次定时50mS ,则T1 中断20 次正好为1秒,即T1用来产生标准秒信号,定时器T1 用作计数器,对待测信号计数,每秒钟的开始启动T1 ,每秒钟的结束关闭T1 ,则定时器T1 之值乘以分频系数就为待测信号的频率。图4-2 T1中断服务子程序定时计数器T0工作在计数方式, 对信号进行计数,计数器0中断流程图如图4-3所示。图4-3 计数器T0中断服务子程序4.3 显示子程序显示子程序将存放在显示缓冲区的频率或周期值送往数码管上显示出来,由于所有8 位数码管的8 根段选线并联在一起由单片机的P2口 控制,因此,在每一瞬间8位数码管会显示相同的字符,要想每位显示不同的字符就必须采用扫描方法轮流点亮各位数码管,即在每一瞬间只点亮某一位显示字符,在此瞬间,段选控制口P2输出相应字符。由P0.0-P0.7逐位轮流点亮各个数码管, 每位保持1mS ,在10mS20mS 之内再点亮一次,重复不止,利用人的视角暂留,好像8 位数码管同时点亮。数码管显示子程序流程如图4-4所示。图4-4 显示子程序流程图4.4 应用软件简介此设计需要在Keil软件平台上完成程序的调试,在Proteus软件平台上完成仿真显示。因此介绍如何使用Keil和Proteus进行软件的仿真。4.4.1 Keil简介Keil软件是目前最流行开发系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。而Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。(1)建立工程文件点击“Project-New project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字,点击“保存”按钮,出现第二个对话框,按要求选择目标器件片。建立新文件并增加到组。分别设置“target1”中的“Target,output,debug”各项,使程序汇编后产生HEX文件。(2)汇编,调试系统程序Keil 单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选择菜单“File New.”、单击对应的工具按钮或者快捷键Ctrl +N 将打开一个新的文本编辑窗口,完成汇编语言源文件的输入,并且完成源程序向当前工程的添加。然后在集成开发环境中选择菜单“FileSave As.”可以完成文件的第一次存储。注意,汇编语言源文件的扩展名应该是“ASM”,它应该与工程文件存储在同一文件夹之内。在完成文件的第一次存储以后,当对汇编语言源文件又进行了修改,再次存储文件则应该选择菜单“FileSave”、单击对应的工具按钮或者快捷键Ctrl +S 实现文件的保存。接着的工作需要把汇编语言源文件加入工程之中。选择工程管理器窗口的子目“Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“Add File to Group Source Group 1”,加入文件对话框被打开。在这个对话框的“查找范围(I)”下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型(T)” 下拉列表框选择“Asm Source file(*.a*;*.src)”,这时存储的汇编语言源文件将显示出来。双击要加入的文件名或者选择要加入的文件名再单击“Add”按钮即可完成把汇编语言源文件加入工程。文件加入以后,加入文件对话框并不消失,更多的文件也可以利用它加入工程。如果不需要加入其它文件,单击“Close”按钮可以关闭加入文件对话框。这时工程管理窗口的文件选项卡中子目录“Source Group 1”下出现一个汇编语言源文件。 需要注意,当把汇编语言源文件加入工程但还没有关闭加入文件对话框,这时有可能被误认为文件没有成功地加入工程而再次进行加入操作,系统将显示所需的文件已经加入的提示。在这种情况下,单击提示框中的“确定”按钮,再单击“Close”按钮可以关闭加入文件对话框。(3)编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。4.4.2 protues简介 protues是Labcenter公司出品的电路分析、实物仿真系统,而KEIL是目前世界上最好的51单片机汇编和C语言的集成开发环境。他支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真功能。Protues能够很方便的和KEIL、Matlab IDE等编译模拟软件结合。Proteus提供了大量的元件库有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。这里我将keil和 Protues两个软件的快速集成起来使用。(1)首先将keil和 Protues两个软件安装好。(2)然后在C:Program FilesLabcenter EletronicsProtues 6 ProfessionalMODELS(我的Protues是安装C盘里面的)目录下的VDM51.DLL 动态连接库文件复制到C:KEILC51BIN 目录下面(我的keil 也安装在C盘)这个文件将在keil的debug设置时用到。(3)打开protues软件,新建一文件将硬件原理图绘入图中。(4)将KEIL生成的HEX文件下载入单片机中,点击“开始”进行仿真。(5)在keil中进行debug,同时在proteus中查看直观的结果(如LCD显示)。这样就可以像使用仿真器一样调试程序。利用Proteus与Keil整合进行实验,具有比较明显的优势,当然其存在的缺点也是有的。利用仿真实验可以做全部的软件实验和极大多数的硬件系统,虚拟仿真实验室,因极少硬件投入、所以经济优势明显,不仅可以弥补实验仪器和元器件缺乏带来的不足,而且排除了原材料消耗和仪器损坏等因素。第五章 频率计的系统调试频率计的系统调试包括系统软、硬件联合调试。硬件调试包括电源模块、整形模块、分频模块等模块,软件调试就是通过修改程序,使频率计功能完善,提高频率计的测量精度。使用软件仿真,调试仿真结果,同时使用数字万用表和示波器测试输出电压值和输出波形,调试出正确的软硬件电路。5.1 硬件调试5.1.1 电源模块调试电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。搭建好硬件电路,检查线路连接正确,通电,LED灯亮,LM7805芯片不发烫,并用数字万用表测得电压为5.01V,证明电路基本正常工作。同时,使用数字示波器测量输出电压波形,看有无较大的纹波,经测量观察,基本上不存在纹波,没有太大的干扰,电压电路工作正常,示波器测的输出波形如图5-1所示。图5-1 5V输出波形5.1.2整形模块调试整形电路采用与非门74LS00构成施密特触发器,它对正弦波、三角波等各种波形信号进行整形,使之成为矩形脉冲。整形电路在Multisim10中进行电路的仿真与调试,在Multisim10绘制的整形电路如图5-1所示。选择虚拟函数发生器输入不同的信号,同时使用数字示波器测的输出波形,经测试施密特触发器可以把1Hz-40MHz的正弦波等波形整形为方波信号,仿真结果如图5-3所示。图5-2 整形电路仿真图5-3 整形电路输出波形仿真搭建整形电路模块,测试电路基本正确,使用数字示波器测得输入输出波形如图5-4所示。图5-4 整形电路实际输出波形5.1.3 分频模块调试为了达到1Hz-40MHz的频率范围,使用外部分频,搭建分频电路,测试电路基本正确,选择函数发生器输入2MHz以下不同频率的的方波信号,同时使用数字示波器测的输出波形,经观察分频电路可以把2MHz以下不同频率的方波波形进行十分频,示波器测得输入输出波形如图5-5所示。图5-5 分频电路实际输出波形5.2 软件调试5.2.1 Pouteus软件调试根据系统设计要求,进行Keil和Proteus系统仿真,不断调试程序,直到符合功能要求。Proteus总体仿真图5-6所示。图5-6 频率计整体仿真图5.2.2 功能调试当测量频率值小于1KHz以下时,数码管显示频率值,单位为Hz。例如输入信号123Hz,仿真显示如图5-7所示。图5-7 HZ档频率仿真当测量频率值大于且等于1KHz并小于1MHz时,数码管显示频率值,校正 LED灯闪烁,单位Hz档。例如输入信号10KHz,仿真显示如图5-8所示。图5-8 KHZ档频率仿真经上述测试,基本功能都以实现,可以测出波形频率值,符合要求。5.3系统调试5.3.1 系统软件调试经软件的调试修改再调试,如此反复,排除各种故障最终基本完成了设计所要求的任务。由单片机内部定时器计数器构成基本测量电路,外加整形和分频电路,由系统软件设计可以测出1HZ-5MHZ的量程范围,可以实现量程档的自动转换,使用的动态显示测量时会出现闪烁现象,但显示数值准确,稳定时显示不闪烁。 软件仿真测量数据如下表5-1所示。 表5-1 HZ档的数据记录表待测值(Hz)1050300450800888999测量值(Hz)10503004508008881000表5-2 KHZ档的数据记录表待测值(KHz)1500055000125000225000425000825000925000测量值(KHz)1555125225425825925 表5-3 MHZ档的数据记录表待测信(MHz)1.1231.5581.7892.2343.3454.4565.567测量值(MHz)1.1221.5581.7882.2343.3464.4585.5685.3.2 系统软硬件调试软件系统测试只能测试方波信号,外加硬件整形电路,可以测试正弦波、三角波等各种波形的频率值,把各模块组合在一起,做成完整的频率计,实物图如图33所示。经过不断的软硬件联合调试,修改程序和硬件,最终符合设计功能要求。为了衡量这次设计的频率计的工作情况和测量精度,我们对系统进行了调试。用这次设计的频率计对信号进行了测量,使用函数发生器输出各种波形,由实物频率计测得频率,记录数据。实际测得频率范围没有仿真结果那么高,只能稍微超过2MHz。实际记录数据如下表5-4所示。表5-4 HZ档的数据记录表待测值(Hz)10.328.9268.7324.8490.6678.3978.8测量值(Hz)1029269325491678979表5-5 KHZ档的数据记录表待测值(KHz)15.2633.2860.12161.75308.8470.7912.1测量值(KHz)15.333.360.2162.0309.0470.9912.4表5-6 MHZ档的数据记录表待测信(MHz)1.1231.3181.7271.8051.9562.0122.889测量值(MHz)1.1231.3181.7281.8061.9572.0132.8785.4 误差分析从记录的数据可以看出,系统软件仿真误差很小,在1Hz-2MHz范围内测量出来的频率基本上就是输入信号的频率,在超出这个范围后,才出现很小的误差。但是在硬件调试中,可能是由于标准元器件本身误差,如随着时间的延长,其值相比出厂时产生误差;造成测量结果没有软件仿真精确。同时手工焊接单片机最小系统、分频整形电路等也会带来一定的干扰,造成信号的失真,从而导致测量精度下降,测量范围有所缩小,但是可以看出,误差在允许范围内,所设计的电路基本符合要求。第六章 总结毕业设计已经结束,通过这次设计,我受益匪浅。毕业设计是一次综合性的实践,它将各种知识结合到一起综合运用到实践上来扩展、弥补、串联所学的知识。通过本次毕业设计我得到了很多收获。首先,了解了单片机的基本知识和在控制领域的作用和地位。其次掌握了C语言的编写程序,学会了使用PROTUTES和KEIL的仿真来实现,同时掌握了如何收集、查阅、应用文献资料,如何根据实际需要有选择的阅读书籍和正确确定系统所要使用的元器件的类型。再次,在精神方面锻炼了思想、磨练了意志。面对存在的困难首先分析问题根据目的要求确定可实现的部分,定出那不准的方面找同学和老师讨论研究,再完善、再修改、再发现问题、再解决培养了自己的耐心、恒心及遇事不乱的精神。总之,我明白了理论和实践之间存在的距离只有靠不断的思考不断的动手才能将所学的知识真正运用到实践上来。在毕业设计中我的很多方面的能力都得到了提高,尤其在单片机软件编程方面让我感触颇深。我个人认为软件设计是个即灵活又细腻的工作,它要求耐心和细心去不断完善,同时还需要有良好的逻辑思维能力。通过这次毕业设计,我分析问题和解决问题的能力有所提高,也巩固了所学的知识,加深了对理论知识的理解,更重要的是锻炼自己的独立性,为我今后的工作和学习打下坚实的基础。参考文献1模拟电子技术,元增民编著,中国电力出版社,2009.82模拟电子技术,华成英编著,高等教育出版社3模拟电子技术,姚娅川,罗毅编,化学工业出版社4数字电路,余志新,徐娟著,华南理工大学出版社5轻松玩转51单片机C语言,刘建清编著,北京航空航天大学出版社6单片机原理及应用M,胡汉才编,清华大学出版社7MCS-51系列单片机实用接口技术,李华,电子工业出版社8MCS-51系列单片机接口电路与应用程序实例,沈德金,北京航空航天大学出版社9高精度测频方案设计J,王保强等,成都信息工程学院报,2002.610基于单片机的高精度频率计设计J,卢飞跃,电子测量技术,2006.511单片机应用及C51程序设计,陈涛编著,机械工业出版社12C语言程序设计,王玉,王丽平主编,科学出版社13数字电子技术基本教程第一版 ,阎石,主编,清华大学出版社,2007.0814集成电路应用实验,李雷等编,国防工业出版社200315电子技术应用实验教程,李雷等编,电子科技大学出版社,200616单片机原理及接口技术,李朝青编,北京航空航天大学出版社,200517 单片微型计算机原理接口及应用,徐惠民、安德宁等编,北京邮电大学出版社,2000 致 谢在论文完成之际,我的心情万分激动。从论文的选题、资料的收集到论文的撰写编排整个过程中,我得到了许多的热情帮助。 我首先要感谢老师,本课题在选题及研究过程中得到老师的悉心指导。刘老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。刘老师花费大量了的时间和心血在我的论文上,才有我今天的定稿。还有在我大学三年悉心教导我的老师们,是你们教会我很多有用的知识,特别是教会了我解决问题思考问题的方式和习惯,我在做论文的时候才能有自己的思想和规划,论文工作才有了目标和方向。在此我代表大家向所有老师表示最诚挚的谢意。最后,感谢各位评审老师在百忙中抽出时间对论文进行审稿、参加答辩,并对加答辩会的老师和同学表示谢意。 2011年12月29 附录一 系统原理图电源部分放大及整形电路 分频电路 单片机最小系统、外部选档指示及数码管接口电路数码管电路附录二 频率计源程序#include #define uchar unsigned char#define uint unsigned intuchar K;int frequency; /定义测量的频率值uchar data T0_count=0,T1_count=0;/定义定时器T0、T1中断次数计数器uchar T0_TH0=0,T0_TL0=0,T0_num=0; /T0计数缓冲单元高,低地址和计数溢出次数计数sbit P10=P10;sbit KHZ=P11;sbit MHZ=P12;/定义频率校正信号输出端uchar code bit_tab=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/位选表,用来选择哪一只数码管进行显示uchar code seg_data=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x
展开阅读全文