数字功率表毕业设计论文_第1页
数字功率表毕业设计论文_第2页
数字功率表毕业设计论文_第3页
数字功率表毕业设计论文_第4页
数字功率表毕业设计论文_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 概 述第一节 概 述在测量、控制仪表中引入微机,不仅能解决传统仪表不能解决或不易解决的问题,而且能简化电路、增加功能、提高精度和可靠性、降低售价以及加快新产品的开发速度。由于这类仪表已经实现人脑的一部分功能,例如四则运算、逻辑判断、命令识别等,有的还能够进行自教正、自诊断,并具有自适应、自学习的能力,因此人们习惯上称它们为智能仪表。数字功率表也是一种简单的智能仪表。功率表一直以来都是重要的工业测量仪表,而数字功率表在原有的基础上比以前的更方便。数字显示消除了在模拟标尺上读取指针位置时的人为误差。与传统的其他仪表相比,数字功率表的测量准确度显著提高。除测量准确外,因数字仪表具有自动保护和

2、自动选择量程的功能,因此减少了由于过载而损坏仪表的可能性。此外,本次所设计的数字功率表还具有自动记录数据和进一步处理数据的能力,能方便地使用在自动测试系统中。数字功率表的测量能力随着微电子技术的发展而发展,表内硬件已越来越多地用集成电路代替。另一方面,在改善特性的同时,由于许多集成芯片还需进口,成本也有所增加。但由于数字功率表使用方便、功能强大、体积小,在市场上还是很受欢迎。第二节 毕业设计任务和要求本次毕业设计的主要任务是与做硬件的同学配合,用汇编语言编制出一套数字功率表系统软件用来测量频率为50hz的交流电路的各种参数,包括电压有效值、电流有效值、功率、功率因数。在完成对数据的处理后能在液

3、晶显示器上显示出电路中的电压、电流、功率因数、功率。为了能够圆满的完成这次毕业设计,在这段时间里,需要完成以下几个任务:1.要熟悉课题的基本要求,通过课题的分析,明确主要任务;2.在课题任务明确后,有些难以下手的,或是没有碰到过的问题要及时地向指导老师请教,并且充分的利用学校图书馆这一庞大的资源,查找有关资料,熟悉有关方面的内容。3.在课题任务基本明确,设计方案基本形成之后,完成开题报告的写作。4.设计过程中要查找相关的英文资料,并把它们翻译成中文。5.在编程之前,要熟悉相应的开发语言,主要是熟悉汇编语言的语法结构,开发和调试方法。6.完成测量和显示程序这两个主要模块的编制,涉及到的一些通用的

4、子程序的编程,寄存器的定义,一些测量算法的确定。7.程序编辑好之后,利用se-52单片机调试系统进行软件的调试。8.调试完成之后,完成毕业设计论文,准备毕业设计答辩。本次的毕业设计由我和侯东东同学共同完成,他主要负责的是硬件电路方面的设计,而我则是要在他硬件基础上完成数字功率软件系统的设计。第二章 总体方案简介研制一台智能仪表是一个比较复杂的过程,这一过程包括分析仪表的功能需求和拟定总体设计方案,确定硬件结构和软件算法,研制硬件电路和编制软件程序,以及仪表的调试和性能测试等等。为保证仪表质量和提高效率,应在正确的设计思想指导下进行设计。第一节 系统测量的基本原理 本次所设计的数字功率表就是对于

5、如图2.1所示的二端网络中的电路参数进行测量,假设端电流i及端电压u是在关联参考下,并分别为2i=isint,u=usin(t+),式子中是电压超前于电流的相位角。则网络的瞬时功率为p=ui=usin(t+)isint=uicos-cos(2t+)= uicos- ui cos(2t+),其中u、i分别是电路中电压和电流的有效值,u的范围为0600v,i的范围为010a。由于二端网络能量消耗表现为网络中存在有功功率,故有功功率p为p= uicos,式子中的u,i,p,cos就是本次设计的数字功率表所要测量的量。niu+-图 2.1第二节 基本设计思想由于这个课题要求就是设计一个系统可以对电路正

6、在运行时的参量进行测量、保存、显示,对于单片机软件的开发,可以选用c语言或者汇编语言。在这次设计中本人选择了汇编语言来进行开发,因为汇编语言具有指令简单,运行速度快,便于开发的优点,而且在学单片机编程的时候主要学的语言就是汇编语言,虽然感觉它不像高级语言那样通用性强,但是对这个系统来说并不需要考虑它的移植性,所以选用汇编语言来开发这个系统是完全可以的。这个系统的设计总的思路如下:对于电路中的电压和电流的测量,可以通过系统的前置电路把其转换成可供采样电压信号,再通过ad转换送入单片机处理,由软件读出,然后进行处理,处理后参数由液晶显示器显示出来。对相位角的测量,采用过零比较的方法利用单片机的定时

7、器对电压与电流的过零点的时间差进行确定,再通过计算就可以确定电压与电流的相位差,此时定时器如果采用定时的方式就会产生很大的误差,所以在软件编程时选用定时器计数的方式而不是定时方式。而对于功率因数的测量则相对简单,由于相位角经被测量得到,所以可以通过功率因数等于cos来查表得到.功率的测量则是通过公式p=u*i*cos计算出来的。这样用这个系统就可以测量出电路在运行时候的各个参数,并可以将电路每一个时刻所对应的电压、电流、功率、功率因数四个参数当成一组数据通过液晶显示器显示出来。再通过功能键的调用可以将当前显示的数据保存到片外存储器中,也可以将当前显示的数据从片外存储器中删除,也可以显示上组数据

8、或者下组数据。另外与传统仪表不相同的一个地方就是它可以与上位机进行通信,当上位机发送要求与仪表进行通信的请求信号后,数字功率表可以把我们保存在片外存储器的数据发送给上位机。根据仪表的功能要求和技术经济指标,由大到小地按仪表功能层次把软件分为若干个模块,分别进行设计和调试,然后把各个模块连接起来形成整个系统,最后与系统的硬件联调。根据数字功率表的硬件电路和上面所述的软件设计思路将软件分为监控主程序、相位角测量子程序、电压有效值测量子程序、电流有效值测量子程序、显示子程序、键盘处理子程序、通信子程序等几个模块分别进行设计与调试,最后将它们整体连接起来进行形成总的软件系统与硬件电路联调观测能否达到预

9、先要求的功能。第三章 系统硬件分析3.1 单片机电路测试系统的分析单片机电路测试系统主要由一块at89c52、一块24c16数据存储器、以及人机接口电路(主要是键盘电路)以及前向测试通道构成。它要完成的主要任务就是把系统从前向通道输入的数据进行处理之后,通过内部总线送给片外的24c16数据存储器进行储存,并要能将处理过的数据通过液晶显示器的显示电路显示出来。就像人类的大脑一样可以对数据进行输入,处理,输出,或是产生一系列控制信号。3.1.1 at89c52单片机简介:at89c52是一种低功耗、高性能的片内含有8kb快闪可编程/擦除只读存储器的8位cmos微控制器和256bytes的随机存取数

10、据存储器(ram)使用高密度、非易失存储技术制造,并且与标准mcs-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(cpu)和flash存储单元,功能强大的at89c52单片机适合于许多较为复杂的控制应用场合。以下是89c52的引脚图以及它的主要性能参数: 3.1.2 数据存储器24c16的扩展由于我们所设计的数字功率表的系统并不是很大,所要存储的数据也并不是非常多,所以我们在选择片外数据存储器的时候我们选用了串行e2ppom 24c16。选用它的原因是在系统掉电后它所存储的数据并不消失,并且它与单片机相连的管脚也比较少,节约了系统的硬件资源。当然它也有一定的不足,就是在软件编程

11、时比较麻烦。下面是对24c16的简单介绍:24c16是一个16k位的串行e2ppom,内部含有2048个8位字节,该器件通过i2c总线进行操作,有一个专门的写保护功能。其管脚配置如下所示:管脚名称功能a0、a1、a2器件地址选择sda串行数据/地址scl串行时钟wp写保护vcc+1.8v到6.0v工作电压vss地 表 3.1 24c16的功能描述:24c16支持i2c 总线数据传送协议,i2c总线规定,任何将数据传送到总线的器件称为发送器。任何从总线接收数据的器件称为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据

12、(发送或接收)的模式。由于在本次软件系统中要编制24c16的读写程序所以在此有必要介绍一下24c16的一些时序。124c16的起始信号:时钟线为高电平期间,数据线电平从高到低的跳变作为24c16的起始信号。224c16的停止信号:时钟线为高电平期间,数据线电平从低到高的跳变作为24c16的停止信号。24c16的起始/停止时序如下图3.1所示: 图3.1 起始/停止时序图24c16的寻址过程:主器件通过发送一个起始信号启动发送过程,然后发送控制命令字,该控制字的高4位固定为1010,接下来的三位(a2、a1、a0)为器件的地址位,用来定义哪个器件以及器件的哪一个部分被主器件访问,而 控制字的最低

13、位则作为读写控制位。“1”表示对从器件进行读操作,“0”表示对从器件进行写操作。接下来主器件发送要访问的从器件的地址,在主器件发送起始信号和从器件地址字节后24c16监视总线并当其地址与发送的从地址相符时响应一个应答信号(通过sda线)。24c16再根据读写控制位(r/w)的状态进行读或写操作。24c16在本次电路中的接法如3.2图所示。 图 3.2 24c16在本系统中的接法3.2 系统的前向通道用单片机组成测控系统时,系统必须有被测电信号的输入通道,即前向通道,用来采集必要的输入信息。而本测试系统的前向通道构成及接口如下:3.2.1电压、电流测试的前置电路由于本系统测量电压的有效值范围是0

14、v到600v,电流有效值的范围是0a到10a,而模数转换器采样电压仅仅为0到5v的直流电压,所以在硬件上需要设计电压和电流的前置通道完成强电到弱电的转换。即外部电压或电流先经过互感电路变换、整流电路整流、分压电路分压最后才可以被模数转换器采样。具体变换过程如下所述:(1)电压与电流的变换电路 图3.3 电压变换电路 图 3.4 电流变换电路在硬件中电压与电流的变换过程如上面两幅图所示,由于在本次电路中选择的电压互感器为tva1421-01型号,所按上图所示我们可以得到当电压互感器输入0600v对应的输出电压ud为010v,两者之间成线性变化的。同样因为我们选用的电流互感器为tva142-03,

15、按图3.4所接法有当输入为010a对应的输出就为010v,输入和输出两者之间成线性变化。(2)小量程采样通道图3.5 电压小量程采样通道 图3.6 电流小量程采样通道为了提高测量的精度在硬件系统中设计两个程通道,一个是大量程通道另一个是小量程通道,当外电路电压通过互感器变换后的电压如果比较小(比如只有1v)时我们测量选用小量程通道,因为此时我们若直接选用大量程通道的话,由于转换后的电压本身就很小了,再经过整流和分压后采样电压就会非常更小了,这样采样就会形成很大的误差。而选小量程通道则不同,我们将通过互感器变换后的交流电压放大十倍再通过像大量程通道一样的电路进行重新采样测量则误差会减小很多,这样

16、测量误差就只有原来误差的十分之一。当然当通过互感器变换后电压比较大的时比如5v,我们如果仍然用小量程的话则电压被放大十倍后再通过电阻进行分压,则输入模数转换器的电压就近似稳定在5v左右,这样采样的值也就不准确了,像在这种时候量程通道就应该选择大量程通道,这样采样处理得出的电压值才能与电路的真实值相等。(3)大量程采样通道图 3.7 电压大量程采样通道图3.8 电流大量程采样通道当通过互感器变换后电压比较大时候系统将选择大量程通道,该通道变换过程如下:变换后的交流电压(电流)首先经过二极管整流电路进行整流,得到0到10v范围内的直流电压,但由于a/d转换器的工作电压为0到+5v,所以要通过电阻进

17、行分压。出于对测量设备的保护,在信号送入tlc2543之前并联一个稳压二极管对直流电压信号进行稳压,确保输出电压为+5v范围内。电压(或者电流)的量程的自动转换则通过软件来实现,关于量程转换将在第四章软件设计中具体介绍,在此就不再叙述。 3.2.2 相位角测试的前置电路该电路原理图如图3.8所示,其主要由限幅电路、过零检测器和光电耦合器组成。当外电路电压(或电流)通过互感器变换后的采样电压(电流)值大于0时,则1点(14点)的电位小于零,发光二极管导通,使光电耦合器作用导致p32输出低电平。当电压(电流)的负半轴经过零点时,1点(14点)的电位大于零且近似为12v,这个时候发光二极管不导通,使

18、得光电耦合器不作用p33输出为高电平。由于已知本系统所测量的电路频率主要为50hz的交流电,在系统中电压接入外部中断0(单片机的p32管脚),电流接入外部中断1(单片机的p33管脚),这样根据电压和电流过零的时间差,再通过软件编程我们可以计算出电压和电流之间相差的相位角,由此可看出在这个电路中光电耦合器有两种作用:电气隔离和电平转换,从而满足了系统要求。 图 3.8 相位角测量前置电路3.2.3 模数转换电路数字功率表主要用到了模数转换电路,本次课题选用的a/d转换芯片是最多可以有11路模拟量输入的tlc2543,因为tlc2543不光转换时间很短而且采样的精度也非常高,完全可以满足本系统的测

19、量要求。以下是对该芯片的简单介绍:tlc2543是12位开关电容逐次逼近模/数转换器。有片选(cs)、输入/输出时钟(clock)以及地址输入端(datai)三个控制输入端,可通过串行的三态输出端与主处理器或其他外围串行口高速传输数据。除有通用的数字控制能力外,该器件有一个片内的14路模拟开关,可选择11个输入中的任何1个或3个内部自测试电压中的一个。采样保持是自动的。在转换结束时,eoc输出端变高以指示转换的完成。tlc2543的基准由外电路提供,可差分输入也可单端输入,范围是+2.5v到vcc。在允许的温度范围内转换时间小于10us,线性误差小于。有片内转换时钟,i/o最高时钟频率为4.1

20、mhz,工作电源是+5v0.25v。tlc2543可通过软件设置为下列输出方式: 单极性或双极性输出。 msb(d11位)或lsb(d0位)作前导输出。 可变输出数据长度。表3.2是tlc2543的输入寄存器格式,tlc2543在本系统中其硬件电路图如图3.6所示,在本次毕业设计中由于对采样的精度要求非常高,所以在编程的时候软件要将tlc2543设置成单极性输出,msb做前导输出并且输出的数据长度为12位。根据硬件原理图和表格3.2可以确定出各个量程的的通道地址以及tlc2543的控制格式如表3.3所示:图 3.6 tlc2543的接口电路功能选择输入数据字节备 注 地址位l1 l0 lsbf

21、bip d7=msbd0=lsb d7 d6 d5 d4d3d2d1 d0ain0ain1ain2ain3ain4ain5ain6ain7ain8ain9ain1000000000111000011110000011001100101010101010选择输入通道ref+与ref差模1011内部测试ref单端1100ref+单端1101软件断电1110输出8位输出12位输出16位01101输出数据长度msb先出lsb先出01顺序输出单极性双极性01极性表3.2 tlc2543的输入寄存器格式原理图中电压和电流各个通道与之对应的tlc2543的通道通道地址以及控制格式电压小量程通道in320h电

22、压大量程通道in430h电流小量程通道in100h电流大量程通道in210h表3.3 各个量程通道对应地址和控制格式3.3 人机接口电路单片机应用系统通常都需要进行人-机对话。这包括人对应用系统的状态干预与数据输入,还有应用系统向人显示运行状态与运行结果等。如键盘、显示器就是用来完成人-机对话活动的人-机通道。3.3.1键盘接口的分析键盘是由一组按压式或触模式开关构成的阵列。智能仪表键盘的设置应由该仪表具体的功能来决定。因为本测试系统的功能键比较少,一共就六个按键,所以在硬件设计的时候在键盘选择上选用了独立式的按键,独立式按键就是各键相互独立,每个按键各接一根输入线,这样一根输入线上的按键工作

23、状态就不会影响其他输入或输出的工作状态。因此通过检测输入线的电平状态便可以很容易的判断哪个按键被按下了。我将这六个按键分别定义为控制测试系统的复位、取消处理、保存处理、上一组处理、下一组处理,跳出处理这六个不同的功能。本次设计的键盘电路如下:图 3.93.3.2 液晶显示电路在显示器的选择上我们选择了字符型可编程字符液晶显示控制器,其型号是mdls16268,因为此可编程字符液晶显示控制器有其专用指令集,易于编程,而且用它最多可以用来显示两行共三十二个字符,这些对于功率表来说已经完全足够了。图3.12为该液晶在本系统中的电气连接图: 图 3.12 液晶显示器电气连接图第四章 软件设计前面一章对

24、系统的硬件作了较为简单的分析。但硬件的运作离不开软件的支持。因此,这一章详细介绍了系统软件设计的过程。这也是本次毕业设计的重点内容。本章主要针对数字功率表的测量介绍了软件实现的过程。在本章中我对像一些子程序像双字节无符号数的乘除法、二进制数到十进制数的转换、数据的排序取平均值、线性插值等之类子程序并没有做介绍,因为此类的子程序我们能在参考书上很容易找到现成的模块,这些都是前人的经验结晶,在这个系统中我是直接对它们进行调试后引用的。最后还对本次软件开发工具,即软件开发工具仿真器medwin作了一定的介绍。 4.1 程序设计 在任务的总体设计思想和硬件确定之后,就可以开始设计程序,根据前面介绍的工

25、作原理和技术指标,软件设计应完成的主要任务为:(1) 系统的主程序设计主程序是整个数字功率表系统控制程序的主框架,它是一个顺序执行的无限循环的程序,运行过程必须构成一个圈,这样才能不断的更新数据。主程序应不停地顺序查询各种软件标志,并根据其变化调用有关的子程序和执行相应的服务子程序,以完成对各种实时事件的处理。本系统中,主程序的主要功能是测量和调用键盘扫描子程序,当系统测量完成后我们调用键盘扫描子程序,根据扫描子程序得到所按的键的键值,按键值跳转到相应的功能键子程序实现各种功能,并在返回主程序后调用显示子程序在显示器输出相应数据。主程序框图如图4.1所示。其具体程序见附录四程序清单。通信处理调

26、用键盘扫描子程序n初始化程序调用显示子程序有键按下?键值判别程序调用测量程序y开始下组处理处理 上组处理处理跳出处理处理取消处理处理采样处理图4.1(2)初始化子程序的设计 初始化程序主要用来确定程序的初始堆栈,程序状态字,对相应的存储单元进行清零,设定定时器工作方式等等,初始化程序的具体步骤如下:1) 由于单片机在复位后堆栈为07h,所以在系统开始后应该重新设置堆栈;2) 清24c16写保护,读取标志寄存器的内容,比较标志寄存器中的内容是否等于0aah,如果相等则保持系统上次运行的状态,否则清除以前状态;3) 设置定时器工作方式和波特率。在这个系统中由于我们在测量电压和电流之间的相位差的时候

27、要用到定时器t0,所以在初始化时我们便要设定定时器t0的工作方式,由于单片机在这个系统中要与上位机进行通信,所以波特率的设置是非常必要的,在这个系统中,我们选用t1工作于方式2作为波特率发生器,设t1的计数器初值为x,依据公式波特率=(其中为系统的振荡频率在本系统中为11.0592mhz)由于在本系统中下我们选择的波特率为9600,所以我们便可以由上式计算得x=0fdh。根据上面所述我们设定t1工作于定时方式2,t0计数方式1,串口工作于方式1。4) 初始化液晶显示器,液晶显示器在重新上电后必须重新初始化才能显示字符,所以在初始化子程序中此步骤必不可少。整个系统的初始化子程序软件流程图如图4.

28、2所示:y确定堆栈,清写保护系统是否是第一次上电标志寄存器送0aah清数据处理区读取标志寄存器的内容清计数内容设定定时器的工作方式na开始 初始化液晶显示器显示初始画面设置波特率,串口工作方式a初始化结束 图 4.2初始化程序如下:org 0000h start: mov sp,#60h clr swp ;清24c16写保护 mov dptr,#bzjcq mov dzjcqh,dph mov dzjcql,dpl call eeprd cjne a,#0aah,fw1 mov tmod,#21h ;t1定时方式2,t0计数方式1 mov th1,#0fdh ;波特率9600 mov tl1,

29、#0fdh mov scon,#50h ;串行口方式1 mov pcon,#00h setb tr1 clr rs clr r_w clr e call csheda ;初始化液晶 call display ;显示初始画面(3)测量子程序这部分是整个系统的主要测量程序,是整个循环程序的主体内容。这部分我们要完成的主要任务有电压和电流之间相位差的测量、功率因数的计算,电压有效值的测量、电流有效值的测量以及功率的计算,整个测量子程序的流程图如图4.4所示:测量相位差查表求功率因数测量电压有效值测量电流有效值计算功率调用显示子程序显示处理置显示标志位 图 4.3其中测量子程序中又包含如下子程序:(a

30、)功率因数的测量子程序对电压与电流之间相位差的测量,我们设置单片机的定时器to采用定时器计数的方式,当单片机的int0由1变成0产生跳变的时候,即电压波形产生负跳变的时候,开始计数。当int1由1变成0产生跳变的时候,即电流波形产生正跳变的时候,关闭定时器t0。当int0由0变成1,即电压波形产生正跳变的时候再次打开定时器t0,但当int1的波形由0变成1的时候,即电流波形产生负跳变的时候,关闭定时器t0。这样,根据在定时器t0中所保存的数值,通过公式(其中t为交流电路频率,为电压和电流之间的相位差)得,即,为了程序计算方便我把测量数值放大了1000倍,其中t为电路的周期,根据所测电路的频率为

31、50hz可以得到其中,又为t0的计数值带入上式,所以便可以计算出相位角。然后再通过查表便可以求出功率因数。对功率因数的测量子程序流程图如4.5所示:关闭t0停止计数int0=0?等待设t0初值int0=1?等待启动t0开始计数int1=1?等待nynynby 关闭t0停止计数重新启动t0开始计数int1=0?等待ynb计算相位差计算功率因数 图 4.4 功率因数测量子程序如下:loop10: mov tl0,#0 ;测相位差 mov th0,#0 jnb p3.2,$ jb p3.2,$ setb tr0 ccc: mov dptr,#tabcos ;功率因数 movc a,a+dptr mo

32、v r0,#glyssz mov r0,a(b)电压、电流的有效值的测量电压、电流有效值测量过程是这样的,我们通过硬件和软件综合调试发现在测量的过程中,电压(电流)的有效值和我们通过tlc2543回来得到的采样值并不是完全成线性变化的,在某一范围内甚至误差很大,这与我们预期的情况有很大的出入,为了减小这个误差我们决定在软件上采用线性插值来解决这个误差,即我们建立一个不同的电压(电流)对应不同的采样值这样的一个表,最后通过采样回来得到的采样值进行线性插值进而得到我们电路中的电压(电流)的有效值。电压(电流)测量的量程自动转换就是在这里实现,实现的过程如下所述:首先我们先采样电压(电流)的小量程通

33、道的电压然后判断采样回来的值是否大于我们小量程电压(电流)表格中最大电压(电流)所对应的采样值,如果小于等于则证明我们所选择的通道量程正确,则查小量程电压(电流)表格进行线性插值计算的出电压(电流)的有效值。否则的话我们转大量程通道重新采样再查大量程表格进行线性插值计算最终得到电压(电流)的有效值。在这里,大量程与小量程的分界点,电压在40v,电流在1a。在编制采样子程序的时候,为了克服由于系统的随机干扰信号而引起的随机误差,我们对同一通道连续采样十次,然后将这十次采样得到的值由大到小进行排序,排完后去掉其中的最大值与最小值,对剩下八个数据取平均值,最后得到的平均值就是本次采样的最终采样值。电

34、压有效值测量子程序流程图如下:线性插值查大量程电压表格返回线性插值选定电压小量程通道电压值是否大于40v调用采样子程序查小量程电压表格选定电压大量程通道调用采样子程序yn 图 4.5电流有效值测量子程序流程图如下:线性插值查大量程电流表格返回线性插值选定电压小量程通道电流值是否大于1a调用采样子程序查小量程电流表格选定电流大量程通道调用采样子程序yn 图 4.6采样子程序流程图如下: 采样10次采样值按从大到小排序选定通道与寄存器组将psw压栈c 取平均值将psw弹出堆栈返回c图4.7 程序如下:测量电压子程序 cydy0: mov tdjcq,#20h cydy1: call cy1 clr

35、 c mov r4,a mov r5,b mov a,r4 subb a,#0ch jnc cydy2 jz aaa jnz mmmm aaa: mov a,r5 subb a,#0a1h jnc cydy2 mmmm: mov dptr,#tabdy0 mov jsq3,#9 call cheta ret cydy2: mov tdjcq,#30h call cy1 mov r4,a mov r5,b mov dptr,#tabdy1 mov jsq3,#22 call cheta ret测量电流子程序 cydl0: mov tdjcq,#00h cydl1: call cy1 clr c

36、mov r4,a mov r5,b mov a,r4 subb a,#0ch jnc cydl2 jz lll jnz mmm lll: mov a,r5 subb a,#0d6h jnc cydl2 mmm: mov dptr,#tabdl0 mov jsq3,#6 call cheta ret cydl2: mov tdjcq,#30h call cy1 mov r4,a mov r5,b mov dptr,#tabdl1 mov jsq3,#7 call cheta ret采样子程序 cy1:push psw setb psw.3 mov r7,#10 ;采样10次 mov r1,#sh

37、jjcq cy2:mov a,tdjcq call cy2543 mov r1,b inc r1 mov r1,a inc r1 djnz r7,cy2 call pxu ;将采样的数从大到小排序 call qpjz ;取平均值 mov a,r4 mov b,r5 pop psw ret(c)功率的测量准确来讲,功率并不是直接测出来的,而是通过软件间接的算出来的。我们先通过测量得到电流有效值i,电压有效值u然后根据公式便可以计算出功率的数值,然后再送入glsz单元。 功率测试流程图如图 4.9所示:取电流值 取功率因数值 相乘结果存入glsz单元 乘以glsz取电压值 结果送入glsz单元图

38、4.8测量功率的子程序如下:mov dlsz,a mov a,r7 mov dlsz+1,a mov r2,#00h mov a,glyssz mov r3,a call ndiv1 ;(r2r3r4r5)/r6r7=r4r5 mov a,r4 mov glsz,a mov a,r5 mov glsz+1,a(4)显示处理子程序该程序主要目的是将我们要显示的数据转换成液晶能显示的ascal码送往显示缓冲区。在本系统中由于采样回来得到的数据是二进制数液晶并不能直接将其显示,所以我们要将其转换成液晶可以显示的ascal码。显示处理流程图如图4.9所示。(5)液晶显示子程序 液晶显示子程序包括两个部

39、分,即液晶初始化子程序和液晶显示字符子程序,液晶如果不经过初始化即使将显示数据送到液晶数据存储器上液晶也不能显示数据,所以我们编制程序的时候系统初始化的时候最重要的一个环节就包括了液晶的初始化。液晶的初始化包括了液晶工作方式的设定、输入方式设定、清屏等等。其软件流程图如图4.10所示。 液晶显示子程序的另一个部分就是液晶显示字符的子程序,这个子程序的功能就是将要显示的数据送到液晶显示器的显示ram中,在这个过程中最关键的事就是要确定显示ram的地址,在本次设计中,液晶显示器的第一行ram对应的地址是从00h到0fh,第二行对应的地址是从40h到4fh。显示子程序具体流程图如图4.11所示:模式

40、符号u送显缓冲区电压值取出 转成bzd码 转换成ascal码送往缓冲区模式符号i送缓冲区电压值取出转成bzd码转换成ascal码送往缓冲区 模式符号p送显缓冲区 dd功率值取出 转成bzd码 转换成ascal码送往缓冲区模式符号cos送显缓冲区功率因数值取出 转成bzd码 转换成ascal码送往缓冲区图 4.9设置输入方式设置显示方式循环设置三次工作方式设置指令码设置工作方式清 屏返回设置ddram地址1送第一行要显示的数据设置ddram地址2送第二行要显示的数据返回 图4.10 图4.11显示处理程序如下:xshcl: mov r0,#xshsz ;显示电压u: mov a,#55h mov r0,a inc r0 ret液晶初始化子程序如下:csheda:clr rs ;写指令 clr r_w mov a,#30h ;工作方式设置指令代码 mov c,acc.7 mov dd7,c mov c,acc.6 mov dd6,c mov c,acc.5 mov dd5,c mov c,acc.4 mov dd4,c mov r5,#3 ;循环3次 int11: setb e clr e call delay ;延迟 djnz r5,

温馨提示

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

评论

0/150

提交评论