《基于单片机单相数字电功率表的设计毕业设计论文(40页).doc》由会员分享,可在线阅读,更多相关《基于单片机单相数字电功率表的设计毕业设计论文(40页).doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于单片机单相数字电功率表的设计毕业设计论文-第 33 页摘要本文主要讲述了基于单片机的单相数字电功率表的设计。该单相数字功率表采用AT89C52单片机作为中央处理器,其间通过检测电压电流值,采用过零比较法利用单片机的定时器计算出相位角,最后依据得出电网功率,最后将检测到的测量值显示在液晶显示器上。另外本文介绍了其相关硬件电路和软件程序流程图,本设计主要包括下面几方面:交流信号数据采样与处理、模数转换、单片机应用与编程、液晶显示。随着社会的发展,电子产品逐渐朝着数字化、信息化、自动化方向发展,本设计的数字功率表也逐渐取代了传统指针式模拟功率表,其具有抗干扰能力强、精度高、可扩展性强、集成方便
2、等优点,具有良好的研究意义。关键词:单片机 数据采集 过零比较 液晶显示AbstractThis paper describes the design of single-phase digital electric power meter based on MCU.The single phase digital power meter using AT89C52 microcontroller as the central processor, which by detecting the voltage and current value, the zero crossing compa
3、rison method the use of single-chip timer to calculate the phase angle, finally based on the results of the power, the measurement of the detected value displayed on the LCD monitor.This paper also introduces the related hardware circuit and software program flow chart, the design mainly includes th
4、e following aspects: sampling and processing, analog-to-digital conversion, application and programming, MCU LCD AC signal data.With the development of society, electronic products gradually towards digitization, informatization, automation development direction, the design of the digital power mete
5、r has gradually replaced the traditional analog pointer type power meter, it has advantages of strong anti-interference ability, high precision, strong expansibility, easy to be integrated, with good research significance.Keywords:microcontroller data acquisition more than zero liquid crystal displa
6、y目 录摘要IAbstractII第1章 概 述11.1 设计背景与意义11.2 研究内容1第2章 系统方案设计22.1 系统基本思想22.2 系统功能要求22.3 系统框图32.4 设计方案及技术分析32.4.1 电压电流采集模块32.4.2 信号处理模块42.4.3 模数转换模块42.4.4 相位角测量模块4第3章 系统硬件分析53.1 电路测试系统的分析53.1.1 单片机最小系统简介53.1.2 数据存储器24C1653.2 系统的前向通道83.2.1 电压、电流采样的前置电路83.2.2 相位角测量的前置电路103.2.3 模数转换电路113.3 键盘电路153.4 液晶显示电路15
7、第4章 系统软件设计184.1 Keil编程软件介绍184.2 程序设计184.2.1 系统的主程序设计184.2.2 初始化子程序的设计194.2.3 测量子程序214.2.4 液晶显示子程序264.2.5 键盘扫描子程序28第5章 系统调试过程305.1 Proteus软件应用305.2 电压、电流采集模块调试305.3 相位角测量模块调试315.4 液晶显示模块调试335.5系统调试33第6章 总结35参考文献37致 谢38附录A:原理图39附录B:仿真图40附录C:部分程序41第1章 概 述1.1 设计背景与意义随着社会的发展,电能在人们的生活中无处不在,并以各种形式影响着人们的生活。
8、现在人们的基本生存得到保障,对用电设备工作状态的了解与要求也越来越高。这些工作状态主要包括电网电压、设备工作电流、工作环境、压力、湿度等,只有满足所有用电设备的最大要求才能确保人身的安全问题。电网电压与工作电流的稳定是设备长期运行的前提,而功率表是电压电流最终的体现方式,因此,对功率表的测量显得尤为重要。最近几年,随着电子、计算机和半导体三方面技术的飞速发展,电力系统在测量方面也发生了巨大的变革。功率表一直以来作为重要的工业测量仪表,广泛被应用于电工与电子技术领域,目前,电能表、电子式功率计采用的工作原理,基本上是依据功率的定义,采用各种乘法器来实现电压与电流的乘积,而本设计采用数值采样法,对
9、电压电流信号进行同时采样,以获得较高的精度。与传统方法不同,本设计采用过零比较法利用单片机的定时器对电压与电流的的时间差进行确定,从而计算出电压与电流的相位角,再经查表得出功率因数,最后计算出电网功率。家庭用电主要是交流电,所以本设计主要研究的是单相交流数字电功率表。其采用数字化测量技术,分开采集电压电流,再通过软件编程计算出功率。测量的过程中,通过把连续的模拟量(交流输入的电压和电流)转换成不连续的、离散的数字形式。传统的指针式电能表功能单一且精度低,以不能满足社会的需求,故采用单片机的数字功率表,精度高、抗干扰能力强、集成方便,还可与PC机进行实时通讯。目前,集成的数字功率表功能强大、使用
10、方便、体积小,广泛应用与电子及电工测量、工业自动化仪表、自动测试系统等智能数字化领域,在市场上受到很多人的青睐。1.2 研究内容本设计是针对单相交流数字电压表系统的研究,以单片机为核心,设计并制作0-300V交流电压、0-5A交流电流的采集、电压超前电流的相位角的硬件系统。在制作硬件系统的平台上编写相关的程序并实现功率的计算与显示。系统采用51单片机作为核心处理器,通过硬件电路和软件编程,控制模数转换器工作和液晶显示器显示。本设计主要包括下面几方面内容:交流信号数据采样与处理、模数转换、单片机应用与编程、液晶显示。第2章 系统方案设计2.1 系统基本思想本设计是针对二端网络(如图2-1)电路中
11、参数的测量,假设端电流i及端电压u是在关联的参考下,分别为,其中是电压超前于电流的相位角,则瞬时功率,其中U、I分别是电路的电压有效值和电流有效值,通过滤除高频交流分量,就可以得到功率的有效值。图2-1 二端网络本课题主要研究的电路电网中对正在运行时的参量进行测量、保存、显示,对于单片机软件的开发,可以选用C语言或者汇编语言进行编程。本设计中我选择利用C语言进行编程。本设计基本的设计思路如下:首先,对于电路中的电压和电流的测量,可以通过系统的前置电路把其转换成可供采样电压信号,再通过AD转换送入单片机处理,由软件读出,然后进行处理,处理后参数由液晶显示器显示出来。其次,对相位角的测量,采用过零
12、比较的方法利用单片机的定时器对电压与电流过零点的时间差来进行确定,再通过计算就可以确定电压与电流的相位差,故功率因数可以通过查表得到。最后,功率的测量则是通过公式计算出来的。电路每一个时刻所对应的电压、电流、功率、功率因数四个参数可以通过液晶显示器显示出来。2.2 系统功能要求本设计利用数字功率表来测量频率为50Hz的交流电路的各种参数,包括电压有效值、电流有效值、功率、功率因数。数字功率表不能直接测量得到,必须先进行电压、电流和功率因数的测量,才能计算出功率。本设计重点阐述了电压和电流分别采样及采用过零比较的方法利用单片机的定时器得出相角的过程,选用高精度的模数转换器TLC2543进行模数转
13、换并用液晶显示器SMC1604A。对输出结果进行显示。这个过程需要完成硬件、软件系统设计,并使最终的数字功率表具备以下的功能:1) 电压、电流值同步显示2) 电压测量范围0-300V,电流测量范围0-5A3) 在液晶显示器上显示电压、电流、功率因数、功率2.3 系统框图在基于单片机的单相数字电功率表的设计中,如果要对元件的功率进行测量,首先要明白功率的意义,从式中可知,要测量功率就要求电压有效值、电流有效值和功率因数,故在本次设计中分别对其做了处理,由此可以划分为下面几大模块:电压电流采集模块、相位角测量模块、键盘模块、液晶显示模块,在第三章我将对其做详细的介绍。整个系统的结构图如图2-2所示
14、。图2-2 系统结构图2.4 设计方案及技术分析2.4.1 电压电流采集模块方案一:电阻分压采样通过将电阻串联或电阻并联放到待测电路中,电流流过电阻,从而采集到电压电流的值。方案二:电压电流互感器互感器是一种仪用变压器,它是把电压、电流按一定的比列进行变换的一种测量设备。其主要的功能是将一些大电压、大电流缩小一定的比例并将其变换成一种标准的低电压(100V)、低电流(5A或1A,均指额定值),因此使得一些测量仪表、保护设备和自动控制设备可以实现标准化、小型化。同时互感器能够隔开高压电力系统,从而人身和设备的安全得到保证。方案一主要适用于小电压小电流信号的采样,优点在于接线简单,易于实现,但由于
15、电阻的接入使得原来的网络功率损耗增大,并对原信号产生一定的干扰,这样采样误差变大。方案二适用于一些大电压、大电流的采样,功率损耗低,能很好的实现电气隔离,采样过程对原信号无影响。电流互感器对于200V左右的交流信号采样明显胜于电阻分压采样,故选择方案二。2.4.2 信号处理模块首先电压电流互感器二次测电压比较小,且A/D转换器只接收0-5V直流电压信号进行处理,故需要对采样到的小交流信号进行放大、整流,整流出来的电压电流信号通常含比较大的纹波,所以需要电容和电阻来设计平波电路。综上,信号处理模块需要设计整流电路和平波电路。2.4.3 模数转换模块本设计中A/D转换器采用11通道10位TLC15
16、43串行模数转换器。与传统的模数转换器相比,TLC1543具有输入通道多、转换精度高、传输速度快、价格低、使用灵活和易于与单片机接口等特点,是一款高性价比的模数转换器。其片内设有自动保持电路。故采用TLC1543比较适合。2.4.4 相位角测量模块功率因数是指正弦信号的电压超前于电流的相角的余弦值。方案一:采用过零比较的方法来求相位角某一正弦信号周期性的出现过零点,通过测出过零点的时间就能得出该信号的相角。方案二:通过傅式滤波的方法来求相位角该方法完全考虑系统不对称性所造成的谐波对测量精度的影响,但只适用于无限长的信号。综上,本设计采用方案一。第3章 系统硬件分析3.1 电路测试系统的分析单片
17、机电路测试系统主要由AT89C52、24C16数据存储器、键盘电路以及前向测试通道(电压电流采样电路)和液晶显示电路构成。它主要完成的任务是:系统从前向通道采集得到的数据进行处理后,通过内部总线送给片外的24C16数据存储器进行储存,并将处理过的数据通过液晶显示器显示出来。3.1.1 单片机最小系统简介本系统采用AT89C52单片机,它是一种低功耗、高性能的芯片。其片内内置通用的8位中央处理器(CPU)和Flash存储单元,功能比较强大,适用于各种复杂的控制应用场合。51单片机最小系统复位电路的极性电容C1的大小直接影响到单片机的复位时间,一般情况下采用10-30uF,C1越大需要的复位时间越
18、短,故本设计中采用10uF;晶振Y1即可采用6MHz也可采用11.0592MHz,一般在正常运行的情况下都选则较大频率的晶振,因为单片机CPU的处理速度直接受到晶振振荡频率的影响,频率越大的晶振处理的速度就越快,故本设计中采用11.0592MHz;晶振电路中的起振电容C2、C3一般采用15-33pF,且起振电容越接近晶振越好,而晶振的位置离单片机的距离越近越好,一般C2、C3取相同值30PF。单片机的最小系统图如图3-1所示。图3-1 单片机的最小系统3.1.2 数据存储器24C16一、24C16说明在本设计中,数字功率表的系统很小,所要存储的数据比较小,所以我选用了串行E2PPOM 24C1
19、6片外存储器。原因在于系统掉电后它所存储的数据并不消失,并且与单片机连接的管脚也比较少,一定的程度上可以节约系统的硬件资源。当然它也有一定的不足,就是在软件编程时比较麻烦。24C16是一个16K位串行CMOS E2PROM,内部含有2048个8位字节,CATALYST公司具有先进的CMOS技术,其实质上是器件的功耗得到了减少。24C16具有一个16字节页的写缓冲器,该缓冲器是通过I2C总线的接口来完成操作的,另外还具有一个特定功能的写保护引脚。24C16引脚图如图3-2、引脚功能如下表3-1所示:图3-2 24C16引脚图表3-1 24C16引脚功能管脚名称功能A0、A1、A2器件地址选择SD
20、A串行数据/地址SCL串行时钟WP写保护Vcc+1.8V到6.0V工作电压Vss地二、24C16的功能描述24C16支持I2C总线数据的很多传送协议,I2C总线规定,任意一个把数据传送到I2C总线的器件叫做发送器。任意一个从I2C总线接收数据的器件叫做接收器。数据的传送是由产生的串行时钟信号以及所有起始信号、停止信号的主器件来控制的。任意一个主器件或者从器件都能称为发送器或者接收器,但传送数据(发送或接收)的模式是由主器件来控制。三、24C16的时序描述124C16的起始信号:时钟线为高电平期间,数据线电平从高到低的跳变作为24C16的起始信号。224C16的停止信号:时钟线为高电平期间,数据
21、线电平从低到高的跳变作为24C16的停止信号。3、24C16的起始、停止时序如下图3-3所示: 图3-3 起始、停止时序图四、24C16的寻址过程描述主器件发送一个起始信号来启动发送过程,然后再发送它所需要寻址的控制命令字(从器件的地址),该控制命令字的高4位固定为1010,A2、A1、A0作为器件的地址位,用来定义哪个器件以及器件的哪一个部分被主器件访问,而读写控制位是由该控制字的最低位来控制的。“1”表示对控制字进行读的操作,“0”表示对控制字进行写的操作。接下来主器件的发送首先要访问从器件的地址,在起始信号被主器件发送和地址字节被从器件发送后,当24C16监视总线的地址和从器件发送的地址
22、一致时,24C16会产生一个响应的应答的信号(通过SDA线)。24C16再依据读写的控制位(R/W)的状态进行读或写操作。24C16在系统电路中的接法如3-4图所示。图3-4 24C16在系统电路中接法 3.2 系统的前向通道每个系统都有自己的输入信号,不然整个系统都是失败的,所以在本次设计的单片机控制系统中,必须有被测电信号的输入通道,即前向通道,以此来采集必要的输入信息。下面是讲述本次系统前向通道的构成及接口。3.2.1 电压、电流采样的前置电路由于本系统测量电压的有效值范围是0V到300V,电流有效值的范围是0A到5A,而模数转换器采样电压仅仅为0到5V的直流电压,所以在硬件上需要设计电
23、压和电流的前置通道完成强电到弱电的转换。即外部电压或电流先经过互感电路变换、整流电路整流、分压电路分压最后才可以被模数转换器采样。一、电压采样将0-300V的交流电压转换成较小的电压,此时采用TVA1421-01型电压互感器来实现。该器件的原理是电流型电压互感器,即二次测输出的电流与输入的电压成正比,所以二次测不能开路,使用时在二次测接入采样电阻,采样电阻取500欧姆时,由于输出电流等于输入电流,所以采样电阻两端的电压即为0-1V。电压采样电路如图3-5所示。图3-5 电压采样电路图二、电流采样由于流过用电设备的交流电流通常比较大,所以应该把它按比列的衰减成一个安全的同特性、不失真的交流小信号
24、。采样电流为5A的交流电,所以选择TVA1421-01型电流互感器来实现。TVA1421-01型电流互感器中间有一个通孔,应用时可将待测电线穿过此孔,它输出的小信号电流也是与输入的电流成线性比例的,使用时在二次端串接电阻,即可采样到电压。TVA1421-02型作为电流互感器时,额定电压为9A时,输出额定电流为6mA,故额定输入电流5A时,则额定输出电流为3.33mA,此时采样电阻选用300欧姆,二次测输出电压为0-1V。下面为电流采样电路图3-6。图3-6 电流采样电路三、信号处理分析该模块主要是将电压电流采样模块采样到的交流电压信号进行整流和平波处理,使其能被A/D转换模块可接收的0-5V直
25、流电压信号。下面是电压采集信号处理电路(图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的直流电压,所以要通
26、过电阻进行分压。在处理信号时,要保护测量设备,所以在信号送入TLC1543之前并联一个稳压二极管以对直流电压信号进行稳压,确保输出电压在0-5V以内的范围,经过上面一系列的处理得出的电压值才能与电路的真实值相等。电压(或者电流)量程的自动转换则通过软件来实现,关于量程转换将在第四章软件设计中具体介绍,在此就不再叙述。3.2.2 相位角测量的前置电路利用过零点来测量电压、电流的相位差。对于某一正弦信号,都会出现周期性的出现过零点,我们只要测出过零点的时间就可以得出电压、电流的相位差。该电路主要由限幅电路、过零检测器和光电耦合器组成。在前面一节中,对于电压与电流的采集,我们是通过互感器来获得的,在
27、本节中我还是采用互感器来获得电压电流的真实值。当电路电压或电流通过互感器变换后的采样电压或电流值大于0时,则1点(7点)的电位小于零,发光二极管导通,使光电耦合器作用导致P3.2输出低电平。当电压(电流)的负半轴经过零点时,1点(7点)的电位大于零且近似为5V,这个时候发光二极管不导通,使得光电耦合器不作用P3.3输出为高电平。由于已知本系统所测量的电路频率主要为50HZ的交流电,在系统中电压接入INT0(单片机的P3.2管脚),电流接入INT1(单片机的P3.3管脚),这样根据电压和电流过零的时间差,再通过软件编程我们可以计算出电压和电流之间相差的相位角,从而满足了设计要求。由此可看出在这个
28、电路中光电耦合器有两种作用:电气隔离和电平转换。图3-9 相位角测量电路3.2.3 模数转换电路信号处理后出来的是模拟量,而单片机接收的信号只是数字量,所以A/D转换电路是功率测量中必不可少的一部分。本次设计选用的A/D转换芯片作为处理器,在此选择有11路模拟量输入的TLC1543转换器,因为TLC1543不仅转换时间很快、采样的精度高而且使用单片机I/O接口少,完全可以满足系统的测量要求。为了TLC1543转换器能可靠的运行,需要对其各个控制端进行学习。一、TLC1543简介(1)TLC1543是20脚封装的CMOS芯片,也是10位开关电容按逐次逼近的方法进行模/数转换的转换器。TLC154
29、3引脚图如图3-10所示。(2)输入端有三个和三态输出端有一个:片选(CS)、输入/输出时钟(I/O CLOCK)、地址输入端(ADDRESS)以及数据输出端(DATA OUT)。具有一个四线接口,可以直接与主处理器或其他的外围串行口进行高速数据传输。(3)片内部含有一个14路多路的选择器,可供选择的有:在11个输入中的可以选择1个,在内部含有3个带有自测试的电压可以选择一个。(4)片内还设有自动采样的保持电路。在转换结束时,EOC输出端变高以指示转换的完成。(5)系统的时钟应在片内产生并且与I/O CLOCK同步。(6)片内设有转换器,使该器件具有以下特点:高速(单次转换的时间10us)、高
30、精度(10位的分辨率、最大+LSB线性的误差)和低噪声。图3-10 TLC1543引脚图二、工作过程TLC1543工作时序如图3-11所示,其工作过程分为两个周期:访问周期和采样周期。图3-11 TLC1543时序图时序使用方法:(1)片选CS高电平,EOC高电平,CLK时钟低电平;(2)片选CS低电平,开始读出第一位数据;(3)在第一个时钟上升沿,输入一个地址数据;(4)之后在每个时钟的下降沿输出AD转换数据,在上升沿输入地址数据;(5)TLC1543是10位转换器,因此有10个时钟;(6)一个操作过程结束后,片选CS高电平,EOC会在最后第10个时钟的下降沿触发低电平,开始AD转换,此时,
31、输出被禁止,等到转换结束后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-12 TLC1543的
32、硬件电路图表3-2 TLC1543的输入寄存器格式功能选择输入数据字节备 注地址位L1L0LSBFBIPD7=MSBD0=LSBD7D6D5D4D3D2D1D0AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7AIN8AIN9AIN1000000000111000011110000011001100101010101010 选择 输入 通道REF+与REF差模1011内部测试REF单端1100REF+单端1101软件断电1110MSB先出LSB先出01顺序输出单极性双极性01极性表3-3 各个量程通道对应地址和控制格式通道与之对应的TLC1543的通道通道地址以及控制格式采样电压
33、通道IN000H采样电流通道IN110H3.3 键盘电路键盘分独立键盘和矩阵键盘,但它们都是由一组按压式或触模式开关构成的阵列。键盘的各个功能依据具体的设计来定。在本次设计系统中,系统的功能键比较少,一共就4个按键,所以在硬件设计的时候选择独立式的按键。由于51单片机P0口作为接口使用时需要接10千欧的电阻,所以每个按键各接一个电阻和一根输入线,各个按键之间互不影响。因此通过检测输入线的电平状态便可以很容易的判断哪个按键工作了。本设计中,我将这五个按键分别定义为控制测试系统的显示电压、显示电流、显示功率因数、显示功率、复位。本次设计的键盘电路如图3-13所示。图3-13 键盘电路3.4 液晶显
34、示电路本设计中,在显示器的选择上我选择字符型的可编程的字符液晶显示控制器,其型号是SMC1604A,因为它不仅有其专用的指令集,易于编程,而且用它最多可以用来显示四行字符,与我设计的功率表功能相符合。下面我将对其进行简单的介绍。SMC1604A是标准字符型的液晶显示器,其利用点阵型的液晶显示器(LCD),可以显示16个字符*4行的西文字符,字符尺寸为2.95*4.75(WXH)mm,内置HD44780接口,可与单片机的接口直接相连,应用于各类仪器仪表及电子设备。SMC1604A标准的字符型的液晶显示器示意图如图3-14所示,SMC1604A引脚图如图3-15所示,引脚接口功能如表3-4所示。图
35、3-14 标准字符型液晶显示器示意图图3-15 SMC1604A引脚图表3-4 引脚说明符号引脚说明符号引脚说明VSS电源地D2Data I/OVDD电源正极D3Data I/OV0LCD偏压输入D4Data I/ORS数据/命令选择端(H/L)D5Data I/OR/W读写控制信号(H/L)D6Data I/OE使能信号D7Data I/OD0Data I/OBLAData I/OD1Data I/OBLK背光源负极液晶显示器电路如图3-16所示。D0-D7与P2口相接,E、RW、RS分别与P3.7、P3.6、P3.5相接。图 3-16 液晶显示器电路图第4章 系统软件设计第四章对系统的硬件
36、作了较为简单的分析,软件与硬件是相辅相成的即硬件的运作离不开软件的支持,所以这一章详细介绍了系统软件设计的过程。这是本次毕业设计的重点内容。本章主要针对数字功率表的测量详细的介绍了软件实现的过程。在本章中我对一些子程序像双字节无符号数的乘除法、二进制数到十进制数的转换、数据的排序取平均值、线性插值等之类子程序并没有做详细的介绍,因为此类的子程序我们能在参考书上很容易找到现成的模块,这些都是前人的经验结晶,在这个系统中我是直接对它们进行调试后引用的。最后还对本次软件开发工具,即软件开发工具仿真器Proteus作了一定的介绍。 4.1 Keil编程软件介绍Keil C51是美国Keil Softw
37、are公司生产的一种51系列兼容单片机C语言软件开发系统,也可以使用汇编进行编写,两者相比较,C语言功能更加强大。Keil界面图如图4-1所示。图4-1 Keil界面图4.2 程序设计在总的设计思想和硬件设计确定之后,我就可以开始软件设计,根据前面介绍的工作原理和技术指标,软件设计应完成的主要任务有以下几个模块。4.2.1 系统的主程序设计主程序是整个数字功率表系统控制程序的主要框架,它是一个顺序执行的无限循环的程序,运行过程必须构成一个循环,这样才能不断的运行程序。主程序应不断地顺序查询,并根据其功能调用相关的子程序并执行其命令,以完成对各种实时控制事件的处理。本系统中,主程序的主要功能是测
38、量和调用键盘扫描子程序,当系统测量完成后我们调用键盘扫描子程序,根据扫描子程序得到所按的键的键值,按键值跳转到相应的功能键子程序实现各种功能,并在返回主程序后调用显示子程序在显示器输出相应数据。主程序流程图如图4-2所示。图4-2 主程序流程图4.2.2 初始化子程序的设计初始化程序主要用来确定程序的初始堆栈,程序状态字,对相应的存储单元进行清零,设定定时器工作方式等等,初始化程序的具体步骤如下:1) 由于单片机在复位后堆栈为07H,所以在系统开始后应该重新设置堆栈;2) 清24C16写保护,读取标志寄存器的内容,比较标志寄存器中的内容是否等于0AAH,如果相等则保持系统上次运行的状态,否则清
39、除以前状态;3) 设置定时器工作方式和波特率。在这个系统中由于我们在测量电压和电流之间相位差的时候需要用到定时器T1和记录一个信号周期内A/D采样的次数N需要计数器T0,所以在初始化时,假设定时器T1的工作方式2,T0的工作方式1。波特率的设置是非常必要的,在这个系统中,我们选用T0工作于方式1作为波特率发生器,设T1的计数器初值为X,依据公式:波特率=(其中为系统的振荡频率为11.0592MHz)由于在本系统中下我们选择的波特率为9600,所以由上式计算得X=0xFDH。根据上面所述我们设定T1工作于定时方式2,T0计数方式1,串口工作于方式1。初始化液晶显示器,液晶显示器再次上电后必须重新
40、进行初始化才能显示字符。整个系统的初始化子程序流程图如图4-3所示。图4-3 初始化流程图4.2.3 测量子程序测量程序是整个系统的主要程序,是整个循环程序的主体内容。在此我们主要完成的任务有电压和电流之间相位差的测量、功率因数的计算,电压有效值的测量、电流有效值的测量以及功率的计算,整个测量子程序的流程图如图4-4所示:图4-4 测量子程序流程图其中测量子程序中又包含如下子程序:一、功率因数的测量子程序首先要完成电压与电流之间时间差的测量,由上一章可知,单片机的定时器TO工作于计数方式1,定时器T1工作于定时方式2。电路实测输出的波形如图4-5所示。当INT0由0变成1时,电压波形产生正跳变
41、,打开定时器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 功率因数测量子程序二、电压、电流有效值的
42、测量在测量电压、电流有效值的过程中,假设输入电压、电流与输出电压、电流成线性关系。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
43、-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
44、=数据写数据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也不能显示数据,所以我们编制程序的时候系统初始化的时候最重要的
45、一个环节就包括了液晶的初始化。LCD初始化包括LCD工作方式的设定、输入方式设定、清屏等。其初始化流程图如图4-11所示。LCD显示子程序的LCD显示字符子程序,其功能就是将要显示的数据送到LCD显示器的显示RAM中,在这个过程中最关键的事就是要确定显示RAM的地址,在本次设计中,LCD显示器RAM地址如表4-4所示,显示子程序具体流程图如图4-12所示。表4-4 RAM地址行数地址第一行000102030405060708090A0B0C0D0E0F/第二行404142434445464748494A4B4C4D4E4F/第三行101112131415161718191A1B1C1D1E1F20.27第四行505152535455565758595A5B5C5D5E5F60.67图4-10 LCD显示流程图图4-11 初始化流程图图4-12 显示子程序具体流程图4.2.5 键盘扫描子程序本次设计中我选用独立键盘,共4个按键,可以通过检测输入线的电平状态便可以判断哪个按键被按下了。键盘使用P0口,由于51单片机P0具有漏电保护的作用,所以在使用的时候要加入上拉电阻。在本设计中,键盘扫描主要是扫描P0.4、P0.5、P0.6、P0.7这四个按键。软件流程图如图4-13所示。图4-13
限制150内