毕业设计(论文)-低频相位测量仪软件设计

上传人:a**** 文档编号:140508104 上传时间:2022-08-23 格式:DOC 页数:37 大小:282KB
收藏 版权申诉 举报 下载
毕业设计(论文)-低频相位测量仪软件设计_第1页
第1页 / 共37页
毕业设计(论文)-低频相位测量仪软件设计_第2页
第2页 / 共37页
毕业设计(论文)-低频相位测量仪软件设计_第3页
第3页 / 共37页
资源描述:

《毕业设计(论文)-低频相位测量仪软件设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)-低频相位测量仪软件设计(37页珍藏版)》请在装配图网上搜索。

1、1 绪 论近年来,随着科学技术的迅速开展,很多测量仪逐渐向“智能仪器和“自动测试系统开展这使得仪器的功能丰富而使用简单。低频数字式相位测试仪在工业领域中是经常用到的通用测量工具。相位检测技术的应用已深入到如多领域,广泛应用于国防、科研、学校和厂矿,传统的模拟指针式仪表显然不能够满足所需的精度要求,随着电子技术以及微机技术的开展,数字式仪表因其高精度的测量分辨率以及高度的智能化、直观化的特点得到越来越广泛的应用。同时,在电力系统中电网并网合闸时,要求两电网的电信号相同,这就要求精度的测量两工频信号之间的相位差。还有测量两列同频信号的相位差在研究网络、系统的频率特性中具有重要的意义。同时,微电子技

2、术的迅猛开展,给国民经济、生产活动和社会活动带来极大的变革。特别是集成电路和微电子技术的飞跃开展,更为设计、安装体积小、性能优越、功能全的装置创造了良好的条件。可以说,电子技术的应用水平是现代化进程的一个重要标志。微电子技术、计算机技术、通信技术、单片机原理技术等先进技术与具体应用对象相结合而设计的产品更是受世人青睐。本次设计即是利用单片机实现对低频相位差的测量,使得仪表更加数字化、智能化,功能比起采用电子或数字电路更加强大。在科学研究、实验或生产实践中,常常需要对低频移相网络的信号进行相位测量,但某些测量方法仅仅局限于测某一频率信号的相位,不能满足一定范围内任意频率信号的相位测量,总之低频相

3、位测量仪的现代科学技术中的应用越来越多,比方在电力系统中常常需要对两个同频率信号如工频电压和工频电流之间的相位关系进行准确的测量。“相位时间法和“功率比例法是两种比拟传统的相位差测量方法,在现代技术领域中还对基于离散付里叶变换的相位测量原理进行了研究,并有了一定的成效,研究说明基于离散付里叶变换原理的相位测量方法具有测量精度高)抗干扰能力强)电路设计简单等特点。总之相位测量技术在我们生活中起到了不可无视的。本低额教字式相位测量仪由AT89C51芯片和集成电路构成。由于AT89C51芯片的集成度高,智能程度高,功能强大,使得它实现起来比拟简单,而且,具有体积小,性价比高、性能稳定的特点。2 设计

4、方案论证从功能角度来看,看相位测量仪要完成信号频率和相位差的测量.相位测量仪有两路输入信号,也是被测信号,它们是两个同频率的正弦信号,频率范围为20HZ20KHZ正好是音频范围,幅度为UPP=15V可以扩展到0.35V,但两者幅度不一定相等。现在来讲解一下相位、相位差的概念。在“电路原理课程中已经介绍过这些概念,不妨令正弦信号为At=Amsin(t+0),式中Am称为幅值最大值,且,A称为有效值;t=t+0称为相位,0称为初相位,称为角频率。Am、0称为正弦量的三要素。只有两个同频率的正弦信号才有相位差的概念。不妨令两个同频率的正弦信号为A1t=A1msin(t+01) ,A2t=A2msin

5、(t+02),那么相位差=(t+01)- (t+02)= 01-02,由此可看出,相位差在数值上等于初相位之差,是一个角度。不妨令=T,其中T是相位差对应的时间差,且令T为信号周期,那么有比例关系T:360=T:可以推导得到=T/T360,此式说明,相位差与T一一对应,可以通过测量时间差T及信号周期T,计算而得到相位差,这就是相位差的根本测量原理。由相位差的根本测量原理可知,相位差的测量本质上是时间差T及信号周期T的测量,也就是时间的测量,而时间的测量不可防止地要用到电子计数器。时间的测量有多种方法,而设计题目关于相位测量仪的技术指标要求会影响到我们对方案的选择,由一般常识可知,单片机应用系统

6、一般能较好地实现各种不同的测量及控制功能,因此,选择使用单片机实现系统功能,完成系统指标。2.1 原理框图 以单片机为核心的相位测量仪原理框图如图2-1所示。两路待测信号经整形后变成了矩形波I、V,且可以认为I和V是同频率、不同相伴的矩形波。待测信号2待测信号1整形电路整形电路鉴相器89C51Display键盘图2-1 以单片机为核心的相位测量仪原理框图2.2 频率的测量单片机对信号频率的测量可以采用直接测频率的方法和测周期的方法。一般是信号频率较高时,采用直接测频率的方法,而信号频率较低时,采用测周期的方法。1用直接测频率的方法获得信号频率。让定时器/计数器T1对外部事件计数,而让定时器/计

7、数器T0定时1s,只有在这1s内T1启动对外部事件即信号I计数,那么T1的计数值就是待测信号的频率。2用测周期方法获得信号频率。由图2-2可知,对I进行2分频后的信号波形中,高电平宽度正好对应I的周期,将此高电平信号作为单片机内部定时器的硬件启动/停止信号,便可测得周期T,再由公式f=1/T,计算得到频率。图2-2 用测周期的方法获得信号频率I的2分频I2.3 相位差的测量 鉴相器就是异或门,在鉴相器的输出波形IV中,正脉冲宽度就是要测量的I和V相位差所对应的时间差T,如图2-3所示。在测量相位差时还应考虑超前、滞后两种情况如图2-3中所示为I超前V。把IV波形中的正脉冲作为门控信号,控制闸门

8、的启闭,即控制单片机内部定时器/计数器的启动/停止,从而到达测量时间差T的目的,再根据公式=T,计算得到相位差T。另外,由图2-3可知,IV信号是I信号的二倍频I与V同频,由此可见,对于同频不同相的两个信号,经过异或门后可得到二倍频的信号。因此从这个意义上讲,异或门可实现信号的二倍频。图2-3 鉴相器的输入、输出波形图IVVI2.4 单片机测量时间差、周期的方法 下面详细谈谈单片机测量时间差、周期的方法。2.4.1 工作原理51系列单片机的芯片内部集成了两个16bit的硬件定时器/计数器,它们是T0、T1。单片机芯片内部的硬件定时器/计数器有三个特点:定时器/计数器可以与CPU并行工作;定时器

9、/计数器可以采用中断方式与系统协调工作;定时器/计数器可以由软件或硬件控制启动和停止。单片机的定时器/计数器受TMOD及TCON的控制,如图2-4所示。TMODGATEC/TM1M0GATEC/TM1M0TCONTF1TR1TP0TR0IE1IT1IE0IT0图2-4 TMOD和TCON假设GATE=0,那么由TRi控制定时器/计数器的启动和停止,为纯软件控制方式。假设GATE=1,TRi=1,那么由INTi引脚的外部信号控制定时器/计数器的启动和停止,是纯硬件控制方式。假设GATE=1,那么由TRi和INTi引脚的外部信号混合控制定时器/计数器的启动和停止,软、硬件结合控制方式。定时器/计数

10、器工作在定时工作方式时,其计数器对内部机器周期进行加1计数,而定时器/计数器的工作启动、停止采用外部硬件控制。2.4.2 具体实现方法电路图如图2-5所示,该电路由单片机、整形电路、门电路等组成。由定时器/计数器T0、T1分别测量周期、时间差。图2-5 单片机测量时间差、周期的电路图时序图如图2-6所示。需要说明的是,由软件创立一标志位2FH.1,当输入引脚P3.6=0时,CPU置位标志位2FH.1,而当P3.6=1时,CPU在读取时间差数据后清零标志位2FH.1。FED定时器测量时间差CPU从定时器计数据并清零定时器定时器测量周期CBA图2-6 时序图3 系统硬件设计本设计将硬件系统分为数据

11、采样处理及单片机最小系统两个局部,这就充分发挥了单片机控制运算能力强的特点。数据采集由鉴相器完成,可以准确地采集到两个同频正弦的相位差所对应的时间差以及信号的周期,从而提高系统的可靠性。由于单片机具有较强的运算、控制能力,因此,使用单片机最小系统完成读取鉴相器得到的数据,并根据所读取的数据计算待测信号的频率及两路同频信号之间的相位差。同时通过功能键切换,由显示模块可以显示待测信号的频率和相位差。3.1 输入电路设计输入电路起到波形变换及整形的功能,由于被测信号是周期相同、幅度和相位不同的两路正弦信号,为了准确地测量出两路正弦信号的相位差及其频率,需要对输入波形进行整形,使输入信号变成矩形信号,

12、并送给鉴相器进行处理。我们设计了这两种整形输入电路方案。第一种方案是使用单门限电压比拟器来完成,当输入信号电压每通过一次零时限电压比拟器的输出就要翻转一次,即比拟器的输出端将产生一次电压跳变,它的正、负向幅度均受到供电电源的限制,因此,输出电压小型是具有正负极性的方波,这样就完成了电压波形的整形工作。但是通常情况下,输入信号往往会含有干扰,这对单门限电压比拟器尤为不利,由于有干扰信号,导致单门限电压比拟器在输入信号过零点时会产生屡次触发翻转的现象,这样就会导致采集数据计数不准确,从而使单片机无法计算出正确的被测信号的频率和相位差数值。这种方案电路图如图3-1。图3-1 采用单门限电压比拟器的整

13、形电路另外,在相位差测量过程中,不允许两路被测输入信号在整形输入电路中发生相对相移,或者应该使得两路被测信号在整形输入电路中引起的附加相移是相同的,因此,我们对A、B两路信号采用了相同的整形电路。为了防止出现被测输入信号在过零点时屡次触发翻转的现象,我们设计了第二种整形电路,即使用施密特触发器组成的整形电路。由于施密特触发器在单门限电压比拟器的根底上引入了正反应网络,因为正反应的作用,它的门限电压跟着输出电压U0的变化而改变,从而使施密特触发器有两个门限电压,所以可以提高输入电路的抗干扰能力。第二种整形电路电路如图3-2所示,电路中我们使用两个施密特触发器触发器对两路被测输入信号进行整形。在图

14、3-2中,比拟器LM339连接成施密特触发器的形式。为了保证输入电路对相位差测量不带来误差,必须保证两个施密特触发器的两个门限电平对应相等,这可以通过调节电位器R8来实现。输入信号再通过各种门电路以便单片机完成相位差及周期的测量。图3-2 由Schmitt触发器构成的输入电路3.2 单片机电路的设计这局部电路由单片机、晶振电路、复位按键电路等组成。在设计中我们充分利用单片机具有的较强的运算能力和控制能力这一特点,对获取的输入信号的周期、相位差16bit二进制数据进行处理及相关运算。P1口的P1.7、P1.6接入两个轻触按键,结合软件编程实现频率与相位差的显示切换功能。另外,在设计中使用了单片机

15、串口UART,将待显示信息送给显示模块显示。设计中的单片机是AT89C51,它是美国ATMEL公司生产的8位单片机,它的主要特性有:与MCS-51兼容;内部集成有4KB可编程Flash存储器;1288位内部RAM,有1000次写/擦循环;数据可保存10年;024MHz全静态工作方式;三级程序存储器锁定;32根可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内含振荡器和时钟电路。因此,它完全可以满足本系统设计的需要。单片机电路如图3-3所示,为了提高单片机的I/O口带负载能力,电路中采用了3个上接排电阻。图3-3 AT89C51电路图3.2.1 时

16、钟电路计算机工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,单片机内部电路就在惟一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相关的硬件电路,即振荡器和时钟电路,因此选择了内部时钟方式。利用芯片内部的振荡器,然后在引脚X1和X2两端跨接晶体或陶瓷谐振器,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路如图3-4所示,单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。外接晶振时,

17、C2和C3值通常选择为30PF左右。C2,C3对频率有微调作用。晶体的频率范围可在1.212MHZ之间选择。在实际连接中,为了减少寄生电容,更好地保证振荡器稳定可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。图3-4 AT89C51晶振电路分析可知,只要计数脉冲的间隔相等,那么计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器那么是由单片机提供一个非常稳定的计数源。那么提供应定时器的计数源就是由单片机的晶振经过12分频后获得的一个脉冲源,计数脉冲的间隔与晶振有关,12M的晶振,计数脉冲的间隔是1微秒。3.2.2复位电路由图3

18、-5可以看出,是按键电平复位电路,相当于按复位键后复位端通过电阻与Vcc电源接通。复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。晶振工作时,RST引脚持续2个机器周期高电平将使单片机复位,当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊存放器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。因而,复位是一个很重要的操作方式,但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实

19、现。这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。图3-5 复位电路3.3 显示模块的设计系统硬件电路中采用LED数码管静态显示的方式。显示电路由6个共阴极7段LED数码管和6片串入/并出的移位存放器74LS164芯片组成。这种显示方式不仅可以得到较为简单的硬件电路,而且可以得到稳定的数据输出显示,不仅占用单片机端口少,而且可以充分利用单片机芯片内部的串行口资源,容易掌握其编程规律,简化软件编程。试验证明,这种显示模块具有较高的可靠性。设计出的显示模块电路图如图3

20、-4所示。多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法。其中,74LS164是8位并行输出门控串行输入移位存放器,LED采用共阴极数码管。显示时,其显示数据以串行方式从89C51的RXD口输出送往移位存放器74LS164的A、B端,然后将变成的并行数据从输出端Q0Q7输出,以控制开关管WT1WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1LED6。图3-4 显示

21、模块电路图3.4 相位测量仪整体电路综合上面的设计过程,相位测量仪整体电路图如附录所示。4 系统软件设计程序是为计算某一算式或完成某一工作的假设干指令的有序集合。计算机的全部工作概括起来,就是执行这一指令序列的过程。为计算机准备这一指令序列的过程称为程序设计。可用于程序设计的语言可分为三种:机器语言、汇编语言和高级语言。在计算机中,所有的数符和指令都是用二进制代码来表示的。这种二进制代码表示的指令系统称为机器语言。计算机可以识别机器语言并加以执行。但对于使用者来说,不易看懂,不便记忆,容易出错。为了克服这些缺点,汇编语言出现了。程序设计自动化的第一阶段就是用英文字符来代替机器语言,这些英文字符

22、被称为助记符。用助记符表示指令系统的语言称为汇编语言,用汇编语言编写的程序称为汇编语言程序。但是,计算机不能直接识别在汇编语言中出现的字母、数字和符号,需要将其转换成用二进制代码表示的机器语言程序,计算机才能够识别和执行。汇编语言醒目、易懂、不易出错,即使出错,也容易被发现修改,执行速率高,本次设计就是采用汇编语言程序编写的代码。系统连续3次测量时间差和周期,每一次测量时间差和周期占用两个待测信号周期T的时间。单片机在处理数据数字滤波、计算、送数据显示、键盘处理期间,使用软件停止定时器工作。显示局部采用UART方式0串行送数据给74SL164,由74LS164驱动LED数码管显示,这样可以减轻

23、CPU的负担相对于动态扫描而言。键盘处理实际上就是通过按键S1切换显示不同的内容,即显示频率和相位差。系统主程序是一个顺序执行的循环程序,框图如图4-1所示。子程序SUB1完成的功能是3次测量时间差、周期并保存到内存。了程序SUB1的流程图如图4-2所示。因这第一次测量时间差、周期的起始时刻表一定的随机性这是由于软件启动定时器/计数器T0、T1第一次分别测得的周期、时间差是不准确的,故舍弃。MCU完成的任务有三个方面,归纳为以下三点:1从鉴相器获取数据。单片机从鉴相器获取两种数据,一是待测信号的周期T单位是1s,为16bit无符号二进制数,二是待测信号的相位差对应的时间差T单位也是1s,也为1

24、6bit无符号二进制数。2对获取的数据进行处理:从前面分析可知频率f=1/T,=T/T360,但89C51获得的周期数据单位是1s,而要测得的频率是在1s内测得的频率值,所以可求得f=1/T/10-6,即可得到f=1000000/T。1按照公式f=1000000/T计算频率,单位是Hz,这是一个多字节除法运算问题。2按照公式=T/T360计算相位差,单位是1,这是一个多字节乘法、除法运算问题。3将计算得到的频率值及相位差值送LED数码管显示。在系统硬件设计时,显示模块中有6个LED数码管,实际需要的LED数码管个数确定方法如下:题目要求相位差显示为0o359o,分辨率为1o,那么数码管选3个。

25、频率显示20Hz20kHz,20Hz20000Hz,那么要5个数码管。综合考虑和两点,并考虑在显示频率、相位差时分别给出一个标志符号于最右边的数码管上,分别显示“o和“H,那么选定6个LED数码管作为系统的显示器。这样,显示缓冲区连续区域为12Bytes12个内存单元。硬件电路中不需要的LED数码管通过软件让其消隐而不显示。6位LED数码管的工作情况为:根据显示选择设置频率/相位差,CPU从显示缓冲区取数据,通过UART方式0串行输出数据,由74LS164接收数据并驱动6位LED数码管显示。在软件编程时应解决无效数字“0”的消隐问题。不需要CPU对LED显示内容定时刷新与LED动态扫描显示不同

26、。4.1 程序流程图 通过分析单片机应完成的任务可知,这些任务可以按顺序执行没有对时序要求很严格的任务。所以,整个单片机源程序由主程序及假设干子程序组成,而主程序是一个循环执行的顺序程序。主程序流程图如图4-1所示,主程序主要完成待测信号的频率、相位差的测量,并由键盘作为功能键切换,由显示模块LED显示出结果。具体思路:首先初始化程序,包括定义各内存空间,各标志位,初始化堆栈、存放器等;由于程序要用到T/C,所以应首先使TR0和TR1置位,即由INT0和INT1引脚的外部信号控制T/C的启动和停止;为使测量的频率、相位差准确,程序设计采用调用三次测量时间差、周期的子程序SUB1,并将测量到的时

27、间差、周期保存到内存中;采了3个值后,使TR0和TR1复位,计平均数,再计算频率、相位差,即可得到较准确的相位差值;最后键盘作为功能键切换,由LED显示出待测信号的频率和相位差。测量时间差、周期子程序的程序流程图如图4-2所示,计算频率子程序流程图如图4-3所示,键盘子程序流程图如图4-4所示,计算相位差子程序流程图如图4-5所示,显示子程序流程图如图4-6所示。显示子程序主要完成将待测信号的频率、相位差值在LED上显示出来。具体思路:初始化程序时设频率显示缓冲区首地址为70H,相位差显示缓冲区首地址为78H,进入显示子程序DISPLAY后,先查询控制显示频率或相位差的标志位2FH.0,假设2

28、FH.0=0,那么转去执行显示相位差;假设2FH.0=1,那么转去执行显示频率,不管显示频率还是相位差,都应先将显示缓冲区首地址赋给R0保存;接下来消隐去掉无效数字0;在LED上显示结果,需查表求段码一般用MOVC A,A+DPTR的指令,并经UART方式来发送段码,直至显示数码送完,这样,即可完成频率和相位差的显示。送数据显示调用子程序SUB1;测量3次时间差、周期并保存到内存开始初始化TRi=1(i=0,1)计算频率、相位差键盘处理中值数字滤波TRi=0图4-1 主程序流程图YYYNNNYNSUB1入口R4=4R4是计数器保存周期TH0、TL0、保存时间差TH1、TL1清零定时器T0、T1

29、清零标志位2FH.1R4-1送R4SUB1出口P3.6=1?2FH.1=1?SETB 2FH.1R4=4?R4=0?图4-2 测量时间差、周期子程序流程图图4-3 计算频率子程序流程图入口装入被除数1000000和除数T到内存做除法1000000/T将二进制数据转换为压缩BCD码将压缩BCD码转换为单字节BCD码存入数据到显示缓冲区70H76H出口YYYNN入口软件延时10ms消抖CPL 2FH.0出口有键按下P1.7=0?有键按下P1.7=0?图4-4 键盘子程序流程图图4-5 计算相位差子程序流程图入口装入被乘数和乘数到内存做乘法装入被除数和除数到内存做除法求相位差将二进制数据转换为压缩B

30、CD码将压缩BCD码转换为单字节BCD码存入数据到显示缓冲区78H7EH出口Y待显示数据送完了?NNY2FH.0=0?赋频率显示缓冲区首地址70H给R0赋相位差显示缓冲区首地址78H给R0无效数字0消隐处理查表求段码经UART方式0发送段码出口入口待显示数据送完了?图 4-6 显示子程序流程图4.2 单片机源程序 用汇编语言编写的单片机源程序如下::*;符号定义DATA1 EQU 40H ;16bit周期T的数据存放内存单元DATAH EQU 41H DATA2L EQU 43H ; 16bit相位差对应的时间差的数据存放内存单元DATA2H EQU 44H;- ;除法占用单元及乘法占用单元A

31、D0 EQU 30H ;存放被除数或被乘数的字节数单元AD1 EQU 31H ;存放除数或乘数的字节数的单元ADA EQU 4FH ;存放被除数或被乘数的末地址,即最低位低字节单元地址ADB EQU 5FH ; 存放除数或乘数的末地址,即最低位低字节单元地址ADC EQU 4DHADE EQU 5DHKEY1 BIT P1.7 ;切换显示的按键S1KEY2 BIT P1.6 ;未使用按键S2ALA BIT P3.5 ;未使用DISPBIT BIT 2FH.0 ;控制显示频率或相位差的标志位SAMP1A EQU 40H SAMP1B EQU 41H SAMP1C EQU 42H SAMP2A E

32、QU 43H SAMP2B EQU 44H SAMP2C EQU 45H SAMP3A EQU 46H SAMP3B EQU 47H SAMP3C EQU 48H SAMP4A EQU 49H SAMP4B EQU 4AH SAMP4C EQU 4BH SAMP5A EQU 4CH SAMP5B EQU 3DH SAMP5C EQU 3EH*4.2.1 主程序ORG 00HLJMP 100HORG 100HMAIN: MOV 2FH,#01HMAIN1: NOPSETBTR0SETBTR1 LCALL SUB1 CLRTR0 CLRTR1 LCALL ZZLB LCALL ZHUNBEIZHO

33、UQI ;装入频率计算数据1000000及周期T分别到4AH4DH及5DH5EH中CLR 2FH.3JNB 2FH.3,DIVDD1LJMP CHCHU DIVDD1:LCALL DIVD1 ;调用除法子程序4字节除以2字节计算频率MOV 6FH,4FH ;二进制形式的频率值在4E、4FH中,最高位在4EH中MOV 6EH,4EHMOV 35H,4FHMOV 34H,4EHLCALL BCDST ;将二进制数据转换成BCD码MOV R0,#30HMOV R1,#3FHMOV R7,#04HMOV 30H,#0MOV 31H,#0LCALL BCD 2BCD ;将压缩BCD码格式转换成单字节BC

34、D码格式MOV 70H,#18 ;频率值存放在30H31H中,最低位在30H中,最高位在32H中MOV 71H,30H ;内存单元70H72H是频率值显示缓冲区,其中70H是符号位MOV 72H,31H MIANWC:LCALL X360 ;装入相位计算数据 LCALL MULNM ;调用乘法子程序求360乘以时间差2字节乘以2字节MOV 4CH,5CH ;将上述乘积送入除法的被乘数缓冲区MOV 4DH,5DH MOV 4EH,5EH MOV 4FH,5FH MOV 5FH,DATAL ;装入被测周期T的数据MOV 5EH,DATAHLCALL DIVD1 ;调用除法子程序计算得到相位差值MO

35、V 35H,4FH ;压缩BCD格式的相位差值存放在4FH4EH中,4FH中的为最低位 MOV 34H,4EHLCALL BCDST ;将二进制数据转换为压缩格式的BCD码MOV R0,#30HMOV R1,#3FHMOV R7,#04HMOV 30H,#0MOV 31H,#0LCALL BCD 2BCD ;由压缩BCD码转换为单字节BCD码MOV 78H,#16 ;相位差值存放在30H31H中,最低位在30H中,最高位在31H中MOV 79H,30H ;内存单元78H7AH是相位差值显示缓冲区,其中78H是符号位MOV 7AH,31H CHCHu:LCALLDISP ;调用显示子程序 KEY

36、COD:JB P1.7,MIANI1 ;查询按键S1 LCALL DELAY1 ;软件延时消抖JNB P1.7,$ ;等待S1释放CPL 2FH.0 ;取反标志位2 FH.0LCALL DELAY2MIANI1: LCALL DELAY1LCALL DELAY1LCALL DELAY1 LJMP MIAN1 ;继续主程序循环主程序段到此为此*4.2.2 测量时间差、周期子程序SUB1:MOVR4,#4 LOOP3:JNBP3.6,BZDJNZ2FH.1,LCCJNZR4,#4,SAVEJMPCTSAVE:MOVDATAL,TL0MOVDATAH,TH0MOVDATA2L,TL1MOVDATA2

37、H,TH1 CT:CLRTR0CLRTR1CLR2FH.1SUBR4,#1JMPLCBZ:SETB2FH.1LC:CJNZR4,#0,LOOP3RET *4.2.3 中值滤波子程序ZZLB: POP APOP R0MOV R0,#SAMP1A MOV A,#01H MOV R0,A INC R0 MOV A,#51H MOV R0,A INC R0 MOV A,#50H MOV R0,A INC R0 MOV A,#02H MOV R0,A INC R0 MOV A,#56H MOV R0, A INC R0 MOV A, #12H MOV R0, A INC R0 MOV A, #02H M

38、OV R0, A INC R0 MOV A, #56H MOV R0, A INC R0 MOV A, #10H MOV R0, A INSER: MOV R2, #02H SORT: MOV A, R2 MOV R3, A MOV R0, #SAMP1A LOOP: MOV A, R0 INC R0 MOV R1, A CLR C SUBB A, R0 JC DONE MOV A, R0 DEC R0 XCH A, R0 INC R0 MOV R0, A DONE: DJNZ R3, LOOP DJNZ R2, SORT INC R0 MOV A, R0 MOV R0, #SAMP1A IN

39、C R0 INC R0 MOV A, R0 MOV 20H, A PUSH R0PUSH ARET* 4.2.4 计算频率子程序PROC ZHUNBEIZHOUQI ;为了计算频率将被除数1000000装入4CH4FH单元中ZHUNBEIZHOUQI: ;将除数周期T装入5EH51FH单元中 MOV 5FH, DATALMOV 5EH, DATAHMOV 4FH, #40H ;低位MOV 4EH, #42HMOV 4DH, #0FHMOV 4CH, #00HRETNOP ;PC值出错处理NOP ;空操作NOP ;空操作LJMP MIAN ;重新复位启动END*PROC DIVD1DIVD1:

40、PUSH ACC ;现场保护PUSH PSWPUSH BMOV A,R2JNZ DIV1 ;判断R2是否为0,假设R2为0,那么执行ERR0R1;假设R2不为0,那么执行除法DIV1ERR0R1: MOV A, R1 JNZ DIV1 ;判断R1是否为0,假设R1为0,那么执行ERR0R,假设R1不为0,那么执行除法DIV1DIV1: MOV A, R5CLR CSUBB A, R1MOV A, R6SUBB A, R2JNC DVOF ;R6R5-R2:R1,够减,转DVOF溢出;不够减转DIV2DIV2: MOV R7, #10H ;置循环次数16CLR C ;C清零ROL R3 ;被除数

41、低16位左移1位ROL R4DIV3: ROL R5ROL R6MOV R0, C ;将R6最高位放入R0中保存MOV A, R5;做R6:R5-R2:R1的减法,结果放入R6:R5中CLR CSUBB A, R1MOV R5, R5MOV A, R6SUBB A, R2MOV R6, AJNC DIV4 ;C=0,说明够减,在R3最低位上商1MOV A, R5 ;C=1,说明不够减,恢复余数CLR C ADD A, R1MOV R5, AMOV A, R6ADDC A, R2MOV R6, ACLR C ;不够减,商0LJMP DIV5DIV4: SETB C ;够减,商1DIV5: ROL

42、 R3ROL R4DEC R7CJNZ DIV3 ;R7不等于0,说明除法未完,转DIV3继续除CLR C ;清C,表示除法已除完DNE: POP B ;现场恢复POP PSWPOP ACCRETDVOF: MOV B, #0FFH ;溢出标志LJMP DONEERR0R: RET ;假设除数为0,结束运算*PROC BCDSTBCDST: PUSH PSWPUSH ACC; 现场保护PUSH BMOV A,R4;二进制整数送AMOV B,#100 ;十进制数100送BDIV A B ;A/100,确定百位上的数MOV R5,A ;百位数存入R5中MOV A,#10 ;将10送A中XCH A,

43、B ;将10和B中余数互换DIV A B ;A/10,得十、个位上的数,商是十位,余数是个位SWAP A ;将A中商十位数移入商4位ADD A,B ;将B中余数个位数加到A中MOV R4,A ;将十、个位BCD码存入R4中POP B ;恢复现场POP ACCPOP PSWRET*PROC BCD 2BCDBCD 2BCD:PUSH PSW;现场保护PUSH ACCMOV A,R5ANL A,#0FHMOV R5,A ;R5中存高位单字节BCD码MOV R3,R4ANL A,#F0H;屏蔽低4位MOV R4,A ;中间位压缩BCD码转为的单字节BCD码存入R4中MOV A,R3SWAP A;交换

44、中间位和低位ANL A,#F0H;屏蔽低4位SWAP AMOV R3,A;低位存入R3中PUSH ACCPUSH PSW*4.2.5 计算相位差子程序PROC X360 X3600:MOV60H,DATA2LMOV61H,DATA2HMOV62H,68HMOV63H,01HRET*PROC MULNM:MULNM: PUSH A;PUSH BPUSH PSWMOV A, R0MOV B, R2MUL ABMOV R6, AMOV R7, BMOV A, R1MOV B, R2MUL ABMOV R4, AMOV R5, BMOV A, R7ADD A, R4MOV R7, AMOV A, R5

45、ADDC A, #00HMOV R5, AMOV A, R0MOV B, R3MUL ABMOV R3, AMOV R4, BMOV A, R7ADD A, R3MOV R7, AMOV A, R5ADDC A, R4MOV R5, AMOV A, R1MOV B, R3MUL ABMOV R3, AMOV R4, BMOV A, R5ADD A, R3MOV R2, AADDC A, #00HMOV R3, AMOV R1, R7MOV R0, R6POP PSWPOP BPOP ARET*DELAY: MOV 30H, #50D1: MOV 31H, #100 DJNZ 31H, $ DJ

46、NZ 30H, D1RET*4.2.6 显示子程序DISPLAY: MOV DPTR, #TAB MOV R7, #5 JB 2FH.0, FREQXIANGWEI:MOV R0, #78H SJMP NEXTFREQ: MOV R0, #70HNEXT: MOV A, R0 MOVC A, A+DPTR MOV SBUF, AJNB TI, $CLR TIINC R0DJNZ R7, NEXTRETTAB: DB 3FH, 06H, 5BH, 4FH, 66H; DB 6DH, 7DH, 07H, 7FH, 6FH;DB 77H, 7CH, 39H, 5EH, 79H, 7EH 4.3 调试

47、与仿真1编辑源程序。在Wave6000软件平台上编辑上述源程序。2编译源程序。在编译过程中可能有很多语法错误,要一一排除,最后通过编译。3仿真调试:1软件仿真调试并获得通过。2硬件仿真调试并获得通过。4写目标程序到程序存储器中。在仿真调试获得通过后,便可以将目标程序通过通用编程器写到AT89C51芯片内部的程序存储器中。5 系统设计总结在完成上面的设计后,很有必要对自己做的设计总结一下,以便发现问题及时解决,发现缺乏及时补充,发现错误及时纠正。设计任务要求相位测量绝对误差小于或等于2o。相位差测量误差主要来自三个方面:整形电路;鉴相器产生的计数误差,由单片机运算引入的计算误差,计算误差很小可忽

48、略之。由此可见,相位测量误差主要受输入信号整形电路的影响。整形电路的任务是把任意波形一般是正弦波变换成矩形波。在设计中,我们选用由LM339构成的斯密特触发器作为输入信号的整形电路。斯密特触发器可以很好地消除抖动,但也给相位测量仪系统带来了相伴差的测量误差。如果两路待测输入正弦信号的幅度根本相等,且两个斯密特触发器的门限电压又很接近,斯密特触发器引入的相位误差不会对测量精度造成多大影响。但是,如果两路输入信号的幅度相差比拟大的话,那么由斯密特触发器构成的整形电路引入的相位测量误差可能会比拟大。经计算说明,在极限情况下,斯密特触发器整形电路带来的相位差的测量误差可能达不到不能接受的程度。如果直接

49、采用过零电压比拟器作为输入信号的整形电路,那么,过零电压比拟器在电位零点附近极有可能振荡!这是因为在零点电位附近的输入电压位于电压比拟器的线性放大区,这样得到的整形后的信号电压的跳变沿附近会有许多抖动,正是因为这种抖动使得系统测量工作根本无法正常进行。致 谢转眼间,我已经在美丽的郑州轻工业学院度过了两个年头。两年,这是我人生中非常重要的两年,我有幸能够接触到这些不仅传授我知识、学问,而且从更高层次指导我的人生与价值追求的良师。他们使我坚决了人生的方向,获得了追求的动力,留下了大学生活的美好回忆。感谢郑州轻工业学院两年来的培养,在此,我真诚地向我尊敬的老师们和母校表达我深深的谢意!这篇论文是在我的导师王新金老师的屡次指导下完成的。从论文的选题到结构安排,从内容到文字润饰,都凝聚了他大量的心血。在这篇论文的写作过程中,王新金老师不辞辛劳,屡次与我就论文中许多核心问题作深入细致地探讨,给我提出切实可行的指导性建议,并细心全面地修改了我的论文

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!