低频相位测量仪软件设计 毕业设计论文_第1页
低频相位测量仪软件设计 毕业设计论文_第2页
低频相位测量仪软件设计 毕业设计论文_第3页
低频相位测量仪软件设计 毕业设计论文_第4页
低频相位测量仪软件设计 毕业设计论文_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1绪论近年来,随着科学技术的迅速发展,很多测量仪逐渐向“智能仪器”和“自动测试系统”发展这使得仪器的功能丰富而使用简单。低频数字式相位测试仪在工业领域中是经常用到的通用测量工具。相位检测技术的应用已深入到如多领域,广泛应用于国防、科研、学校和厂矿,传统的模拟指针式仪表显然不能够满足所需的精度要求,随着电子技术以及微机技术的发展,数字式仪表因其高精度的测量分辨率以及高度的智能化、直观化的特点得到越来越广泛的应用。同时,在电力系统中电网并网合闸时,要求两电网的电信号相同,这就要求精度的测量两工频信号之间的相位差。还有测量两列同频信号的相位差在研究网络、系统的频率特性中具有重要的意义。同时,微电子技术的迅猛发展,给国民经济、生产活动和社会活动带来极大的变革。特别是集成电路和微电子技术的飞跃发展,更为设计、安装体积小、性能优越、功能全的装置创造了良好的条件。可以说,电子技术的应用水平是现代化进程的一个重要标志。微电子技术、计算机技术、通信技术、单片机原理技术等先进技术与具体应用对象相结合而设计的产品更是受世人青睐。本次设计即是利用单片机实现对低频相位差的测量,使得仪表更加数字化、智能化,功能比起采用电子或数字电路更加强大。在科学研究、实验或生产实践中,常常需要对低频移相网络的信号进行相位测量,但某些测量方法仅仅局限于测某一频率信号的相位,不能满足一定范围内任意频率信号的相位测量,总之低频相位测量仪的现代科学技术中的应用越来越多,比如在电力系统中常常需要对两个同频率信号(如工频电压和工频电流)之间的相位关系进行准确的测量。“相位时间”法和“功率比例法”是两种比较传统的相位差测量方法,在现代技术领域中还对基于离散付里叶变换的相位测量原理进行了研究,并有了一定的成效,研究表明基于离散付里叶变换原理的相位测量方法具有测量精度高抗干扰能力强电路设计简单等特点。总之相位测量技术在我们生活中起到了不可忽视的。本低额教字式相位测量仪由AT89C51芯片和集成电路构成。由于AT89C51芯片的集成度高,智能程度高,功能强大,使得它实现起来比较简单,而且,具有体积小,性价比高、性能稳定的特点。2设计方案论证从功能角度来看,看相位测量仪要完成信号频率和相位差的测量相位测量仪有两路输入信号,也是被测信号,它们是两个同频率的正弦信号,频率范围为20HZ20KHZ(正好是音频范围),幅度为UPP15V(可以扩展到035V),但两者幅度不一定相等。现在来讲解一下相位、相位差的概念。在“电路原理”课程中已经介绍过这些概念,不妨令正弦信号为A(T)AMSINT0,式中AM称为幅值(最大值),且,A称为有效值;(T)T0称为相位,0称为初相位,称为角频率。M2AM、0称为正弦量的三要素。只有两个同频率的(正弦)信号才有相位差的概念。不妨令两个同频率的正弦信号为A1(T)A1MSINT01,A2(T)A2MSINT02,则相位差T01T020102,由此可看出,相位差在数值上等于初相位之差,是一个角度。不妨令T,其中T是相位差对应的时间差,且令T为信号周期,则有比例关系T360T可以推导得到(T/T)360,此式说明,相位差与T一一对应,可以通过测量时间差T及信号周期T,计算而得到相位差,这就是相位差的基本测量原理。由相位差的基本测量原理可知,相位差的测量本质上是时间差T及信号周期T的测量,也就是时间的测量,而时间的测量不可避免地要用到电子计数器。时间的测量有多种方法,而设计题目关于相位测量仪的技术指标要求会影响到我们对方案的选择,由一般常识可知,单片机应用系统一般能较好地实现各种不同的测量及控制功能,因此,选择使用单片机实现系统功能,完成系统指标。21原理框图以单片机为核心的相位测量仪原理框图如图21所示。两路待测信号经整形后变成了矩形波I、V,且可以认为I和V是同频率、不同相伴的矩形波。待测信号2待测信号1整形电路整形电路鉴相器89C51DISPLAY键盘图21以单片机为核心的相位测量仪原理框图22频率的测量单片机对信号频率的测量可以采用直接测频率的方法和测周期的方法。一般是信号频率较高时,采用直接测频率的方法,而信号频率较低时,采用测周期的方法。(1)用直接测频率的方法获得信号频率。让定时器/计数器T1对外部事件计数,而让定时器/计数器T0定时1S,只有在这1S内T1启动对外部事件(即信号I)计数,则T1的计数值就是待测信号的频率。(2)用测周期方法获得信号频率。由图22可知,对I进行2分频后的信号波形中,高电平宽度正好对应I的周期,将此高电平信号作为单片机内部定时器的硬件启动/停止信号,便可测得周期T,再由公式F1/T,计算得到频率。图22用测周期的方法获得信号频率I的2分频I23相位差的测量鉴相器就是异或门,在鉴相器的输出波形IV中,正脉冲宽度就是要测量的I和V相位差所对应的时间差T,如图23所示。在测量相位差时还应考虑超前、滞后两种情况(如图23中所示为I超前V)。把IV波形中的正脉冲作为门控信号,控制闸门的启闭,即控制单片机内部定时器/计数器的启动/停止,从而达到测量时间差T的目的,再根据公式T,计算得到相位差T。另外,由图23可知,IV信号是I信号的二倍频(I与V同频),由此可见,对于同频不同相的两个信号,经过异或门后可得到二倍频的信号。因此从这个意义上讲,异或门可实现信号的二倍频。图23鉴相器的输入、输出波形图IVVI24单片机测量时间差、周期的方法下面详细谈谈单片机测量时间差、周期的方法。241工作原理51系列单片机的芯片内部集成了两个16BIT的硬件定时器/计数器,它们是T0、T1。单片机芯片内部的硬件定时器/计数器有三个特点定时器/计数器可以与CPU并行工作;定时器/计数器可以采用中断方式与系统协调工作;定时器/计数器可以由软件或硬件控制启动和停止。单片机的定时器/计数器受TMOD及TCON的控制,如图24所示。图24TMOD和TCON若GATE0,则由TRI控制定时器/计数器的启动和停止,为纯软件控制方式。若GATE1,TRI1,则由INTI引脚的外部信号控制定时器/计数器的启动和停止,是纯硬件控制方式。若GATE1,则由TRI和INTI引脚的外部信号混合控制定时器/计数器的启动和停止,软、硬件结合控制方式。定时器/计数器工作在定时工作方式时,其计数器对内部机器周期进行加1计数,TMODGATEC/TM1M0GATEC/TM1M0TCONTF1TR1TP0TR0IE1IT1IE0IT0而定时器/计数器的工作启动、停止采用外部硬件控制。242具体实现方法电路图如图25所示,该电路由单片机、整形电路、门电路等组成。由定时器/计数器T0、T1分别测量周期、时间差。图25单片机测量时间差、周期的电路图时序图如图26所示。需要说明的是,由软件创建一标志位2FH1,当输入引脚P360时,CPU置位标志位2FH1,而当P361时,CPU在读取时间差数据后清零标志位2FH1。FED定时器测量时间差CPU从定时器计数据并清零定时器定时器测量周期CBA图26时序图3系统硬件设计本设计将硬件系统分为数据采样处理及单片机最小系统两个部分,这就充分发挥了单片机控制运算能力强的特点。数据采集由鉴相器完成,可以准确地采集到两个同频正弦的相位差所对应的时间差以及信号的周期,从而提高系统的可靠性。由于单片机具有较强的运算、控制能力,因此,使用单片机最小系统完成读取鉴相器得到的数据,并根据所读取的数据计算待测信号的频率及两路同频信号之间的相位差。同时通过功能键切换,由显示模块可以显示待测信号的频率和相位差。31输入电路设计输入电路起到波形变换及整形的功能,由于被测信号是周期相同、幅度和相位不同的两路正弦信号,为了准确地测量出两路正弦信号的相位差及其频率,需要对输入波形进行整形,使输入信号变成矩形信号,并送给鉴相器进行处理。我们设计了这两种整形输入电路方案。第一种方案是使用单门限电压比较器来完成,当输入信号电压每通过一次零时限电压比较器的输出就要翻转一次,即比较器的输出端将产生一次电压跳变,它的正、负向幅度均受到供电电源的限制,因此,输出电压小型是具有正负极性的方波,这样就完成了电压波形的整形工作。但是通常情况下,输入信号往往会含有干扰,这对单门限电压比较器尤为不利,由于有干扰信号,导致单门限电压比较器在输入信号过零点时会产生多次触发翻转的现象,这样就会导致采集数据(计数)不准确,从而使单片机无法计算出正确的被测信号的频率和相位差数值。这种方案电路图如图31。123J1CON3R1100KR3100KR210KR410KD1IN4148D4IN4148D2IN4148D5IN41484523D8LM3391D3DD6D671D7LM3392AINBINAINSGNDBINS5V5V5V5V图31采用单门限电压比较器的整形电路另外,在相位差测量过程中,不允许两路被测输入信号在整形输入电路中发生相对相移,或者应该使得两路被测信号在整形输入电路中引起的附加相移是相同的,因此,我们对A、B两路信号采用了相同的整形电路。为了避免出现被测输入信号在过零点时多次触发翻转的现象,我们设计了第二种整形电路,即使用施密特触发器组成的整形电路。由于施密特触发器在单门限电压比较器的基础上引入了正反馈网络,因为正反馈的作用,它的门限电压跟着输出电压U0的变化而改变,从而使施密特触发器有两个门限电压,所以可以提高输入电路的抗干扰能力。第二种整形电路电路如图32所示,电路中我们使用两个施密特触发器触发器对两路被测输入信号进行整形。在图32中,比较器LM339连接成施密特触发器的形式。为了保证输入电路对相位差测量不带来误差,必须保证两个施密特触发器的两个门限电平对应相等,这可以通过调节电位器R8来实现。输入信号再通过各种门电路以便单片机完成相位差及周期的测量。123J1CON3R110KR710KR910KR2510R310KR4100R510KR6R4523U1ALM339671U1ALM339R810K5V5V5VAINSGNDBINSAINBIN5VCLK1J3K2SD4Q5Q6U4A74ALS113C1CAPR1010K5123U5A74ALS86123UANDUNOR123UANDINT0P36INT1图32由SCHMITT触发器构成的输入电路32单片机电路的设计这部分电路由单片机、晶振电路、复位按键电路等组成。在设计中我们充分利用单片机具有的较强的运算能力和控制能力这一特点,对获取的输入信号的周期、相位差16BIT二进制数据进行处理及相关运算。P1口的P17、P16接入两个轻触按键,结合软件编程实现频率与相位差的显示切换功能。另外,在设计中使用了单片机串口UART,将待显示信息送给显示模块显示。设计中的单片机是AT89C51,它是美国ATMEL公司生产的8位单片机,它的主要特性有与MCS51兼容;内部集成有4KB可编程FLASH存储器;1288位内部RAM,有1000次写/擦循环;数据可保留10年;024MHZ全静态工作方式;三级程序存储器锁定;32根可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内含振荡器和时钟电路。因此,它完全可以满足本系统设计的需要。单片机电路如图33所示,为了提高单片机的I/O口带负载能力,电路中采用了3个上接排电阻。P101P112P123P134P145P156P167P178P0732P0633P0534P0435P0336P0237P0138P0039P2021P2122P2223P2324P2425P2526P2627P2728RXD10TXD11ALE/P30PSEN29INT113INT012T014T115EA/VP31X218X119RESET9RD17WR16VCCJP4AT89S51R12R23R34R45R56R67R78R89COM1JP1RP5VS1TS2TS3TC1CVCCR10RP16P17P16P17D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15RXDTXDALE5VP36R12R23R34R45R56R67R78R89COM1JP3RPR12R23R34R45R56R67R78R89COM1JP2RPD0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15VCCVCCC2CC3CL112MHZVCCX1X2图33AT89C51电路图321时钟电路计算机工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路就在惟一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相关的硬件电路,即振荡器和时钟电路,因此选择了内部时钟方式。利用芯片内部的振荡器,然后在引脚X1和X2两端跨接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路如图34所示,单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。外接晶振时,C2和C3值通常选择为30PF左右。C2,C3对频率有微调作用。晶体的频率范围可在1212MHZ之间选择。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。图34AT89C51晶振电路分析可知,只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。那么提供给定时器的计数源就是由单片机的晶振经过12分频后获得的一个脉冲源,计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。322复位电路由图35可以看出,是按键电平复位电路,相当于按复位键后复位端通过电阻与VCC电源接通。复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位,当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR地址8EH上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。因而,复位是一个很重要的操作方式,但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实现。这种复位电路的工作原理是通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。图35复位电路33显示模块的设计系统硬件电路中采用LED数码管静态显示的方式。显示电路由6个共阴极7段LED数码管和6片串入/并出的移位寄存器74LS164芯片组成。这种显示方式不仅可以得到较为简单的硬件电路,而且可以得到稳定的数据输出显示,不仅占用单片机端口少,而且可以充分利用单片机芯片内部的串行口资源,容易掌握其编程规律,简化软件编程。试验证明,这种显示模块具有较高的可靠性。设计出的显示模块电路图如图34所示。多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法。其中,74LS164是8位并行输出门控串行输入移位寄存器,LED采用共阴极数码管。显示时,其显示数据以串行方式从89C51的RXD口输出送往移位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0Q7输出,以控制开关管WT1WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1LED6。ABFCGDEDPY1234567ABCDEFG8DPDPLED1DPY_7SEG_DPR12R23R34R45R56R67R78R89COM162000RP4Q03Q14Q25Q36Q410Q511Q612Q713A1B2CLK8MR9U174LS1645VABFCGDEDPY1234567ABCDEFG8DPDPLED2DPY_7SEG_DPR12R23R34R45R56R67R78R89COM162000RP5Q03Q14Q25Q36Q410Q511Q612Q713A1B2CLK8MR9U274LS1645VABFCGDEDPY1234567ABCDEFG8DPDPLED5DPY_7SEG_DPR12R23R34R45R56R67R78R89COM162000RP6Q03Q14Q25Q36Q410Q511Q612Q713A1B2CLK8MR9U574LS1645VABFCGDEDPY1234567ABCDEFG8DPDPLED6DPY_7SEG_DPR12R23R34R45R56R67R78R89COM162000RP7Q03Q14Q25Q36Q410Q511Q612Q713A1B2CLK8MR9U674LS1645VRXDTXD5V图34显示模块电路图34相位测量仪整体电路综合上面的设计过程,相位测量仪整体电路图如附录所示。4系统软件设计程序是为计算某一算式或完成某一工作的若干指令的有序集合。计算机的全部工作概括起来,就是执行这一指令序列的过程。为计算机准备这一指令序列的过程称为程序设计。可用于程序设计的语言可分为三种机器语言、汇编语言和高级语言。在计算机中,所有的数符和指令都是用二进制代码来表示的。这种二进制代码表示的指令系统称为机器语言。计算机可以识别机器语言并加以执行。但对于使用者来说,不易看懂,不便记忆,容易出错。为了克服这些缺点,汇编语言出现了。程序设计自动化的第一阶段就是用英文字符来代替机器语言,这些英文字符被称为助记符。用助记符表示指令系统的语言称为汇编语言,用汇编语言编写的程序称为汇编语言程序。但是,计算机不能直接识别在汇编语言中出现的字母、数字和符号,需要将其转换成用二进制代码表示的机器语言程序,计算机才能够识别和执行。汇编语言醒目、易懂、不易出错,即使出错,也容易被发现修改,执行速率高,本次设计就是采用汇编语言程序编写的代码。系统连续3次测量时间差和周期,每一次测量时间差和周期占用两个待测信号周期T的时间。单片机在处理数据(数字滤波、计算、送数据显示、键盘处理)期间,使用软件停止定时器工作。显示部分采用UART方式0串行送数据给74SL164,由74LS164驱动LED数码管显示,这样可以减轻CPU的负担(相对于动态扫描而言)。键盘处理实际上就是通过按键S1切换显示不同的内容,即显示频率和相位差。系统主程序是一个顺序执行的循环程序,框图如图41所示。子程序SUB1完成的功能是3次测量时间差、周期并保存到内存。了程序SUB1的流程图如图42所示。因这第一次测量时间差、周期的起始时刻表一定的随机性(这是由于软件启动定时器/计数器T0、T1第一次分别测得的周期、时间差是不准确的,故舍弃)。MCU完成的任务有三个方面,归纳为以下三点(1)从鉴相器获取数据。单片机从鉴相器获取两种数据,一是待测信号的周期T(单位是1S),为16BIT无符号二进制数,二是待测信号的相位差对应的时间差T(单位也是1S),也为16BIT无符号二进制数。(2)对获取的数据进行处理从前面分析可知频率F1/T,(T/T)360,但89C51获得的周期数据单位是1S,而要测得的频率是在1S内测得的频率值,所以可求得F1/T/106,即可得到F1000000/T。1)按照公式F1000000/T计算频率,单位是HZ,这是一个多字节除法运算问题。2)按照公式T/T360计算相位差,单位是1,这是一个多字节乘法、除法运算问题。(3)将计算得到的频率值及相位差值送LED数码管显示。在系统硬件设计时,显示模块中有6个LED数码管,实际需要的LED数码管个数确定方法如下题目要求相位差显示为0O359O,分辨率为1O,则数码管选3个。频率显示20HZ20KHZ,20HZ20000HZ,则要5个数码管。综合考虑和两点,并考虑在显示频率、相位差时分别给出一个标志符号于最右边的数码管上,分别显示“O”和“H”,则选定6个LED数码管作为系统的显示器。这样,显示缓冲区(连续区域)为12BYTES(12个内存单元)。硬件电路中不需要的LED数码管通过软件让其消隐而不显示。6位LED数码管的工作情况为根据显示选择设置(频率/相位差),CPU从显示缓冲区取数据,通过UART方式0串行输出数据,由74LS164接收数据并驱动6位LED数码管显示。在软件编程时应解决无效数字“0”的消隐问题。不需要CPU对LED显示内容定时刷新(与LED动态扫描显示不同)。41程序流程图通过分析单片机应完成的任务可知,这些任务可以按顺序执行(没有对时序要求很严格的任务)。所以,整个单片机源程序由主程序及若干子程序组成,而主程序是一个循环执行的顺序程序。主程序流程图如图41所示,主程序主要完成待测信号的频率、相位差的测量,并由键盘作为功能键切换,由显示模块LED显示出结果。具体思路首先初始化程序,包括定义各内存空间,各标志位,初始化堆栈、寄存器等;由于程序要用到T/C,所以应首先使TR0和TR1置位,即由INT0和INT1引脚的外部信号控制T/C的启动和停止;为使测量的频率、相位差准确,程序设计采用调用三次测量时间差、周期的子程序SUB1,并将测量到的时间差、周期保存到内存中;采了3个值后,使TR0和TR1复位,计平均数,再计算频率、相位差,即可得到较准确的相位差值;最后键盘作为功能键切换,由LED显示出待测信号的频率和相位差。测量时间差、周期子程序的程序流程图如图42所示,计算频率子程序流程图如图43所示,键盘子程序流程图如图44所示,计算相位差子程序流程图如图45所示,显示子程序流程图如图46所示。显示子程序主要完成将待测信号的频率、相位差值在LED上显示出来。具体思路初始化程序时设频率显示缓冲区首地址为70H,相位差显示缓冲区首地址为78H,进入显示子程序DISPLAY后,先查询控制显示频率或相位差的标志位2FH0,若2FH00,则转去执行显示相位差;若2FH01,则转去执行显示频率,不管显示频率还是相位差,都应先将显示缓冲区首地址赋给R0保存;接下来消隐去掉无效数字0;在LED上显示结果,需查表求段码(一般用MOVCA,ADPTR的指令),并经UART方式来发送段码,直至显示数码送完,这样,即可完成频率和相位差的显示。送数据显示调用子程序SUB1;测量3次时间差、周期并保存到内存开始初始化TRI1I0,1计算频率、相位差键盘处理中值数字滤波TRI0图41主程序流程图YYYNNNYNSUB1入口R44(R4是计数器)保存周期TH0、TL0、保存时间差TH1、TL1清零定时器T0、T1清零标志位2FH1R41送R4SUB1出口P3612FH11SETB2FH1R44R40图42测量时间差、周期子程序流程图图43计算频率子程序流程图入口装入被除数1000000和除数T到内存做除法1000000/T将二进制数据转换为压缩BCD码将压缩BCD码转换为单字节BCD码存入数据到显示缓冲区70H76H出口YYYNN入口软件延时10MS消抖CPL2FH0出口有键按下(P170)有键按下(P170)图44键盘子程序流程图图45计算相位差子程序流程图入口装入被乘数和乘数到内存做乘法装入被除数和除数到内存做除法求相位差将二进制数据转换为压缩BCD码将压缩BCD码转换为单字节BCD码存入数据到显示缓冲区78H7EH出口Y待显示数据送完了NNY2FH00赋频率显示缓冲区首地址70H给R0赋相位差显示缓冲区首地址78H给R0无效数字0消隐处理查表求段码经UART方式0发送段码出口入口待显示数据送完了图46显示子程序流程图42单片机源程序用汇编语言编写的单片机源程序如下符号定义DATA1EQU40H16BIT周期T的数据存放内存单元DATAHEQU41HDATA2LEQU43H16BIT相位差对应的时间差的数据存放内存单元DATA2HEQU44H除法占用单元及乘法占用单元AD0EQU30H存放被除数(或被乘数)的字节数单元AD1EQU31H存放除数(或乘数)的字节数的单元ADAEQU4FH存放被除数(或被乘数)的末地址,即最低位低字节单元地址ADBEQU5FH存放除数(或乘数)的末地址,即最低位低字节单元地址ADCEQU4DHADEEQU5DHKEY1BITP17切换显示的按键S1KEY2BITP16未使用按键S2ALABITP35未使用DISPBITBIT2FH0控制显示频率或相位差的标志位SAMP1AEQU40HSAMP1BEQU41HSAMP1CEQU42HSAMP2AEQU43HSAMP2BEQU44HSAMP2CEQU45HSAMP3AEQU46HSAMP3BEQU47HSAMP3CEQU48HSAMP4AEQU49HSAMP4BEQU4AHSAMP4CEQU4BHSAMP5AEQU4CHSAMP5BEQU3DHSAMP5CEQU3EH421主程序ORG00HLJMP100HORG100HMAINMOV2FH,01HMAIN1NOPSETBTR0SETBTR1LCALLSUB1CLRTR0CLRTR1LCALLZZLBLCALLZHUNBEIZHOUQI装入频率计算数据(1000000及周期T)分别到4AH4DH及5DH5EH中CLR2FH3JNB2FH3,DIVDD1LJMPCHCHUDIVDD1LCALLDIVD1调用除法子程序(4字节除以2字节)计算频率MOV6FH,4FH二进制形式的频率值在4E、4FH中,最高位在4EH中MOV6EH,4EHMOV35H,4FHMOV34H,4EHLCALLBCDST将二进制数据转换成BCD码MOVR0,30HMOVR1,3FHMOVR7,04HMOV30H,0MOV31H,0LCALLBCD2BCD将压缩BCD码格式转换成单字节BCD码格式MOV70H,18频率值存放在30H31H中,最低位在30H中,最高位在32H中MOV71H,30H内存单元70H72H是频率值显示缓冲区,其中70H是符号位MOV72H,31HMIANWCLCALLX360装入相位计算数据LCALLMULNM调用乘法子程序求360乘以时间差(2字节乘以2字节)MOV4CH,5CH将上述乘积送入除法的被乘数缓冲区MOV4DH,5DHMOV4EH,5EHMOV4FH,5FHMOV5FH,DATAL装入被测周期T的数据MOV5EH,DATAHLCALLDIVD1调用除法子程序计算得到相位差值MOV35H,4FH压缩BCD格式的相位差值存放在4FH4EH中,4FH中的为最低位MOV34H,4EHLCALLBCDST将二进制数据转换为压缩格式的BCD码MOVR0,30HMOVR1,3FHMOVR7,04HMOV30H,0MOV31H,0LCALLBCD2BCD由压缩BCD码转换为单字节BCD码MOV78H,16相位差值存放在30H31H中,最低位在30H中,最高位在31H中MOV79H,30H内存单元78H7AH是相位差值显示缓冲区,其中78H是符号位MOV7AH,31HCHCHULCALLDISP调用显示子程序KEYCODJBP17,MIANI1查询按键S1LCALLDELAY1软件延时消抖JNBP17,等待S1释放CPL2FH0取反标志位2FH0LCALLDELAY2MIANI1LCALLDELAY1LCALLDELAY1LCALLDELAY1LJMPMIAN1继续主程序循环(主程序段到此为此)422测量时间差、周期子程序SUB1MOVR4,4LOOP3JNBP36,BZDJNZ2FH1,LCCJNZR4,4,SAVEJMPCTSAVEMOVDATAL,TL0MOVDATAH,TH0MOVDATA2L,TL1MOVDATA2H,TH1CTCLRTR0CLRTR1CLR2FH1SUBR4,1JMPLCBZSETB2FH1LCCJNZR4,0,LOOP3RET423中值滤波子程序ZZLBPOPAPOPR0MOVR0,SAMP1AMOVA,01HMOVR0,AINCR0MOVA,51HMOVR0,AINCR0MOVA,50HMOVR0,AINCR0MOVA,02HMOVR0,AINCR0MOVA,56HMOVR0,AINCR0MOVA,12HMOVR0,AINCR0MOVA,02HMOVR0,AINCR0MOVA,56HMOVR0,AINCR0MOVA,10HMOVR0,AINSERMOVR2,02HSORTMOVA,R2MOVR3,AMOVR0,SAMP1ALOOPMOVA,R0INCR0MOVR1,ACLRCSUBBA,R0JCDONEMOVA,R0DECR0XCHA,R0INCR0MOVR0,ADONEDJNZR3,LOOPDJNZR2,SORTINCR0MOVA,R0MOVR0,SAMP1AINCR0INCR0MOVA,R0MOV20H,APUSHR0PUSHARET424计算频率子程序PROCZHUNBEIZHOUQI为了计算频率将被除数1000000装入4CH4FH单元中ZHUNBEIZHOUQI将除数(周期T)装入5EH51FH单元中MOV5FH,DATALMOV5EH,DATAHMOV4FH,40H低位MOV4EH,42HMOV4DH,0FHMOV4CH,00HRETNOPPC值出错处理NOP空操作NOP空操作LJMPMIAN重新复位启动ENDPROCDIVD1DIVD1PUSHACC现场保护PUSHPSWPUSHBMOVA,R2JNZDIV1判断R2是否为0,若R2为0,则执行ERR0R1;若R2不为0,则执行除法DIV1ERR0R1MOVA,R1JNZDIV1判断R1是否为0,若R1为0,则执行ERR0R,若R1不为0,则执行除法DIV1DIV1MOVA,R5CLRCSUBBA,R1MOVA,R6SUBBA,R2JNCDVOFR6R5R2R1,够减,转DVOF(溢出);不够减转DIV2DIV2MOVR7,10H置循环次数16CLRCC清零ROLR3被除数低16位左移1位ROLR4DIV3ROLR5ROLR6MOVR0,C将R6最高位放入R0中保存MOVA,R5做R6R5R2R1的减法,结果放入R6R5中CLRCSUBBA,R1MOVR5,R5MOVA,R6SUBBA,R2MOVR6,AJNCDIV4C0,说明够减,在R3最低位上商1MOVA,R5C1,说明不够减,恢复余数CLRCADDA,R1MOVR5,AMOVA,R6ADDCA,R2MOVR6,ACLRC不够减,商0LJMPDIV5DIV4SETBC够减,商1DIV5ROLR3ROLR4DECR7CJNZDIV3R7不等于0,说明除法未完,转DIV3继续除CLRC清C,表示除法已除完DNEPOPB现场恢复POPPSWPOPACCRETDVOFMOVB,0FFH溢出标志LJMPDONEERR0RRET若除数为0,结束运算PROCBCDSTBCDSTPUSHPSWPUSHACC现场保护PUSHBMOVA,R4;二进制整数送AMOVB,100;十进制数100送BDIVAB;(A)/100,确定百位上的数MOVR5,A;百位数存入R5中MOVA,10;将10送A中XCHA,B;将10和B中余数互换DIVAB;(A)/10,得十、个位上的数,商是十位,余数是个位SWAPA;将A中商(十位数)移入商4位ADDA,B;将B中余数(个位数)加到A中MOVR4,A;将十、个位BCD码存入R4中POPB;恢复现场POPACCPOPPSWRETPROCBCD2BCDBCD2BCDPUSHPSW;现场保护PUSHACCMOVA,R5ANLA,0FHMOVR5,A;R5中存高位单字节BCD码MOVR3,R4ANLA,F0H;屏蔽低4位MOVR4,A;中间位压缩BCD码转为的单字节BCD码存入R4中MOVA,R3SWAPA;交换中间位和低位ANLA,F0H;屏蔽低4位SWAPAMOVR3,A;低位存入R3中PUSHACCPUSHPSW425计算相位差子程序PROCX360X3600MOV60H,DATA2LMOV61H,DATA2HMOV62H,68HMOV63H,01HRETPROCMULNMMULNMPUSHAPUSHBPUSHPSWMOVA,R0MOVB,R2MULABMOVR6,AMOVR7,BMOVA,R1MOVB,R2MULABMOVR4,AMOVR5,BMOVA,R7ADDA,R4MOVR7,AMOVA,R5ADDCA,00HMOVR5,AMOVA,R0MOVB,R3MULABMOVR3,AMOVR4,BMOVA,R7ADDA,R3MOVR7,AMOVA,R5ADDCA,R4MOVR5,AMOVA,R1MOVB,R3MULABMOVR3,AMOVR4,BMOVA,R5ADDA,R3MOVR2,AADDCA,00HMOVR3,AMOVR1,R7MOVR0,R6POPPSWPOPBPOPARETDELAYMOV30H,50D1MOV31H,100DJNZ31H,DJNZ30H,D1RET426显示子程序DISPLAYMOVDPTR,TABMOVR7,5JB2FH0,FREQXIANGWEIMOVR0,78HSJMPNEXTFREQMOVR0,70HNEXTMOVA,R0MOVCA,ADPTRMOVSBUF,AJNBTI,CLRTIINCR0DJNZR7,NEXTRETTABDB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,7EH43调试与仿真(1)编辑源程序。在WAVE6000软件平台上编辑上述源程序。(2)编译源程序。在编译过程中可能有很多语法错误,要一一排除,最后通过编译。(3)仿真调试1)软件仿真调试并获得通过。2)硬件仿真调试并获得通过。(4)写目标程序到程序存储器中。在仿真调试获得通过后,便可以将目标程序通过通用编程器写到AT89C51芯片内部的程序存储器中。5系统设计总结在完成上面的设计后,很有必要对自己做的设计总结一下,以便发现问题及时解决,发现不足及时补充,发现错误及时纠正。设计任务要求相位测量绝对误差小于或等于2O。相位差测量误差主要来自三个方面整形电路;鉴相器产生的计数误差,由单片机运算引入的计算误差,计算误差很小可忽略之。由此可见,相位测量误差主要受输入信号整形电路的影响。整形电路的任务是把任意波形(一般是正弦波)变换成矩形波。在设计中,我们选用由LM339构成的斯密特触发器作为输入信号的整形电路。斯密特触发器可以很好地消除抖动,但也给相位测量仪系统带来了相伴差的测量误差。如果两路待测输入正弦信号的幅度基本相等,且两个斯密特触发器的门限电压又很接近,斯密特触发器引入的相位误差不会对测量精度造成多大影响。但是,如果两路输入信号的幅度相差比较大的话,则由斯密特触发器构成的整形电路引入的相位测量误差可能会比较大。经计算表明,在极限情况下,斯密特触发器整形电路带来的相位差的测量误差可能达不到不能接受的程度。如果直接采用过零电压比较器作为输入信号的整形电路,那么,过零电压比较器在电位零点附近极有可能振荡这是因为在零点电位附近的输入电压位于电压比较器的线性放大区,这样得到的整形后的信号电压的跳变沿附近会有许多抖动,正是因为这种抖动使得系统测量工作根本无法正常进行。致谢转眼间,我已经在美丽的郑州轻工业学院度过了两个年头。两年,这是我人生中非常重要的两年,我有幸能够接触到这些不仅传授我知识、学问,而且从更高层次指导我的人生与价值追求的良师。他们使我坚定了人生的方向,获得了追求的动力,留下了大学生活的美好回忆。感谢郑州轻工业学院两年来的培养,在此,我真诚地向我尊敬的老师们和母校表达我深深的谢意这篇论文是在我的导师王新金老师的多次指导下完成的。从论文的选题到结构安排,从内容到文字润饰,都凝聚了他大量的心血。在这篇论文的写作过程中,王新金老师不辞辛劳,多次与我就论文中许多核心问题作深入细致地探讨,给我提出切实可行的指导性建议,并细心全面地修改了我的论文。王新金老师对本论文从选题、构思、资料收集到最后定稿的各个环节给予细心的指引和教导,使我对低频相位测量仪有了更加深刻的认识,并最终得以完成毕业论文,对此,我打心眼里表示我最衷心的感谢王老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度、积极进取的科研精神以及诲人不倦的师者风范是我毕生的学习楷模。王老师的高深精湛的造诣与严谨求实的治学精神将永远激励着我。王老师这种一丝不苟的负责精神,使我深受感动。更重要的是王老师在指导我的论文的过程中,始终践行着“授人以鱼,不如授之以渔”的原则。他常教导我要志存高远,严格遵守学术道德和学术规范,为以后的继续深造打好坚实的基础。在此,请允许我向尊敬的王新金老师表示真挚的谢意感谢和我一起度过两年大学的朋友徐伟、张宝艺。是你在我失意时给我鼓励,在我失落时给我支持,感谢你和我一路走来,让我在人生这一驿站中倍感温暖在论文的写作过程中,也得到了许多同学的宝贵建议,同时还得到许多社会人士的支持和帮助,在此一并致以诚挚的谢意。最后,衷心感谢所有老师对我的栽培、支持和鼓励,感谢所有朋友的关心和帮助。向在百忙中抽出时间对此论文进行评审并提出宝贵意见的各位专家表示衷心地感谢衷心祝愿母校郑州轻工业学院的明天更加美好参考文献1马衷梅单片机应用程序设计北般出版社199812陆坤电子设计技术电子科技大学出版社200113沙战友新编实用数字化测量技术

温馨提示

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

评论

0/150

提交评论