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

上传人:laozhun 文档编号:3977645 上传时间:2023-03-30 格式:DOC 页数:37 大小:283KB
返回 下载 相关 举报
毕业设计(论文)低频相位测量仪软件设计.doc_第1页
第1页 / 共37页
毕业设计(论文)低频相位测量仪软件设计.doc_第2页
第2页 / 共37页
毕业设计(论文)低频相位测量仪软件设计.doc_第3页
第3页 / 共37页
毕业设计(论文)低频相位测量仪软件设计.doc_第4页
第4页 / 共37页
毕业设计(论文)低频相位测量仪软件设计.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《毕业设计(论文)低频相位测量仪软件设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)低频相位测量仪软件设计.doc(37页珍藏版)》请在三一办公上搜索。

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

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

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

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

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

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

7、让定时器/计数器T1对外部事件计数,而让定时器/计数器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中

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

9、器/计数器有三个特点:定时器/计数器可以与CPU并行工作;定时器/计数器可以采用中断方式与系统协调工作;定时器/计数器可以由软件或硬件控制启动和停止。单片机的定时器/计数器受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

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

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

13、方案电路图如图3-1。图3-1 采用单门限电压比较器的整形电路另外,在相位差测量过程中,不允许两路被测输入信号在整形输入电路中发生相对相移,或者应该使得两路被测信号在整形输入电路中引起的附加相移是相同的,因此,我们对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个

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

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

18、振,计数脉冲的间隔是1微秒。3.2.2复位电路由图3-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芯片组成。这种显示方式不仅可以得到较为简单的硬件电路,而且可以得到稳定的数据输出显示,不仅占用单片机端口少,而且可以充分利用单片机芯片内部的串行口资源,容易掌握其编程规律,简化软件编程。试验证明,这种显

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

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

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

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

24、无符号二进制数,二是待测信号的相位差对应的时间差T(单位也是1s),也为16bit无符号二进制数。(2)对获取的数据进行处理:从前面分析可知频率f=1/T,=(T/T)360,但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

25、数码管个数确定方法如下:题目要求相位差显示为0o359o,分辨率为1o,则数码管选3个。频率显示20Hz20kHz,20Hz20000Hz,则要5个数码管。综合考虑和两点,并考虑在显示频率、相位差时分别给出一个标志符号于最右边的数码管上,分别显示“o”和“H”,则选定6个LED数码管作为系统的显示器。这样,显示缓冲区(连续区域)为12Bytes(12个内存单元)。硬件电路中不需要的LED数码管通过软件让其消隐而不显示。6位LED数码管的工作情况为:根据显示选择设置(频率/相位差),CPU从显示缓冲区取数据,通过UART方式0串行输出数据,由74LS164接收数据并驱动6位LED数码管显示。在软

26、件编程时应解决无效数字“0”的消隐问题。不需要CPU对LED显示内容定时刷新(与LED动态扫描显示不同)。4.1 程序流程图 通过分析单片机应完成的任务可知,这些任务可以按顺序执行(没有对时序要求很严格的任务)。所以,整个单片机源程序由主程序及若干子程序组成,而主程序是一个循环执行的顺序程序。主程序流程图如图4-1所示,主程序主要完成待测信号的频率、相位差的测量,并由键盘作为功能键切换,由显示模块LED显示出结果。具体思路:首先初始化程序,包括定义各内存空间,各标志位,初始化堆栈、寄存器等;由于程序要用到T/C,所以应首先使TR0和TR1置位,即由INT0和INT1引脚的外部信号控制T/C的启

27、动和停止;为使测量的频率、相位差准确,程序设计采用调用三次测量时间差、周期的子程序SUB1,并将测量到的时间差、周期保存到内存中;采了3个值后,使TR0和TR1复位,计平均数,再计算频率、相位差,即可得到较准确的相位差值;最后键盘作为功能键切换,由LED显示出待测信号的频率和相位差。测量时间差、周期子程序的程序流程图如图4-2所示,计算频率子程序流程图如图4-3所示,键盘子程序流程图如图4-4所示,计算相位差子程序流程图如图4-5所示,显示子程序流程图如图4-6所示。显示子程序主要完成将待测信号的频率、相位差值在LED上显示出来。具体思路:初始化程序时设频率显示缓冲区首地址为70H,相位差显示

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

29、NSUB1入口R4=4(R4是计数器)保存周期TH0、TL0、保存时间差TH1、TL1清零定时器T0、T1清零标志位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

30、计算相位差子程序流程图入口装入被乘数和乘数到内存做乘法装入被除数和除数到内存做除法求相位差将二进制数据转换为压缩BCD码将压缩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

31、; 16bit相位差对应的时间差的数据存放内存单元DATA2H EQU 44H;- ;除法占用单元及乘法占用单元AD0 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 ;控制

32、显示频率或相位差的标志位SAMP1A EQU 40H SAMP1B EQU 41H SAMP1C EQU 42H SAMP2A EQU 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: NOPSE

33、TBTR0SETBTR1 LCALL SUB1 CLRTR0 CLRTR1 LCALL ZZLB LCALL ZHUNBEIZHOUQI ;装入频率计算数据(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

34、,#3FHMOV R7,#04HMOV 30H,#0MOV 31H,#0LCALL BCD 2BCD ;将压缩BCD码格式转换成单字节BCD码格式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,5

35、FH MOV 5FH,DATAL ;装入被测周期T的数据MOV 5EH,DATAHLCALL DIVD1 ;调用除法子程序计算得到相位差值MOV 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

36、;内存单元78H7AH是相位差值显示缓冲区,其中78H是符号位MOV 7AH,31H CHCHu:LCALLDISP ;调用显示子程序 KEYCOD: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.

37、1,LCCJNZR4,#4,SAVEJMPCTSAVE:MOVDATAL,TL0MOVDATAH,TH0MOVDATA2L,TL1MOVDATA2H,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

38、R0 MOV A,#56H MOV R0, A INC R0 MOV A, #12H MOV R0, A INC R0 MOV A, #02H MOV 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

39、, A DONE: DJNZ R3, LOOP DJNZ R2, SORT INC R0 MOV A, R0 MOV R0, #SAMP1A INC 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: 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:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号