基于单片机单相数字电功率表的设计_第1页
基于单片机单相数字电功率表的设计_第2页
基于单片机单相数字电功率表的设计_第3页
基于单片机单相数字电功率表的设计_第4页
基于单片机单相数字电功率表的设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

摘要本文主要讲述了基于单片机的单相数字电功率表的设计。该单相数字功率表采用AT89C52单片机作为中央处理器,其间通过检测电压电流值,采用过零比拟法利用单片机的定时器计算出相位角,最后依据得出电网功率,最后将检测到的测量值显示在液晶显示器上。另外本文介绍了其相关硬件电路和软件程序流程图,本设计主要包括下面几方面:交流信号数据采样与处理、模数转换、单片机应用与编程、液晶显示。随着社会的开展,电子产品逐渐朝着数字化、信息化、自动化方向开展,本设计的数字功率表也逐渐取代了传统指针式模拟功率表,其具有抗干扰能力强、精度高、可扩展性强、集成方便等优点,具有良好的研究意义。关键词:单片机数据采集过零比拟液晶显示AbstractThispaperdescribesthedesignofsingle-phasedigitalelectricpowermeterbasedonMCU.ThesinglephasedigitalpowermeterusingAT89C52microcontrollerasthecentralprocessor,whichbydetectingthevoltageandcurrentvalue,thezerocrossingcomparisonmethodtheuseofsingle-chiptimertocalculatethephaseangle,finallybasedontheresultsofthepower,themeasurementofthedetectedvaluedisplayedontheLCDmonitor.Thispaperalsointroducestherelatedhardwarecircuitandsoftwareprogramflowchart,thedesignmainlyincludesthefollowingaspects:samplingandprocessing,analog-to-digitalconversion,applicationandprogramming,MCULCDACsignaldata.Withthedevelopmentofsociety,electronicproductsgraduallytowardsdigitization,informatization,automationdevelopmentdirection,thedesignofthedigitalpowermeterhasgraduallyreplacedthetraditionalanalogpointertypepowermeter,ithasadvantagesofstronganti-interferenceability,highprecision,strongexpansibility,easytobeintegrated,withgoodresearchsignificance.Keywords:microcontrollerdataacquisitionmorethanzeroliquidcrystaldisplay目录TOC\o"1-3"\h\u906摘要I18258AbstractII14194第1章概述1199951.1设计背景与意义1186121.2研究内容1540第2章系统方案设计2275152.1系统根本思想2314932.2系统功能要求210592.3系统框图3126802.4设计方案及技术分析3162052.4.1电压电流采集模块3172952.4.2信号处理模块481352.4.3模数转换模块4151242.4.4相位角测量模块422653第3章系统硬件分析5298973.1电路测试系统的分析5151053.1.1单片机最小系统简介5278913.1.2数据存储器24C16519193.2系统的前向通道811299电压、电流采样的前置电路843683.2.2相位角测量的前置电路1068343.2.3模数转换电路114463.3键盘电路15310233.4液晶显示电路159164第4章系统软件设计18279314.1Keil编程软件介绍184924.2程序设计18196244.2.1系统的主程序设计18324064.2.2初始化子程序的设计19269704.2.3测量子程序21170474.2.4液晶显示子程序26227084.2.5键盘扫描子程序289615第5章系统调试过程30295345.1Proteus软件应用3017905.2电压、电流采集模块调试30180225.3相位角测量模块调试3112885.4液晶显示模块调试33203545.5系统调试339762第6章总结3525735参考文献3730010致谢3826477附录A:原理图3919488附录B:仿真图4013206附录C:局部程序41第1章概述1.1设计背景与意义随着社会的开展,电能在人们的生活中无处不在,并以各种形式影响着人们的生活。现在人们的根本生存得到保障,对用电设备工作状态的了解与要求也越来越高。这些工作状态主要包括电网电压、设备工作电流、工作环境、压力、湿度等,只有满足所有用电设备的最大要求才能确保人身的平安问题。电网电压与工作电流的稳定是设备长期运行的前提,而功率表是电压电流最终的表达方式,因此,对功率表的测量显得尤为重要。最近几年,随着电子、计算机和半导体三方面技术的飞速开展,电力系统在测量方面也发生了巨大的变革。功率表一直以来作为重要的工业测量仪表,广泛被应用于电工与电子技术领域,目前,电能表、电子式功率计采用的工作原理,根本上是依据功率的定义,采用各种乘法器来实现电压与电流的乘积,而本设计采用数值采样法,对电压电流信号进行同时采样,以获得较高的精度。与传统方法不同,本设计采用过零比拟法利用单片机的定时器对电压与电流的的时间差进行确定,从而计算出电压与电流的相位角,再经查表得出功率因数,最后计算出电网功率。家庭用电主要是交流电,所以本设计主要研究的是单相交流数字电功率表。其采用数字化测量技术,分开采集电压电流,再通过软件编程计算出功率。测量的过程中,通过把连续的模拟量〔交流输入的电压和电流〕转换成不连续的、离散的数字形式。传统的指针式电能表功能单一且精度低,以不能满足社会的需求,故采用单片机的数字功率表,精度高、抗干扰能力强、集成方便,还可与PC机进行实时通讯。目前,集成的数字功率表功能强大、使用方便、体积小,广泛应用与电子及电工测量、工业自动化仪表、自动测试系统等智能数字化领域,在市场上受到很多人的青睐。1.2研究内容本设计是针对单相交流数字电压表系统的研究,以单片机为核心,设计并制作0-300V交流电压、0-5A交流电流的采集、电压超前电流的相位角的硬件系统。在制作硬件系统的平台上编写相关的程序并实现功率的计算与显示。系统采用51单片机作为核心处理器,通过硬件电路和软件编程,控制模数转换器工作和液晶显示器显示。本设计主要包括下面几方面内容:交流信号数据采样与处理、模数转换、单片机应用与编程、液晶显示。第2章系统方案设计2.1系统根本思想本设计是针对二端网络〔如图2-1〕电路中参数的测量,假设端电流i及端电压u是在关联的参考下,分别为,,其中是电压超前于电流的相位角,那么瞬时功率,其中U、I分别是电路的电压有效值和电流有效值,通过滤除高频交流分量,就可以得到功率的有效值。图2-1二端网络本课题主要研究的电路电网中对正在运行时的参量进行测量、保存、显示,对于单片机软件的开发,可以选用C语言或者汇编语言进行编程。本设计中我选择利用C语言进行编程。本设计根本的设计思路如下:首先,对于电路中的电压和电流的测量,可以通过系统的前置电路把其转换成可供采样电压信号,再通过AD转换送入单片机处理,由软件读出,然后进行处理,处理后参数由液晶显示器显示出来。其次,对相位角的测量,采用过零比拟的方法利用单片机的定时器对电压与电流过零点的时间差来进行确定,再通过计算就可以确定电压与电流的相位差,故功率因数可以通过查表得到。最后,功率的测量那么是通过公式计算出来的。电路每一个时刻所对应的电压、电流、功率、功率因数四个参数可以通过液晶显示器显示出来。2.2系统功能要求本设计利用数字功率表来测量频率为50Hz的交流电路的各种参数,包括电压有效值、电流有效值、功率、功率因数。数字功率表不能直接测量得到,必须先进行电压、电流和功率因数的测量,才能计算出功率。本设计重点阐述了电压和电流分别采样及采用过零比拟的方法利用单片机的定时器得出相角的过程,选用高精度的模数转换器TLC2543进行模数转换并用液晶显示器SMC1604A。对输出结果进行显示。这个过程需要完成硬件、软件系统设计,并使最终的数字功率表具备以下的功能:电压、电流值同步显示电压测量范围0-300V,电流测量范围0-5A在液晶显示器上显示电压、电流、功率因数、功率2.3系统框图在基于单片机的单相数字电功率表的设计中,如果要对元件的功率进行测量,首先要明白功率的意义,从式中可知,要测量功率就要求电压有效值、电流有效值和功率因数,故在本次设计中分别对其做了处理,由此可以划分为下面几大模块:电压电流采集模块、相位角测量模块、键盘模块、液晶显示模块,在第三章我将对其做详细的介绍。整个系统的结构图如图2-2所示。图2-2系统结构图2.4设计方案及技术分析2.4.1电压电流采集模块方案一:电阻分压采样通过将电阻串联或电阻并联放到待测电路中,电流流过电阻,从而采集到电压电流的值。方案二:电压电流互感器互感器是一种仪用变压器,它是把电压、电流按一定的比列进行变换的一种测量设备。其主要的功能是将一些大电压、大电流缩小一定的比例并将其变换成一种标准的低电压(100V)、低电流(5A或1A,均指额定值),因此使得一些测量仪表、保护设备和自动控制设备可以实现标准化、小型化。同时互感器能够隔开高压电力系统,从而人身和设备的平安得到保证。方案一主要适用于小电压小电流信号的采样,优点在于接线简单,易于实现,但由于电阻的接入使得原来的网络功率损耗增大,并对原信号产生一定的干扰,这样采样误差变大。方案二适用于一些大电压、大电流的采样,功率损耗低,能很好的实现电气隔离,采样过程对原信号无影响。电流互感器对于200V左右的交流信号采样明显胜于电阻分压采样,应选择方案二。2.4.2信号处理模块首先电压电流互感器二次测电压比拟小,且A/D转换器只接收0-5V直流电压信号进行处理,故需要对采样到的小交流信号进行放大、整流,整流出来的电压电流信号通常含比拟大的纹波,所以需要电容和电阻来设计平波电路。综上,信号处理模块需要设计整流电路和平波电路。2.4.3模数转换模块本设计中A/D转换器采用11通道10位TLC1543串行模数转换器。与传统的模数转换器相比,TLC1543具有输入通道多、转换精度高、传输速度快、价格低、使用灵活和易于与单片机接口等特点,是一款高性价比的模数转换器。其片内设有自动保持电路。故采用TLC1543比拟适合。2.4.4相位角测量模块功率因数是指正弦信号的电压超前于电流的相角的余弦值。方案一:采用过零比拟的方法来求相位角某一正弦信号周期性的出现过零点,通过测出过零点的时间就能得出该信号的相角。方案二:通过傅式滤波的方法来求相位角该方法完全考虑系统不对称性所造成的谐波对测量精度的影响,但只适用于无限长的信号。综上,本设计采用方案一。第3章系统硬件分析3.1电路测试系统的分析单片机电路测试系统主要由AT89C52、24C16数据存储器、键盘电路以及前向测试通道〔电压电流采样电路〕和液晶显示电路构成。它主要完成的任务是:系统从前向通道采集得到的数据进行处理后,通过内部总线送给片外的24C16数据存储器进行储存,并将处理过的数据通过液晶显示器显示出来。3.1.1单片机最小系统简介本系统采用AT89C52单片机,它是一种低功耗、高性能的芯片。其片内内置通用的8位中央处理器〔CPU〕和Flash存储单元,功能比拟强大,适用于各种复杂的控制应用场合。51单片机最小系统复位电路的极性电容C1的大小直接影响到单片机的复位时间,一般情况下采用10-30uF,C1越大需要的复位时间越短,故本设计中采用10uF;晶振Y1即可采用6MHz也可采用11.0592MHz,一般在正常运行的情况下都选那么较大频率的晶振,因为单片机CPU的处理速度直接受到晶振振荡频率的影响,频率越大的晶振处理的速度就越快,故本设计中采用11.0592MHz;晶振电路中的起振电容C2、C3一般采用15-33pF,且起振电容越接近晶振越好,而晶振的位置离单片机的距离越近越好,一般C2、C3取相同值30PF。单片机的最小系统图如图3-1所示。图3-1单片机的最小系统3.1.2数据存储器24C16一、24C16说明在本设计中,数字功率表的系统很小,所要存储的数据比拟小,所以我选用了串行E2PPOM24C16片外存储器。原因在于系统掉电后它所存储的数据并不消失,并且与单片机连接的管脚也比拟少,一定的程度上可以节约系统的硬件资源。当然它也有一定的缺乏,就是在软件编程时比拟麻烦。24C16是一个16K位串行CMOSE2PROM,内部含有2048个8位字节,CATALYST公司具有先进的CMOS技术,其实质上是器件的功耗得到了减少。24C16具有一个16字节页的写缓冲器,该缓冲器是通过I2C总线的接口来完成操作的,另外还具有一个特定功能的写保护引脚。24C16引脚图如图3-2、引脚功能如下表3-1所示:图3-224C16引脚图表3-124C16引脚功能管脚名称功能A0、A1、A2器件地址选择SDA串行数据/地址SCL串行时钟WP写保护Vcc+1.8V到6.0V工作电压Vss地二、24C16的功能描述24C16支持I2C总线数据的很多传送协议,I2C总线规定,任意一个把数据传送到I2C总线的器件叫做发送器。任意一个从I2C总线接收数据的器件叫做接收器。数据的传送是由产生的串行时钟信号以及所有起始信号、停止信号的主器件来控制的。任意一个主器件或者从器件都能称为发送器或者接收器,但传送数据〔发送或接收〕的模式是由主器件来控制。三、24C16的时序描述1.24C16的起始信号:时钟线为高电平期间,数据线电平从高到低的跳变作为24C16的起始信号。2.24C16的停止信号:时钟线为高电平期间,数据线电平从低到高的跳变作为24C16的停止信号。3、24C16的起始、停止时序如下列图3-3所示:图3-3起始、停止时序图四、24C16的寻址过程描述主器件发送一个起始信号来启动发送过程,然后再发送它所需要寻址的控制命令字〔从器件的地址〕,该控制命令字的高4位固定为1010,A2、A1、A0作为器件的地址位,用来定义哪个器件以及器件的哪一个局部被主器件访问,而读写控制位是由该控制字的最低位来控制的。“1〞表示对控制字进行读的操作,“0〞表示对控制字进行写的操作。接下来主器件的发送首先要访问从器件的地址,在起始信号被主器件发送和地址字节被从器件发送后,当24C16监视总线的地址和从器件发送的地址一致时,24C16会产生一个响应的应答的信号〔通过SDA线〕。24C16再依据读写的控制位〔R/W〕的状态进行读或写操作。24C16在系统电路中的接法如3-4图所示。图3-424C16在系统电路中接法3.2系统的前向通道每个系统都有自己的输入信号,不然整个系统都是失败的,所以在本次设计的单片机控制系统中,必须有被测电信号的输入通道,即前向通道,以此来采集必要的输入信息。下面是讲述本次系统前向通道的构成及接口。电压、电流采样的前置电路由于本系统测量电压的有效值范围是0V到300V,电流有效值的范围是0A到5A,而模数转换器采样电压仅仅为0到5V的直流电压,所以在硬件上需要设计电压和电流的前置通道完成强电到弱电的转换。即外部电压或电流先经过互感电路变换、整流电路整流、分压电路分压最后才可以被模数转换器采样。一、电压采样将0-300V的交流电压转换成较小的电压,此时采用TVA1421-01型电压互感器来实现。该器件的原理是电流型电压互感器,即二次测输出的电流与输入的电压成正比,所以二次测不能开路,使用时在二次测接入采样电阻,采样电阻取500欧姆时,由于输出电流等于输入电流,所以采样电阻两端的电压即为0-1V。电压采样电路如图3-5所示。图3-5电压采样电路图二、电流采样由于流过用电设备的交流电流通常比拟大,所以应该把它按比列的衰减成一个平安的同特性、不失真的交流小信号。采样电流为5A的交流电,所以选择TVA1421-01型电流互感器来实现。TVA1421-01型电流互感器中间有一个通孔,应用时可将待测电线穿过此孔,它输出的小信号电流也是与输入的电流成线性比例的,使用时在二次端串接电阻,即可采样到电压。TVA1421-02型作为电流互感器时,额定电压为9A时,输出额定电流为6mA,故额定输入电流5A时,那么额定输出电流为3.33mA,此时采样电阻选用300欧姆,二次测输出电压为0-1V。下面为电流采样电路图3-6。图3-6电流采样电路三、信号处理分析该模块主要是将电压电流采样模块采样到的交流电压信号进行整流和平波处理,使其能被A/D转换模块可接收的0-5V直流电压信号。下面是电压采集信号处理电路〔图3-7〕和电流采集信号处理电路〔图3-8〕。图3-7电压采集信号处理电路由电压采样可知,互感器变换后电压UD为0-1V,经运算放大器放大5倍,在经过整流、滤波、分压后,可得到0-5V的交流电压。图3-8电流信号处理电路由电流采样电路可知,经互感器变换后电流为3.33mA,电压1V,调节反应电阻W5将电压放大5倍,在经过整流、滤波、分压后,可得到0-5V的交流电压。由于交流电压或交流电流信号经互感器变换后电压值比拟小,所以应先将电压电流值放大再经过二极管整流电路进行整流,得到0-10V范围内的直流电压,因为模数转换器只接收0-5V的直流电压,所以要通过电阻进行分压。在处理信号时,要保护测量设备,所以在信号送入TLC1543之前并联一个稳压二极管以对直流电压信号进行稳压,确保输出电压在0-5V以内的范围,经过上面一系列的处理得出的电压值才能与电路的真实值相等。电压〔或者电流〕量程的自动转换那么通过软件来实现,关于量程转换将在第四章软件设计中具体介绍,在此就不再表达。3.2.2相位角测量的前置电路利用过零点来测量电压、电流的相位差。对于某一正弦信号,都会出现周期性的出现过零点,我们只要测出过零点的时间就可以得出电压、电流的相位差。该电路主要由限幅电路、过零检测器和光电耦合器组成。在前面一节中,对于电压与电流的采集,我们是通过互感器来获得的,在本节中我还是采用互感器来获得电压电流的真实值。当电路电压或电流通过互感器变换后的采样电压或电流值大于0时,那么1点〔7点〕的电位小于零,发光二极管导通,使光电耦合器作用导致P3.2输出低电平。当电压〔电流〕的负半轴经过零点时,1点〔7点〕的电位大于零且近似为5V,这个时候发光二极管不导通,使得光电耦合器不作用P3.3输出为高电平。由于本系统所测量的电路频率主要为50HZ的交流电,在系统中电压接入INT0〔单片机的P3.2管脚〕,电流接入INT1〔单片机的P3.3管脚〕,这样根据电压和电流过零的时间差,再通过软件编程我们可以计算出电压和电流之间相差的相位角,从而满足了设计要求。由此可看出在这个电路中光电耦合器有两种作用:电气隔离和电平转换。图3-9相位角测量电路3.2.3模数转换电路信号处理后出来的是模拟量,而单片机接收的信号只是数字量,所以A/D转换电路是功率测量中必不可少的一局部。本次设计选用的A/D转换芯片作为处理器,在此选择有11路模拟量输入的TLC1543转换器,因为TLC1543不仅转换时间很快、采样的精度高而且使用单片机I/O接口少,完全可以满足系统的测量要求。为了TLC1543转换器能可靠的运行,需要对其各个控制端进行学习。一、TLC1543简介〔1〕TLC1543是20脚封装的CMOS芯片,也是10位开关电容按逐次逼近的方法进行模/数转换的转换器。TLC1543引脚图如图3-10所示。〔2〕输入端有三个和三态输出端有一个:片选〔CS〕、输入/输出时钟〔I/OCLOCK〕、地址输入端〔ADDRESS〕以及数据输出端〔DATAOUT〕。具有一个四线接口,可以直接与主处理器或其他的外围串行口进行高速数据传输。〔3〕片内部含有一个14路多路的选择器,可供选择的有:在11个输入中的可以选择1个,在内部含有3个带有自测试的电压可以选择一个。〔4〕片内还设有自动采样的保持电路。在转换结束时,EOC输出端变高以指示转换的完成。〔5〕系统的时钟应在片内产生并且与I/OCLOCK同步。〔6〕片内设有转换器,使该器件具有以下特点:高速〔单次转换的时间10us〕、高精度〔10位的分辨率、最大+LSB线性的误差〕和低噪声。图3-10TLC1543引脚图二、工作过程TLC1543工作时序如图3-11所示,其工作过程分为两个周期:访问周期和采样周期。图3-11TLC1543时序图时序使用方法:〔1〕片选CS高电平,EOC高电平,CLK时钟低电平;〔2〕片选CS低电平,开始读出第一位数据;〔3〕在第一个时钟上升沿,输入一个地址数据;〔4〕之后在每个时钟的下降沿输出AD转换数据,在上升沿输入地址数据;〔5〕TLC1543是10位转换器,因此有10个时钟;〔6〕一个操作过程结束后,片选CS高电平,EOC会在最后第10个时钟的下降沿触发低电平,开始AD转换,此时,输出被禁止,等到转换结束后EOC置位1,代表转换结束。等到CS片选再次低电平,开始第二次操作。三、硬件设计TLC1543的基准由外电路提供,在本设计中由于对采样的精度要求较高,所以在编程的时候软件要将TLC1543设置成单极性输出,MSB做前导输出并且输出的数据长度为10位。TLC1543可直接与单片机连接,SDO、ADDR、CS、CLK、EOC分别接到单片机P2.0-P2.4口上。TLC1543硬件电路图为3-12所示,TLC1543的输入存放器格式如表3-2所示,根据硬件原理图和表格3-2可以确定出各个量程的的通道地址以及TLC1543的控制格式如表3-3所示。图3-12TLC1543的硬件电路图表3-2TLC1543的输入存放器格式功能选择输入数据字节备注地址位L1L0LSBFBIPD7=MSBD0=LSBD7D6D5D4D3D2D1D0AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7AIN8AIN9AIN1000000000111000011110000011001100101010101010选择输入通道REF+与REF—差模1011内部测试REF—单端1100REF+单端1101软件断电1110MSB先出LSB先出01顺序输出单极性双极性01极性表3-3各个量程通道对应地址和控制格式通道与之对应的TLC1543的通道通道地址以及控制格式采样电压通道IN000H采样电流通道IN110H3.3键盘电路键盘分独立键盘和矩阵键盘,但它们都是由一组按压式或触模式开关构成的阵列。键盘的各个功能依据具体的设计来定。在本次设计系统中,系统的功能键比拟少,一共就4个按键,所以在硬件设计的时候选择独立式的按键。由于51单片机P0口作为接口使用时需要接10千欧的电阻,所以每个按键各接一个电阻和一根输入线,各个按键之间互不影响。因此通过检测输入线的电平状态便可以很容易的判断哪个按键工作了。本设计中,我将这五个按键分别定义为控制测试系统的显示电压、显示电流、显示功率因数、显示功率、复位。本次设计的键盘电路如图3-13所示。图3-13键盘电路3.4液晶显示电路本设计中,在显示器的选择上我选择字符型的可编程的字符液晶显示控制器,其型号是SMC1604A,因为它不仅有其专用的指令集,易于编程,而且用它最多可以用来显示四行字符,与我设计的功率表功能相符合。下面我将对其进行简单的介绍。SMC1604A是标准字符型的液晶显示器,其利用点阵型的液晶显示器(LCD),可以显示16个字符*4行的西文字符,字符尺寸为2.95*4.75(WXH)mm,内置HD44780接口,可与单片机的接口直接相连,应用于各类仪器仪表及电子设备。SMC1604A标准的字符型的液晶显示器示意图如图3-14所示,SMC1604A引脚图如图3-15所示,引脚接口功能如表3-4所示。图3-14标准字符型液晶显示器示意图图3-15SMC1604A引脚图表3-4引脚说明符号引脚说明符号引脚说明VSS电源地D2DataI/OVDD电源正极D3DataI/OV0LCD偏压输入D4DataI/ORS数据/命令选择端〔H/L〕D5DataI/OR/W读写控制信号〔H/L〕D6DataI/OE使能信号D7DataI/OD0DataI/OBLADataI/OD1DataI/OBLK背光源负极液晶显示器电路如图3-16所示。D0-D7与P2口相接,E、RW、RS分别与P3.7、P3.6、P3.5相接。图3-16液晶显示器电路图第4章系统软件设计第四章对系统的硬件作了较为简单的分析,软件与硬件是相辅相成的即硬件的运作离不开软件的支持,所以这一章详细介绍了系统软件设计的过程。这是本次毕业设计的重点内容。本章主要针对数字功率表的测量详细的介绍了软件实现的过程。在本章中我对一些子程序像双字节无符号数的乘除法、二进制数到十进制数的转换、数据的排序取平均值、线性插值等之类子程序并没有做详细的介绍,因为此类的子程序我们能在参考书上很容易找到现成的模块,这些都是前人的经验结晶,在这个系统中我是直接对它们进行调试后引用的。最后还对本次软件开发工具,即软件开发工具仿真器Proteus作了一定的介绍。4.1Keil编程软件介绍KeilC51是美国KeilSoftware公司生产的一种51系列兼容单片机C语言软件开发系统,也可以使用汇编进行编写,两者相比拟,C语言功能更加强大。Keil界面图如图4-1所示。图4-1Keil界面图4.2程序设计在总的设计思想和硬件设计确定之后,我就可以开始软件设计,根据前面介绍的工作原理和技术指标,软件设计应完成的主要任务有以下几个模块。4.2.1系统的主程序设计主程序是整个数字功率表系统控制程序的主要框架,它是一个顺序执行的无限循环的程序,运行过程必须构成一个循环,这样才能不断的运行程序。主程序应不断地顺序查询,并根据其功能调用相关的子程序并执行其命令,以完成对各种实时控制事件的处理。本系统中,主程序的主要功能是测量和调用键盘扫描子程序,当系统测量完成后我们调用键盘扫描子程序,根据扫描子程序得到所按的键的键值,按键值跳转到相应的功能键子程序实现各种功能,并在返回主程序后调用显示子程序在显示器输出相应数据。主程序流程图如图4-2所示。图4-2主程序流程图4.2.2初始化子程序的设计初始化程序主要用来确定程序的初始堆栈,程序状态字,对相应的存储单元进行清零,设定定时器工作方式等等,初始化程序的具体步骤如下:1)由于单片机在复位后堆栈为07H,所以在系统开始后应该重新设置堆栈;2)清24C16写保护,读取标志存放器的内容,比拟标志存放器中的内容是否等于0AAH,如果相等那么保持系统上次运行的状态,否那么去除以前状态;3)设置定时器工作方式和波特率。在这个系统中由于我们在测量电压和电流之间相位差的时候需要用到定时器T1和记录一个信号周期内A/D采样的次数N需要计数器T0,所以在初始化时,假设定时器T1的工作方式2,T0的工作方式1。波特率的设置是非常必要的,在这个系统中,我们选用T0工作于方式1作为波特率发生器,设T1的计数器初值为X,依据公式:波特率=〔其中为系统的振荡频率为11.0592MHz〕由于在本系统中下我们选择的波特率为9600,所以由上式计算得X=0xFDH。根据上面所述我们设定T1工作于定时方式2,T0计数方式1,串口工作于方式1。初始化液晶显示器,液晶显示器再次上电后必须重新进行初始化才能显示字符。整个系统的初始化子程序流程图如图4-3所示。图4-3初始化流程图4.2.3测量子程序测量程序是整个系统的主要程序,是整个循环程序的主体内容。在此我们主要完成的任务有电压和电流之间相位差的测量、功率因数的计算,电压有效值的测量、电流有效值的测量以及功率的计算,整个测量子程序的流程图如图4-4所示:图4-4测量子程序流程图其中测量子程序中又包含如下子程序:一、功率因数的测量子程序首先要完成电压与电流之间时间差的测量,由上一章可知,单片机的定时器TO工作于计数方式1,定时器T1工作于定时方式2。电路实测输出的波形如图4-5所示。当INT0由0变成1时,电压波形产生正跳变,翻开定时器T0,开始计数;当INT1由0变成1时,电流波形产生正跳变,此时关闭定时器T0。当INT1再次由0变成1,即电压波形产生正跳变时,再次翻开定时器T0,这是个循环的过程。这样,根据定时器T0中所保存的数值,通过公式〔4-1〕注:T指交流电路周期〔f=50HZ〕,指电压和电流之间的相位差。可求出相位角的大小:,〔4-2〕即,〔4-3〕其中T为电路的周期,可以得到其中,〔4-4〕。将公式4-4带入公式4-3,所以便可以计算出相位角。然后再通过查表便可以求出功率因数。图4-5实测输出电压电流波形图对功率因数的测量子程序流程图如4-6所示:图4-6功率因数测量子程序二、电压、电流有效值的测量在测量电压、电流有效值的过程中,假设输入电压、电流与输出电压、电流成线性关系。0-300V输入电压对应0-5V的输出电压,0-5A的输入电流对应0-5V的电压。本系统电压电流信号周期f=50HZ、T=20ms,A/D转换的时间为10us,设信号在一个周期内采样的次数为N,在对输入信号进行采样的同时,进行计算电压电流有效值。公式如下:电压有效值:〔4-5〕电流有效值:〔4-6〕注:k为采样序列顺序号,u(k)为k时刻电压瞬时值,i(k)为k时刻电流瞬时值。通过上面的公式我可以求出任意时刻的电压电流有效值,电压有效值测量子程序流程图如图4-7所示,电流有效值测量子程序流程图如图4-8所示。图4-7电压有效值测量图4-8电流有效值测量三、功率的测量在本设计中,功率并不是直接测出来的,而是通过软件间接的算出来的。首先,先通过测量得到电压有效值U、电流有效值I,然后根据公式便可计算出功率的数值,然后再送入GLSZ单元。功率测试流程图如图4-9所示。图4-9功率测试流程图4.2.4液晶显示子程序本设计中使用SMC1604A液晶显示器,其根本的操作时序如表4-1所示,状态字说明如表4-2、4-3所示。表4-1根本操作时序命令输入输出读状态RS=L,RW=H,E=HD0-D7=状态字写指令RS=L,RW=H,D0-D7=指令码,E=高脉冲无读数据RS=H,RW=H,E=HD0-D7=数据写数据RS=H,RW=L,D0-D7=数据,E=高脉冲无表4-2状态字说明STA7STA6STA5STA47STA3STA2STA1STA0D7D6D5D4D3D2D1D0表4-3状态字说明STA0-6当前数据地址指针的数值STA7读写操作使能1禁止0允许注:对控制器每次进行读写操作之前,都必须进行读写检测,确保STA7为0。SMC1604A显示处理流程图如图4-10所示。本系统中LCD显示子程序包括两个局部,即液晶初始化子程序和液晶显示字符子程序。LCD显示如果不经过初始化即使将显示数据送到LCD数据存储器上LCD也不能显示数据,所以我们编制程序的时候系统初始化的时候最重要的一个环节就包括了液晶的初始化。LCD初始化包括LCD工作方式的设定、输入方式设定、清屏等。其初始化流程图如图4-11所示。LCD显示子程序的LCD显示字符子程序,其功能就是将要显示的数据送到LCD显示器的显示RAM中,在这个过程中最关键的事就是要确定显示RAM的地址,在本次设计中,LCD显示器RAM地址如表4-4所示,显示子程序具体流程图如图4-12所示。表4-4RAM地址行数地址第一行000102030405060708090A0B0C0D0E0F///第二行404142434445464748494A4B4C4D4E4F///第三行101112131415161718191A1B1C1D1E1F20..27第四行505152535455565758595A5B5C5D5E5F60..67图4-10LCD显示流程图图4-11初始化流程图图4-12显示子程序具体流程图4.2.5键盘扫描子程序本次设计中我选用独立键盘,共4个按键,可以通过检测输入线的电平状态便可以判断哪个按键被按下了。键盘使用P0口,由于51单片机P0具有漏电保护的作用,所以在使用的时候要参加上拉电阻。在本设计中,键盘扫描主要是扫描P0.4、P0.5、P0.6、P0.7这四个按键。软件流程图如图4-13所示。图4-13键盘扫描流程图第5章系统调试过程本次设计考虑到各方面原因,没有做实物,所以硬件调试在本设计中将不在讲述。下面我将从软件调试方面进行局部分析。第四章讲述了编写程序的软件KEIL,在此介绍仿真软件〔Proteus〕的应用。5.1Proteus软件应用ProteusISIS是英国Labcenter公司开发的一种可以对电路进行分析、对实物进行仿真的软件。该软件是一款单片机和电路仿真〔SPICE〕相结合的仿真软件,其功能强大,具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真等,这些是其他任何一款软件不能相比的。在本次设计中我选择对课题进行局部仿真,应选用Proteus仿真软件。Proteus工作界面如图5-1所示。图5-1Proteus工作界面5.2电压、电流采集模块调试在第3.2节中,我详细的介绍了电压电流采集模块所用到的各种元器件作用及在电路中的作用,故在本节中不在做详细的分析。0-300V正弦电压信号经过电压互感器变为0-1V,在经过信号处理电路可以得出0-5V左右电压信号,电压采集到最小值如图5-2所示,电压采集到最大值如图5-3所示。0-5A正弦电流信号经电流互感器变为0-1V,在经过电流信号处理电路后可得出0-5V左右电压信号,电流采集到最小值如图5-4所示,电流采集到最大值如图5-5所示。图5-2电压采集到最小值图5-3电压采集到最大值图5-4电流采集到最小值图5-4电流采集到最大值5.3相位角测量模块调试相位角测量电路在整个设计中是属于比拟根底的局部,在3.2.2节中,对本设计中相位角的测量电路进行详细的介绍与说明,在4.2.3节中,从软件方面讲解了功率因数的计算:同频率的两个正弦信号,电压与电流,采用过零比拟法通过测量两个正弦信号经过零点的时间T1和T2,计算两者之间的时间差ΔT=T2-T1,从而。本章从电路方面做一些仿真,如下列图5-5、5-6所示,对电压、电流分别在US1、UD、P3.2、IP1、ID、P3.3六处做采集波形图。图5-5电压相位采集波形图5-6电流相位采集波形5.4液晶显示模块调试LCD液晶显示器在3.4节和4.2.4节分别从电路和软件两方面作出详细的解释与说明,在本章中我将对其进行简单的模拟仿真。SMC1604A的仿真图如图5-7所示。图5-7SMC1604A仿真图5.5系统调试由于仿真软件具有局限性,不能实现整个系统的仿真,所以仿真时只能以单个模块进行仿真,在本第五章中,我只对局部模块进行仿真〔前面的章节已经作出详细的解说〕。在本章节中,本系统仿真电路图如图5-8所示。图5-8系统仿真电路图第6章总结将近一学期的努力,本次毕业设计也走到了终点,在张老师的指导下,我顺利地完成了基于单片机的单相数字电功率表的设计,将系统的软件与系统的硬件电路相结合后我们便得到了一个完整的数字功率表,这就是我们此次毕业设计的成果。本次毕业设计中,我主要从上面五章对其做了详细的解释与说明,设计的主要任务是:〔1〕完成电压信号采集、电流信号采集;完成相位角的测量;计算功率,并显示在液晶显示器上。通过设计毕业设计的任务书、查阅各种文献、向老师咨询等方式,在自己不断的尝试与验证下,我最终成功的完成了本次毕业设计。下面我将对前面五个章节进行总结。:概述,主要通过了解功率表在当代人们生活中的一种现状,分析其对人类的影响与优缺点,从而总结出功率表在人们生活中是不可或缺的,另外在这个电力时代,我们所用到的电最后都是通过功率表来计算的,例如:一个家挺每天、每月消耗多少电能,一间工厂一天消耗多少电能等,这些都是以功率的形式来表达的。故功率表在生活中是必不可少的。:系统方案设计,首先讲了设计的根本思想,通过查阅各种资料,再比照几种方案,最终确定各个模块具体的设计方案。本章是整个毕业设计的根本理论思想,也是设计的大体方向,对下面几个章节的介绍具有深远的理想。:系统硬件电路的设计与分析,本章节是设计的重中之重。在本次设计中,可将其分为以下几个模块:电压与电流采集电路模块、相位角测量电路模块、AD转换电路模块、液晶显示电路模块、键盘电路模块。本章分别对其进行详细的设计与说明,在每一小节中都有电路图的展示和电路中元器件的选择说明,最后还有毕业设计系统中电路的根本原理图,另外,电路的正确性决定了硬件电路的正确性。:系统软件设计,依据第三章的电路原理图,分别对每个模块进行软件设计,主要利用到KEIL软件进行编程,利用VISIO绘制模块流程图,本章节是重点分析系统的软件设计,包括一些数据的计算等,本章节在整个系统中的设计也是无法替换的。:系统仿真设计,在本次设计中我没有做实物电路,所以在本章节中我只做了局部软件仿真调试。主要利用的是Proteus仿真软件,我在本章节中也有简单的介绍。我主要介绍了电压与电流采集仿真、相位角测量仿真以及液晶显示仿真,在本章节中也有图片添加,可以清楚的看到本设计的成果。在本次设计中,我遇到了很多困难,如电路设计原理、如何选择各种元器件、如何应用软件编程、如何应用软件进行仿真等,在种种的困难下、在老师的帮助下,我终于完成了我的毕业设计,虽然还有很多方面的缺乏,但我知道我努力了,我也从本次毕业设计中学到了好多东西,把以前忘掉了都重新拾起,更是把大学几年来学到的东西得到很好的融合。参考文献[1]杨居义,单片机案例教程.北京清华大学出版社,2023年[2]韩广兴,电子元器件与实用电路根底.北京电子工业出版社,2023年3月[3]赵广元,Proteus辅助的单片机原理实践-根底设计、课程设计和毕业设计.北京航空航天大学出版社,2023年9月[4]杜树春,基于Proteus的模拟电路分析与仿真.北京电子工业出版社,2023年8月[5]周国雄,单片机应用系统精讲.北京中国铁道出版社,2023年3月[6]蒋晓燕,张建生等.数字信号处理与应用[M].东南大学出版社,2023[7]李广弟,单片机根底.北京航空航天大学出版社,2007年5月[8]海涛,刘波,骆武宁等.基于单片机的单相软开关稳压器[C].计算技术与自动化,2006[9]谢维成、杨加国,单片机原理与应用及C51程序设计实例.电子工业出版社,2006年3月[10]胡斌,图表细说元器件及实用电路.北京电子工业出版社,2005年9月[11]边春远,MCS-51单片机应用开发实用子程序[M].北京人民邮电出版社,2005年9月[12]姜志海、黄玉清,单片机原理及应用[M].北京电子工业出版社,2005年7月[13]魏立峰,单片机原理及应用技术.北京大学出版社,2005年[14]胡健,单片机原理及接口技术.北京机械工业出版社,2004年10月[15]周明德,微型计算机系统原理及应用(第四版).清华大学出版社,2004[16]郭培源,电子电路及电子器件.高等教育出版社,2003年[17]秦友淑、曹化工,C语言程序设计教程〔第二版〕.华中科技大学出版社,2002[18]江思敏、姚鹏翼,胡荣,Protel电路设计教程.清华大学出版社,2002[19]汪建,电路理论根底〔上、下册〕,华中科技大学出版社,2002[20]童诗白、华成英,模拟电子技术根底〔局部〕〔第三版〕.高等教育出版社,2001致谢在这次毕业设计即将结束之际,首先要感谢我们的指导老师张老师,能够为我提供了一个这样难得的锻炼时机,并且能够在百忙之中抽出时间来指导我,为我解答疑难问题,并且不厌其烦的为我讲解实践过程中遇到的问题。此外在这次的毕业设计中,我几乎把所有的知识都复习了一遍,我觉着自己还需要更加努力。这次毕业设计不仅仅是对我大学四年来知识的考查,更是对自己的动手能力,协调能力的一次很好的训练。最后,还要感谢老师的支持和帮助。附录A:原理图附录B:仿真图附录C:局部程序1、初始化程序ORG0000HSTART:MOVSP,#60HCLRSWP;清24C16写保护MOVDPTR,#BZJCQMOVDZJCQH,DPHMOVDZJCQL,DPLCALLEEPRDCJNEA,#0AAH,FW1MOVTMOD,#21H;T1定时方式2,T0计数方式1MOVTH1,#0FDH;波特率9600MOVTL1,#0FDHMOVSCON,#50H;串行口方式1MOVPCON,#00HSETBTR1CLRRSCLRR_WCLRECALLCSHEDA;初始化液晶CALLDISPLAY;显示初始画面2、测量电压子程序CYDY0:MOVTDJCQ,#20HCYDY1:CALLCY1CLRCMOVR4,AMOVR5,BMOVA,R4SUBBA,#0CHJNCCYDY2JZAAAJNZMMMMAAA:MOVA,R5SUBBA,#0A1HJNCCYDY2MMMM:MOVDPTR,#TABDY0MOVJSQ3,#9CALLCHETARETCYDY2:MOVTDJCQ,#30HCALLCY1MOVR4,AMOVR5,BMOVDPTR,#TABDY1MOVJSQ3,#22CALLCHETARET3、测量电流子程序CYDL0:MOVTDJCQ,#00HCYDL1:CALLCY1CLRCMOVR4,AMOVR5,BMOVA,R4SUBBA,#0CHJNCCYDL2JZLLLJNZMMMLLL:MOVA,R5SUBBA,#0D6HJNCCYDL2MMM:MOVDPTR,#TABDL0MOVJSQ3,#6CALLCHETARETCYDL2:MOVTDJCQ,#30HCALLCY1MOVR4,AMOVR5,BMOVDPTR,#TABDL1MOVJSQ3,#7CALLCHETARET4、采样子程序CY1:PUSHPSWSETBPSW.3MOVR7,#10;采样10次MOVR1,#SHJJCQCY2:MOVA,TDJCQCALLCY2543MOV@R1,BINCR1MOV@R1,AINCR1DJNZR7,CY2CALLPXU;将采样的数从大到小排序CALLQPJZ;取平均值MOVA,R4MOVB,R5POPPSWRET5、功率因数测量子程序如下:LOOP10:MOVTL0,#0;测相位差MOVTH0,#0JNBP3.2,$JBP3.2,$SETBTR0CCC:MOVDPTR,#TABCOS;功率因数MOVCA,@A+DPTRMOVR0,#GLYSSZMOV@R0,A6、测量功率的子程序如下:MOVDLSZ,AMOVA,R7MOVDLSZ+1,AMOVR2,#00HMOVA,GLYSSZMOVR3,ACALLNDIV1;(R2R3R4R5)/R6R7=R4R5MOVA,R4MOVGLSZ,AMOVA,R5MOVGLSZ+1,ALCD1604A程序:RSPINBITP3.5;RS对应单片机引脚RWPINBITP3.6;RW对应单片机引脚EPINBITP3.7;E对应单片机引脚;//以下CXPOS,CYPOS变量用于指示当前操作字符的位置的预定义;CXPOSEQU20H;列方向地址指针(用于CHARLCDPOS子程序);CYPOSEQU21H;行方向地址指针(用于CHARLCDPOS子程序);ORG0000HJMPSTARTSTART:MOVSP,#60HMAIN:CALLEXSAMPLE;调用演示程序JMPMAINSTR1:DB"U:",0STR2:DB"I:",0STR3:DB"P:",0STR4:DB"COS:",0EXSAMPLE:;演示程序;//0.演示前的准备,LCD液晶显示控制器初始化,所有显示全清零CALLLCDRESET;液晶显示控制器初始化MOVA,#''CALLCHARFILL;显示清屏;//1.字符串演示:在(4,0)字符位置显示"U:"MOVCXPOS,#4;设置当前显示位置为第5列MOVCYPOS,#0;设置当前显示位置为第1行MOVDPTR,#STR1CALLPUTSTR;显示字符串CALLEXDELAY;延时约300mSCALLEXDELAY;延时约300mS;//2.字符串演示:在(2,1)字符位置显示"I:"MOVCXPOS,#2;设置当前显示位置为第3列MOVCYPOS,#1;设置当前显示位置为第2行MOVDPTR,#STR2CALLPUTSTR;显示字符串CALLEXDELAY;延时约300mSCALLEXDELAY;延时约300mS;//3.字符串演示:在(0,2)字符位置显示"P:"MOVCXPOS,#0;设置当前显示位置为第1列MOVCYPOS,#2;设置当前显示位置为第3行MOVDPTR,#STR3CALLPUTSTR;显示字符串CALLEXDELAY;延时约300mSCALLEXDELAY;延时约300mS;//4.字符串演示:在(0,3)字符位置显示"COS:"MOVCXPOS,#0;设置当前显示位置为第1列MOVCYPOS,#3;设置当前显示位置为第4行MOVDPTR,#STR4CALLPUTSTR;显示字符串CALLEXDELAY;延时约300mSCALLEXDELAY;延时约300mS;EXDELAY:;演示延时子程序MOVR2,#30;延时约300mSEDY_PA:MOVR1,#100EDY_PB:MOVR0,#49DJNZR0,$DJNZR1,EDY_PBDJNZR2,EDY_PARET;//子程序名称:CHARFILL(A).;CHARFILL:;整屏显示A代表的ASCII字符子程序MOVCXPOS,#0;第1列字符位置MOVCYPOS,#0;第1行字符位置LFL_PA:CALLPUTCHAR;定位写字符CALLCHARCURSORNEXT;置字符位置为下一个有效位置MOVR0,CXPOSCJNER0,#0,LFL_PA;字符位置没有回到第1列字符位置,那么重复写字符MOVR0,CYPOSCJNER0,#0,LFL_PA;字符位置没有回到第1行字符位置,那么重复写字符RET//子程序名称:PUTSTR(DPTR).;PUTSTR:;定位写字符串子程序CLRAMOVCA,@A+DPTRJZPSR_LAX;为零表示字符串结束,退出CALLPUTCHAR;写1个字符CALLCHARCURSORNEXT;字符位置移到下一个INCDPTR;字符串指针移到下一个JMPPUTSTR;重新读字符串PSR_LAX:RET//子程序名称:PUTCHAR(A).;PUTCHAR:;在(CXPOS,CYPOS)字符位置写字符子程序CALLCHARLCDPOS;设置(CXPOS,CYPOS)字符位置的DDRAM地址CALLLCDWD;写字符RET//子程序名称:GETCHAR(A).GETCHAR:;在(CXPOS,CYPOS)字符位置读字符子程序CALLCHARLCDPOS;设置(CXPOS,CYPOS)字符位置的DDRAM地址CALLLCDRD;读字符RET;//子程序名称:CHARLCDPOS().;CHARLCDPOS:;设置(CXPOS,CYPOS)字符位置的DDRAM地址PUSHACCANLCXPOS,#0FH;X位置范围(0到15)ANLCYPOS,#03H;Y位置范围(0到3)MOVA,CYPOS;(CXPOS,CYPOS)对应DDRAM地址CJNEA,#00,LPS_LA1;(第一行)X:第015个字符MOVA,CXPOS;DDRAM:00FHJMPLPS_LAXLPS_LA1:CJNEA,#01,LPS_LA2MOVA,CXPOS;(第二行)X:第015个字符ADDA,#40H;DDRAM:404FHJMPLPS_LAXLPS_LA2:CJNEA,#02,LPS_LAYMOVA,CXPOS;(第三行)X:第015个字符ADDA,#10HDDRAM:101FHJMPLPS_LAXLPS_LAY:MOVA,CXPOS;(第四行)X:第015个字符ADDA,#50H;DDRAM:505FHLPS_LAX:ORLA,#80H;设置DDRAM地址CALLLCD

温馨提示

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

评论

0/150

提交评论