等精度频率计毕业论文_第1页
等精度频率计毕业论文_第2页
等精度频率计毕业论文_第3页
等精度频率计毕业论文_第4页
等精度频率计毕业论文_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

目录前言3第一章概论411课题研究的目的和意义412测量原理413等精度频率计计数测量误差514设计思路及技术指标6第2章STC89C52单片机系统结构和原理821STC89C52单片机的简介822单片机的一般结构923STC89C52存储器配置1124引脚功能说明1225中断系统15251中断源16252中断控制17第三章硬件设计1831硬件电路设计1832电源电路1833单片机控制部分1934同步门控制电路1935计数电路2136显示电路233611602的功能简介233621602与STC89C52的连接24第四章软件设计2541程序流程25411系统主程序流程图25412初始化液晶27413初始化定时器27414定时器1溢出中断流程27415主循环28416显示子程序29第5章系统调试3151硬件调试3152调试软件的介绍31521KEILUVISION3软件介绍3153调试34531测频精度分析34532实验测试数据35附录一完整的C语言源程序40附录二系统设计原理图47附录三系统设计PCB图48附录四实物照片49附录五元器件清单表50前言随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。传统的频率计测量误差较大,等精度频率计以其测量准确、精度高、方便等优势将得到广泛的应用。传统的测频方法有直接测频法和测周法,在一定的闸门时间内计数,门控信号和被测信号不同步,计数值会产生一个脉冲的误差。等精度测频法采用门控信号和被测信号同步,消除对被测信号计数产生的一个脉冲的误差。等精度频率测量方法消除了量化误差,可以在整个测试频段内保持高精度不变,其精度不会因被测信号频率的高低而发生变化。采用单片机作为控制核心的等精度频率计,可以充分利用单片机软件编程技术实现等精度测频。通过单片机对同步门的控制,使被测信号和标准信号在闸门时间内同步测量,为了提高精度,将电子计数功能转为测周期,采用多周期同步测量技术,实现等精度测量。第一章概论本次设计的等精度频率计是一种用液晶显示被测信号频率的测量仪器它的基本功能是测量方波信号。本文讲述了等精度频率计的工作原理以及其各个组成部分,记述了整个设计过程中对各个部分的设计思路、对各部分电路设计方案的选择、以及对它们的调试、对调试结果的分析,最终得到实验结果。11课题研究的目的和意义测频一直以来都是电子和通讯系统工作的重要手段之一。高精度的测频仪有着广泛的市场前景。以往的测频仪都是在低频段利用测周期的方法、高频段用测频率的方法,其精度往往会随着被测频率的下降而下降。基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。所以等精度频率计有研究的价值。12测量原理图11等精度频率计测量原理图基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化。传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。等精度频率的测量原理图11所示。频率为FX的被测信号经通道滤波、放大、整形后输入到同步门控制电路和主门1(闸门),晶体振荡器的输出信号作为标准信号(时基信号)输入到主门2。被测信号在同步控制门的作用下,产生一个与被测信号同步的闸门信号,被测信号与标准信号(时基信号)在同步门控制信号的控制下。在同步门打开时通过同步门分别输入到事件计数器和时间计数器的信号输入端,计数器开始计数。同步门关闭时信号不能通过主门,计数器停止计数,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送显示。等精度频率测量方法是采用多周期同步测量。如图1的测量原理图所示由单片机发出预置门控信号GATE,GATE的时间宽度对测频精度影响较少,可以在较大的范围内选择,即在高频段时,闸门时间较短;低频时闸门时间较长。实现了全范围等精度测量,减少了低频测量的误差。在同步门的控制下,一方面保证了被测信号和时基信号的同步测量;另一方面在同步门打开后计数器并不是马上计数,而是在被测信号的下一个上升沿开始计数,同步门关闭后计数器也不是马上停止计数,而是在被测信号的下一个上升沿停止计数。即在实际闸门时间计数,从而提高了测量精度。由于采用D触发器实现的同步门的同步作用,事件计数器所记录的NX值已不存在误差的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的N0的值仍存在1误差的影响,只是由于时钟频率很高,误差的影响很小。所以在全频段的测量精度是均衡的,从而实现等精度频率测量。13等精度频率计计数测量误差由上述测量原理可知,公式FXF0NX/N0成立。设所测频率的准确值为FX0。在一次测量中,由于FX计数的起停时间是由该信号的上升沿控制的,因此,在T时间内对FX的计数NX无误差。在此时间内F0的计数N0最多相差一个脉冲,即N0L,则下式成立FX/NXF0/N0(1)FX0/NXF0/N0N0(2)由此可分别推得FXF0/N0NX(3)FX0F0/N0N0NX(4)根据相对误差公式有FX0/FX0FX0FX/FX0(5)将式3和式4代人式5整理后可得FX0/FX0N0/N0(6)因为N0L(7)所以N0/N01/N0(8)即相对误差FFX0/FX01/N0(9)其中N0TF0(10)由此可知,增大TP或提高FX,可以增大NX,减少测量误差,提高测量精度;相对测量误差与被测信号频率的大小无关,仅与取样时间及时基信号(标准信号)频率有关,可以实现被测频带内的等精度测量;取样时间越长,时基信号频率越高,分辨率越高。14设计思路及技术指标一设计方案以89C51型单片机为核心,结合其它的一些芯片一起设计一个等精度频率计。根据本设计的要求和方案的设想,总结一下本设计要做的具体的工作主要有以下几个方面第一,分析与论证本设计所采用的方案,包括主控系统、显示系统等的分析以及这些模块的功能等。在对设计要求充分分析的基础上,划分功能模块,选择需要的硬件设备。第二,收集大量等精度频率计方面的资料包括文字资料和试验数据,总结规律。可以有两种方法实现软件部分。(一)定时1S测信号脉冲次数用一个定时计数器做定时中断,定时1S,另一定时计数器仅做计数器使用,初始化完毕后同时开启两个定时计数器,直到产生1S中断,产生1S中断后立即关闭T0和T1(起保护程序和数据的作用)取出计数器寄存器内的值就是1S内待测信号的下跳沿次数即待测信号的频率。用相关函数显示完毕后再开启T0和T1这样即可进入下一轮测量。(二)测信号正半周期。对于11占空比的方波,仅用一个定时计数器做计数器,外部中断引脚作待测信号输入口,置计数器为外部中断引脚控制(外部中断引脚为“1”切TRX1计数器开始计数)。单片机初始化完毕后程序等待半个正半周期(以便准确打开TRX)打开TRX,这时只要INTX(外部中断引脚)为高电平计数器即不断计数,低电平则不计数,待信号从高电平后计数器终止计数,关闭TRX保护计数器寄存器的值,该值即为待测信号一个正半周期的单片机机器周期数,即可求出待测信号的周期待测信号周期T2CNT/12/FSOCCNT为测得待测信号的一个正半周期机器周期数;FSOC为单片机的晶振。所以待测信号的频率F1/T。第二种方法只适用于11占空比的方波信号,要测非11占空比的方波信号误差有点大,所以本设计优先使用第一种方法进行设计。第三,根据划分的功能模块,编写操作程序。这也是本设计中很重要的一个工作,确定编程时要尽量做到界面美观,操作简便。第四,进行程序调试,继续完善各功能模块的程序。二技术指标1设计一个4位的频率计,其频率范围在19999HZ;2送入信号应该符合电路要求的脉冲或正统波;3完成硬件电路的原理设计;4制作印刷电路板,要求电路布局合理,焊点合格。第2章STC89C52单片机系统结构和原理21STC89C52单片机的简介在本设计中采用了STC89C52单片机作为中心处理系统进行研究。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FLASH允许程序存储器在系统可编程,亦适于。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。它与以前的程序存储器相比具有以下优点2用户可自己写入,并根据需要灵活修改程序;用电擦除而不是用紫外线擦除,不需要特殊的擦除设备;写入与擦除的速度非常快。所有的MCS51系列单片机拥有一个相同的8位微处理器CPU,它由算术逻辑运算部件ALU、布尔处理器、控制器和工作寄存器组成。算术逻辑运算部件主要功能是实现数据的传送、数据的算术逻辑运算和布尔量处理,它们包括加、减、乘、除算术运算;增量(加1)、减量(减1)运算;十进制数调整;位置“1”、位置“0”和取反;与、或、异或等逻辑操作;数据传送操作。控制器是控制整个单片机系统各种操作的部件,它包括时钟发生器、定时控制逻辑、指令寄存器译码器、程序存储器和数据存储器的地址/数据传送控制等。从编程的角度看,MCS51CPU对用户开放的寄存器主要有以下几个累加器ACC、寄存器B、程序计数器PC、数据指针DPTR(由DPH和DPL两个8位寄存器组成),程序状态寄存器PSW、堆栈指针SP。22单片机的一般结构一、STC89C52单片机内部主要性能(1)与MCS51单片机产品兼容(2)8K字节在系统可编程FLASH存储器(3)1000次擦写周期(4)全静态操作0HZ33HZ(5)三级加密程序存储器(6)32个可编程I/O口线(7)个16位定时器/计数器(8)八个中断源(9)全双工UART串行通道(10)低功耗空闲和掉电模式(11)电后中断可唤醒(12)看门狗定时器(13)双数据指针(14)掉电标识符二、STC89C52单片机结构框图STC89C52单片机采用模块式的结构,有多个存储空间,每一个存储空间都留有一定的余量,这种结构为单片机的发展留有充分的余地,其结构框图如图213。图21STC89C52结构框图三、引脚图和逻辑符号图STC89C52一般为DIP40双列直插封装形式的器件,其引脚图和逻辑符号如图22所示。STC89C52的引脚P00P07、P10P17、P20P27、P30P37为四个8位并行输入/输出口,其中P3口、P0口和P2口为双功能口,可以作为普通输入/输出口(第一功能),也可以作为特殊输入/输出口。RST为复位输入线,ALE、为系统扩展控制PSENA线,XTAL1和XTAL2为时钟电路输入/输出线,VCC、GND为电源输入线,一般接5V和地4。图22STC89C52引脚图、逻辑符号图23STC89C52存储器配置STC89C52单片机独立的存储空间564K字节程序存储器空间(00FFFFH);256字节内部RAM空间(00FFH);128字节内部特殊功能寄存器空间(80H0FFH);位寻址空间(00FFH);64K字节外部数据存储器(RAM/IO)空间(00FFFFH)。一、程序存储器MCS51的程序存储器空间为64K字节,地址范围为0000HFFFFH,其地址指针为16位的程序计数器PC。0开始的部分程序存储器(4K,8K,16K,)可以在单片机的内部也可以在单片机的外部,这取决于单片机的类型,并由输入到引脚的电平控制。EASTC89C52内部有4KB的程序存储器,用于存放程序、原始数据或表格。若接VCC5V,则程序计数器PC的值在0至0FFFH之间时,CPU取指令时访问内部的程序存储器;PC值大于0FFFH时,则访问外部的程序存储器。如果接VSS地,则内部EA的程序存储器被忽略,CPU总是从外部的程序存储器中取指令。单片机外部扩展的程序存储器一般为EPROM电路(紫外线可擦除电可编程的只读存储器)。MCS51的引脚输出外部程序存储器的读选通信号,仅当CPU访问外部程序存储器时,才PSENPSEN有效(输出负脉冲)。MCS51复位后,程序计数器PC为0,CPU从地址0开始执行程序,即复位入口地址为0。另外,MCS51的中断入口也是固定的,程序存储器地址3、0BH、13H、1BH、23H单元为中断入口,MCS51的中断源数目是因型号而异的,中断入口也有多有少,但总是从地址3开始,每隔8个字节安排一个中断入口。表21程序存储器中的特殊单元单元地址特殊用途0000H启动地址0003H外部中断0中断服务程序入口地址000BH定时/计数器T0溢出中断服务程序入口地址0013H外部中断1中断服务程序入口地址001BH定时/计数器T1溢出中断服务程序入口地址0023H串行口接收和发送中断服务程序入口地址二、数据存储器STC89C52芯片共有256个RAM单元,其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00HFFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。24引脚功能说明STC89C52单片机采用40个引脚双列直插式封装,其中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复位的引脚,以及32条输入输出I/O引脚。下面按引脚功能分为4个部分叙述各个引脚的功能6。一、电源引脚VCC和VSS1、VCC(40脚)芯片工作电源输入端接5V电源;2、VSS(20脚)芯片工作接地端。二、外接晶振引脚XTAL1和XTAL21、XTAL1(19脚)接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHMOS单片机,该引脚作为外部振荡信号的输入端。2、XTAL2(18脚)接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。图23内部振荡电路外部振荡电路三、控制信号引脚控制信号或与其它电源复位引脚有RST、ALE、和等4种形式。PSENA1、RST(9脚)RST即为RESET,为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(5V)为内部RAM供电,以保证RAM中的数据不丢失。2、ALE(30脚)为地址锁存允许输出信号/编程脉冲信号输入端此信号为外部的扩展大陆低位字节地址提供一个允许锁存信号对芯片内的EPROM/EEPROM空间固化程序时提供一个编程脉冲信号。当访问外部存储器时,ALE信号用来所存地址的低位字节。在不访问外部存储器时,ALE端总是以振荡频率的6分频来周期性地输出正脉冲信号,故可作为对外的时钟输出。在访问外部数据存储器时,要跳过一个ALE脉冲。在对内部具有EPROM的8751单片机进行编程时,此引脚用于输入编程脉冲。3、29脚片外程序存储器读选通输出端,低电平有效。在CPU取指令或PSEN常数时,用于选通外部程序存储器。当从外部程序存储器读取指令或常数期间,每个机器周期两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,信号将不出现。PSEN4、(31脚)为访问外部程序储器控制信号/编程电压输入端,低电平有EAEA效。当端保持高电平时,片内存储器有效,单片机访问片内程序存储器4KB(MCS52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。EA四、输入/输出(I/O)引脚1、P0口(39脚22脚)P0口是开漏双向口可以写为1使其状态为悬浮用作高阻输入。P0也可以在访问外部程序存储器时作地址的低字节,在访问外部数据存储器时作数据总线,此时通过内部强上拉输出1。2、P1口(1脚8脚)P10P17统称为P1口,可作为准双向I/O接口使用。对于MCS52子系列单片机,P10和P11还有第2功能P10口用作定时器/计数器2的计数脉冲输入端T2;P11用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P1口接收输入的低8位地址。3、P2口(21脚28脚)P2口是带内部上拉的双向I/O,口向P2口写入1时,P2口被内部上拉为高电平,可用作输入口当作为输入脚时,被外部拉低的P2口会因为内部上拉而输出电流见DC电气特性。在访问外部程序存储器和外部数据时分别作为地址高位字节和16位地址MOVXDPTR,此时通过内部强上拉传送1。当使用8位寻址方式MOVRI访问外部数据存储器时,P2口发送P2特殊功能寄存器的内容。4、P3口(10脚17脚)P3口是带内部上拉的双向I/O口,向P3口写入1时,P3口被内部上拉为高电平,可用作输入口,当作为输入脚时,被外部拉低的P3口会因为内部上拉而输出电流见DC电气特性。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见表22表22单片机P3口管脚含义综上所述,STC89C52系列单片机纳为以下两点1单片机功能多,引脚数少,因而许多引脚具有第2功能;2单片机对外呈3总线形式,由P0、P2口组成16位地址总线;由P0口分时复用作为数据总线。25中断系统现代的计算机都具有实时处理功能,能对外界异步发生的事件作出及时的处理,这是依靠它们的中断来实现的。所谓中断是指中央处理器CPU在处理某件事情的时候,外部发生了某一事件(如定时器计数溢出),请求CPU迅速去处理,CPU暂时中断当前的工作,转入处理所发生的事件,处理完以后,再回到原来中断的地方,继续原来的工作。这样的过程就称为中断。实现这种功能的部件成为中断系统。产生中断的请求源就成为中断源。最典型的单片机有五个中断源,分别是外部中断0、定时器T0、外部中断1、定时器T1、和串行口中断。在这次的编程中就用到了这些中断。这五个中断的入口地址各不相同,列表如表237表23中断的入口地址引脚第2功能P30RXD(串行口输入端0)P31TXD(串行口输出端)P32INT0(外部中断0请求输入端,低电平有效)P33INT1(外部中断1请求输入端,低电平有效)P34T0(时器/计数器0计数脉冲输入端)P35T1(时器/计数器1数脉冲输入端)P36WR(外部数据存储器空间写通信号输出端,低电平有效)P37RD(外部数据存储器空间读信号输出端,低电平有效)中断源入口地址外部中断00003H定时器T0000BH外部中断10013H定时器T1001BH串行口中断0023H典型的单片机可以实现二级中断服务程序嵌套,每个中断源可以编程为高级中断,或低优先级中断,允许或禁止向CPU请求中断。与中断系统有关的特殊功能寄存器有中断允许寄存器IE、中断优先级控制寄存器IP、中断源寄存器(TCON,SCON中的有关位)。251中断源89C52单片机的八个中断源其中的五个是2个INT0、INT1(P32,P33)上输入的外部中断源;3个内部中断源,它们是定时器/计数器T0、T1的溢出中断源和串行口的发送接受中断。这些中断源分别锁在TCON、SCON的相应位中8。一、外部中断源INT0、INT1上输入的两个外部中断源和它们的触发方式控制位所存在特殊寄存器TCON的低四位,TCON的高四位为T1、T0的运行控制位和溢出标志位表24外部中断源D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0IE1外部中断1请求源(INT1,P33)标志。IE11,外部中断1正向CPU请求中断,当CPU响应该中断时由硬件“0”IE1(边沿触发方式)。IT1外部中断1触发方式控制位。IT10,外部中断1位电平触IT11,外部中断1位边沿触发方式。IE0外部中断0请求源(INT0,P32)标志。IE01外部中断0向CPU请求中断,当CPU响应中断时,由硬件清“0”IE0(边沿触发方式)。IT0外部中断0触发方式控制位。IT00,外部中断0为电平触发方式,IT01,外部中断0为边沿触发方式。其功能和IT1相同。二、内部中断源定时器/计数器T0的溢出中断TF0(TCON5)T0被允许计数以后,从初值开始加1计数,当产生溢出时置“1”IF0,向CPU请求中断,一直保护到CPU响应该中断时才由硬件清零(也可以由查询程序清零)。定时器/计数器T1的溢出中断TF1(TCON7)其功能与TF0相同。串行口中断串行口的接收中断RI(SCON0)和发送中断TI(SCON1)逻辑或以后作为内部的一个中断源。252中断控制单片机对中断源的开放或屏蔽,每个中断源是否允许中断,89C51是由内部的中断允许寄存器IE控制的(IE为特殊功能寄存器,它的字节地址为A8H),其格式如表259表25中断控制格式D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0EACPU的中断开放标志EA1,CPU开放中断EA0,CPU屏蔽所有的中断申请。ES串行口中断允许位。ES1,允许串行口中断;ES0,禁止串行口中断。ET1定时器/计数器T1的溢出中断允许位。ET11,允许T1中断;ET10,禁止T1中断。EX1外部中断1中断允许位。EX11允许外部中断1中断;EX10,禁止外部中断1中断。ET0定时器/计数器T0溢出中断允许位。ET01,允许T0中断;ET00,禁止T0中断。EX0外部中断1中断允许位。EX01,允许外部中断0中断;EX10,禁止外部中断0中断。第三章硬件设计31硬件电路设计硬件电路主要分为电源电路、单片机控制部分、同步门控制电路、计数和液晶显示电路。电路采用PROTELL99SE是电路设计中功能比较强大软件,本设计用其原理图和PCB图。32电源电路此次设计的电源需求,共需要用到5V,15V,15V三种电压,其中15V,15V直接由外部电源直接产生提供,而5V电源自行设计,主要提供给AT89C52单片机使用,直接设计在电路当中,原理见图31图315V电源电路在图31中,首先电源电压220V经过变压器变压产生一个18V左右的交流电压,再经过桥式整流电路和2200UF滤波电容C4的滤波产生一个20V左右的直流电压,再经7805三端稳压块产生一个5V的电压,再次经过1000UF滤波电容C5再次滤波,5V电压就很稳定。此外,在图31中使用的LM7805是正电压稳压集成电路,为固定输出5V输出稳压集成电路采取特殊方法也可使输出高于5V,最大输出电流为1A。具有体积小、集成度高、线性调整率和负载调整率高,在线性电源时代占领了很大市场。33单片机控制部分STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图211所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。如图32所示CP02367RESTXDINWLG/VUJKB图32单片机控制部分34同步门控制电路同步门控制电路主要由D触发器74LS74(同步门控制)、六反相器74LS04和二输入或非门74LS02组成(主门1、主门2)。主门1控制被测信号FX的通过,主门2控制时钟信号F0的通过,两门的启闭都由同步门控制电路控制。被测信号在同步控制门的作用下,产生一个与被测信号同步的闸门信号,被测信号与标准信号(时基信号)在同步门控制信号的控制下。在同步门打开时通过同步门分别输入到事件计数器和时间计数器的信号输入端,计数器开始计数。同步门关闭时信号不能通过主门,计数器停止计数,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送显示。在同步门的控制下,一方面保证了被测信号和时基信号的同步测量;另一方面在同步门打开后计数器并不是马上计数,而是在被测信号的下一个上升沿开始计数,同步门关闭后计数器也不是马上停止计数,而是在被测信号的下一个上升沿停止计数。即在实际闸门时间计数,从而提高了测量精度。具体电路图如图33所示CLR1D2K3P4Q56GN7890VUSFXF图33(A)同步门74LS74电路图YAB图33(B)同步门74LS02、74LS04电路图74LS74简要说明74LS74为带预置和清除端的两组D型触发器引出端符号1CP、2CP时钟输入端1D、2D数据输入端、1Q、2Q输出端Q12CLR1、CLR2直接复位端(低电频有效)PR1、PR2直接置位端(低电平有效)图34(A)外接管脚图图34(B)逻辑图35计数电路单片机选用STC89C52,其中P10用于控制同步门D触发器74LS74产生同步的闸门信号,P12用于对74LS393组成的计数器清零,一次计数完成后单片机通过控制两片74LS244读取被测信号与标准信号的低8位计数值,高位计数值在单片机的T0、T1中。然后单片机对计数值进行运算处理,并送出显示。计数器包括事件计数器和时间计数器两部分,它们是两组完全相同的计数电路。分别由前后两级组成。前级由双4位异步计数器74LS393级联构成八位二进制计数器;后级由STC89C52单片机内的定时/计数器构成十六位二进制计数器。标准信号部分采用10MHZ石英晶体振荡器来提供测量所需要的标准脉冲信号。由于采用D触发器实现的同步门的同步作用,事件计数器所记录的NX值已不存在误差的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的N0的值仍存在1误差的影响,只是由于时钟频率很高,误差的影响很小。所以在全频段的测量精度是均衡的,从而实现等精度频率测量。具体电路图如图35所示1GA2Y4356789ND0VCULSCLEARQBDPFX图35计数电路74LS393简要说明74LS393为两个4位二进制计数器,异步清零端(1CLEAR,2CLEAR)为高电平。不管时钟端1A,2A状态如何,即可以完成清除功能。当1CLEAR,2CLEAR为低电平时,1A,2A脉冲下降沿作用下进行计数操作。引出端符号1A、2A时钟输入端(下降沿有效)1CLEAR,2CLEAR异步清零端1QA1QD、2QA2QB输出端图36(A)74LS393外接管腿图图36(B)74LS393逻辑图36显示电路显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中最常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种。由于这两种显示器结构简单,价格便宜,接口容易实现,因而得到广泛的应用,本次方案采用了1602液晶显示器。3611602的功能简介140通道点阵LCD驱动;2可选择当作行驱动或列驱动;3输入/输出信号输出,能产生202个LCD驱动波形输入,接受控制器送出的串行数据和控制信号,偏压V1V6;4通过单片机控制将所测的频率信号读数显示出来;具体引脚功能见表31311602引脚和指令功能引脚符号名称功能1VSS接地0V2VDD电路电源5V(正负10)3VEE液晶驱动电压V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。4RS寄存器选择信号高电平时选择数据寄存器、低电平时选择指令寄存器。5R/W读/写信号高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。6E片选信号当E端由高电平跳变成低电平时,液晶模块执行命令。714DB0DB7数据线D0D7为8位双向数据线。3621602与STC89C52的连接123456790YCONRKVP图37显示电路图37中为单片机与1602的连接图。其中,D0D7为1602数据口,分别接单片机的P00P07口;单片机的P20口接1602的复位脚RS;单片机的P21口接1602的读/写控制脚RW;单片机的P22口接1602的使能端E;通过一个10K的电位器调整VEE电压改变液晶对比度,对比度调节不当时会产生“鬼影”。通过这种连接方式,就可以实现单片机对1602控制显示测得频率数值。第四章软件设计本章节主要介绍了电路的软件设计,整个系统由主程序,中断服务程序模块、循环和显示子程序模块组成,本文将对这几个子模块的设计做介绍。41程序流程411系统主程序流程图系统软件的设计主要是和硬件电路相结合,正确地实现等精度测量。整个系统软件的设计采用了自顶向下的模块化的结构方式,将各个功能分成独立模块,由系统的程序统一管理执行。它主要完成各种功能,如测量、数据运算、显示等。如图41所示为频率测量主程序流程图,在计数前对计数器清零。然后,发出命令打开闸门进入闸门时间,计数器在闸门时间内计数。延时子程序结束后,发出命令关闭闸门使计数器停止计数;单片机再依照程序读取计数器的值,并与单片机内部计数器所计的值合并在一起。由公式可知,即被测频率FXF0NX/N0来进行运算,由于精度要求,NX和N0都由24位二进制数来计数。开闸门设置取样时间初始化定时器运算程序读取数据显示程序开始一个周期结束设置定时器0开外部中断0,外部中断1设置取样时间为1S分别读取两个缓存器的值,根据外部中断产生次数以及读取缓存器的值计算1S内两个频率源的的周期数根据等精度原理计算被测源的频率将计算出的频率通过液晶显示出来图41主程序流程图412初始化液晶初始化液晶设置基本指令集开启显示清屏AC递增画面不动图42液晶初始化流程图413初始化定时器初始化定时器设置定时器T1,1MS溢出设置定时器T0初始值为0用于计数图43初始化定时器414定时器1溢出中断流程本设计中通过定时器1来定时1S,用于标准信号和待测信号的计数。通过设定初始值来使定时器T1一次溢出中断为50MS。在此通过一个全局变量FLAG,来判断是否达到1S,每到50MSFLAG加1,当FLAG20时,所定时时间为2050MS1S。设置TH1、TL1初始值关全局中断FLAGFLAG满20关计数器T0、T1开全局中断定时器T1溢出中断图42中断子程序流程图415主循环主循环中,先对标准信号计数,判断FLAG是否满20,如果满20则代表计数满1S,此时计算计数器T0中数值,然后再加上P1口的数据,则为此次计数值。下次计数为对待测信号的计数,与标准信号计数原理相同。最后将两次信号比较,得到待测信号的频率值。主循环打开标准信号测量通道开定时器T0、T1FLAG20NUNTH0256TL0FREE1NUM256P1得到频率值以MS为单位关定时器,并置0,FLAG0清空74LS393计数值打开待测信号的测量通道开定时器FLAG20NUMTH0256TL0FREE2NUM256P1得到频率值以MS为单位FXFREE1/FREE210MHZ显示频率TH00TL00清空计数器0清空74LS393的计数值开定时器T1、T0图43主循环流程图416显示子程序显示子程序将存放在显示缓冲区的频率或周期值送往液晶上显示出来。由于1602液晶可以显示32各个字符,所以只显示频率的话有点浪费。在本设计中,将液晶的第一行分别显示了TH0、TL0、P1的值,用于调试。第二行全部用于显示频率,可以最低显示到个位,精度较高。在编程应用1602液晶驱动时,只需要根据图44的流程图调用相关函数既可完成显示模块的所有功能,对于本课题所用的1602驱动函数,其中的液晶初始化函数已经包括了初始化和清屏两大功能,此外,在指定位置显示一串字符的函数也已经包括了设置显示位置和显示字符串的两大功能,因为在本课题的实际编程中对于液晶显示模块的设计相对来说比较简单。显示子程序将TH0/TL0/P1的值都转换成字符,并填充到显示缓存中将FX频率值转换成字符,填充到显示缓存将TH0/TL0/P1的值显示在第一行将频率值显示在第二行图441602液晶显示基本流程第5章系统调试51硬件调试硬件电路主要包括模拟电路部分,单片机外围电路及显示电路,在联调之前必须要验证这几个部分能正常工作。把仿真机的仿真头插到电路板单片机的插槽中,接通仿真机和电路板的电源,然后打开界面输入显示子程序进行编译、加载调试。如果能在液晶上显示正确的数字,则单片机与显示部分能够正常工作。经过反复的调试与修改,单片机部分验证完毕。模拟电路部分分低频和高频两部分,分别进行调试。低频部分通过输入一个0到10MHZ的信号,幅度为30MV,通过示波器观察其输出,可以看出其输出幅度为37V,实现了放大功能。高频部分通过输入一个大于1MHZ的高频信号,幅度在50MV左右,可以发现其输出变为幅度为3V左右的方波,实现了放大功能。52调试软件的介绍521KEILUVISION3软件介绍一、概述KEILUVISION3是美国KEILSOFTWARE公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KEILUVISION3软件提供丰富的库函数和功能强大的集成开发调试工具,全WINDOWS界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。二、工作界面首先使用KEIL新建一个工程,设置好各个选项。然后新建一个C文件,并编写所有源代码然后编译,查错,直到编译完全通过为止,下图就是编译通过后的界面。图51有关编译、连接、项目设置的工具条图52正确编译、连接之后的结果在设置好工程后,即可进行编译、连接。选择菜单PROJECTBUILDTARGET,对当前工程进行连接,如如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码如果选择REBUILDALLTARGETFILES将会对当前工程中的所有文件重新进行编译然后再连接,确保最终产生的目标代码是最新的,而TRANSLATE项则仅对该文件进行编译,不进行连接。以上操作也可以通过工具栏按钮直接进行。图51是有关编译、设置的工具栏按钮,从左到右分别是编译、连接、全部重建、停止编译和对工程进行设置。编译过程中的信息将出现在输出窗口的BUILD页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到如图52所示的结果,提示获得了名为EXAM1HEX的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于KEIL的仿真与调试,这时可以进入下一步调试的工作。三、调试主要方法和技巧1常用调试命令在对工程成功进行汇编、连接以后,按CTRL5或者使用菜单DEBUGSTART/STOPDEBUGSESSION即可进入调试状态,KEIL内建立一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真机的情况下进行程序的调试。进入调试状态后,界面与编辑状态相比有明显的变化,DEBUG菜单项中原来不能用的命令现在可以使用了,工具栏会多出一个用于运行和调试的工具条,DEBUG菜单上的大部分命令可以在此找到对应的快捷按钮,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、性能分析、工具按钮等命令。学习程序调试,必须明确两个重要的概念,即单步执行与全速运行。全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快,并可以看到该段程序执行的总体效果,即最终结果正确还是错误,但如果程序有错,则难以确认错误出现在哪些程序行。单步执行是每次执行一行程序,执行完改行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与我们写该行程序所想得到的结果相同,借此可以找到程序中的问题所在。程序调试中,这两种运行方式都要用到。2在线汇编在进入KEIL的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要使修改后的代码起作用,必须先退出调试环境,重新进行编译、连接后再次进入调试,如果只是需要对某些进行测试,或仅需要对源程序进行临时的修改,这样的过程未免有些麻烦,为此KEIL软件提供了在线汇编的能力,将光标定位于需要修改的程序行上,用菜单DEBUGINLINEASSAMBLY即可出现如图53的对话框,在ENTERNEW后面的编辑框内直接输入需要更改的程序语句,输入完后键入回车将自动指向下一条语句,可以继续修改,如果不再需要修改,可以点击右上角的关闭按钮关闭窗口。图53在线汇编窗口3断点设置程序调试时,一些程序行必须满足一定的条件才能被执行到,这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单DEBUGINSERT/REMOVEBREAKPOINT设置或移除断点DEBUGENABLE/DISABLEBREAKPOINT是开启或暂停光标所在行的断点功能DEBUGDISABLEALLBREAKPOINT暂停所有断点DEBUGKILLALLBREAKPOINT清除所有的断点设置。这些功能也可以用工具条上的快捷按钮进行设置。53调试531测频精度分析由第一章所述的测量原理可知,本系统的测频公式为FXFSNX/NS其误差分析如下设所测频率值为FX,其真实值为FXE,标准频率为FS。在一次测量中,由于FX计数的起停时间都是由该信号的上跳沿触发的,在TPR时间内FX的计数NX无误差;此时内的计数NS最多相差一个脉冲,即|NS|1则FX/NXFS/NSFXE/NXFS/NSNS由此推得FXFS/NSNXFXEFS/NSNSNX根据相对误差公式有FXE/FXE|FXEFX|/FXE可以得FXE/FXE|NS|/NS|NS|1|NS|/NS1/NS即相对误差FXE/FXE1/NS又NSTPRFS由此可知(1)相对测量误差与频率无关;(2)增大TPR或提高FS,可以增大NS,减少测量误差,提高测量精度;(3)本测频系统的测量精度与预置门宽度和标准频率有关,与被测信号的频率无关。在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,本测频系统所采用的测量方法的测量精度不变。为了恒定测量精度,可采用高频率稳定度和高精度晶体振荡器作标准频率发生器。532实验测试数据整个系统比较复杂,因此我们采用自底向上的调试方法,也就是先进行各个单元电路的软件仿真和硬件调试,在各个单元电路调试好后再进行系统调试,最后进行硬件的编程固化及系统的组装。程序在KEIL3上调试通过。并使用目前较为流行的C语言编写。既方便复杂的数学运算,判断语句的使用又灵活,不用考虑推栈情况,所以相对与汇编漏洞出现较少。经软件的调试修改再调试,如此反复,排除各种故障最终基本完成了设计所要求的任务。由单片机内部定时器计数器构成基本测量电路,外加整形和分频电路,由系统软件设计可以测出1HZ9999HZ的量程范围,使用的动态显示测量时会出现闪烁现象,但显示数值准确,稳定时显示不闪烁。测试由信号源发出的频率时,测量值如表51所示。测量条件方波,幅度为VPP10V。表51SP1641B型函数信号发生器发出的信号测量结果被侧信号参考频率测量值误差88354KHZ883587KHZINCLUDE“LCD1602H“INCLUDE“INTRINSH“DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTDEFINEULONGUNSIGNEDLONGUCHARFLAG/成功标志ULONGFREE/频率计数ULONGNUMSBITG242P31SBITCLEAR393P32/函数原型VOIDDELAY_50US功能50US的延时/VOIDDELAY_50USUNSIGNEDINTT/T100,5MST1000,50MSUNSIGNEDCHARJFORT0TFORJ19J0J/函数原型VOIDTIME1S功能/VOIDTIMER1INTERRUPT3EA0TH115536/256TL115536256FLAGIFFLAG20TR10TR00EA1VOIDUPDATA_DISP/更新缓冲区数据程序DISP_BUF10TH0/1000X30DISP_BUF11TH0100/100X30DISP_BUF12TH0100X30DISP_BUF13DISP_BUF14TL0/1000X30DISP_BUF15TL0100/100X30DISP_BUF16TL0100X30DISP_BUF17DISP_BUF18P1/1000X30DISP_BUF19P1100/100X30DISP_BUF110P1100X30DISP_BUF111DISP_BUF112SIZEOFUNSIGNEDINT0X30DISP_BUF113SIZEOFUNSIGNEDSHORTINT0X30DISP_BUF114SIZEOFUNSIGNEDLONG0X30DISP_BUF115SIZEOFDOUBLE0X30DISP_BUF1160DISP_BUF20DISP_BUF21DISP_BUF22DISP_BUF230DISP_BUF240X30/1GDISP_BUF25FREEULONG1000000000/ULONG1000000000X30/100MDISP_BUF26FREEULONG100000000/ULONG100000000X30/10MDISP_BUF27FREEULONG10000000/ULONG10000000X30/1MDISP_BUF28FREEULONG1000000/ULONG1000000X30/100KDISP_BUF29FREEULONG100000/100000X30/10KDISP_BUF210FREE10000/10000X30/千DISP_BUF211FRE

温馨提示

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

最新文档

评论

0/150

提交评论