基于AT89C51的频率和功率因数的测量.docx
- 文档编号:28198212
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:37
- 大小:279.49KB
基于AT89C51的频率和功率因数的测量.docx
《基于AT89C51的频率和功率因数的测量.docx》由会员分享,可在线阅读,更多相关《基于AT89C51的频率和功率因数的测量.docx(37页珍藏版)》请在冰豆网上搜索。
基于AT89C51的频率和功率因数的测量
论文题目
基于AT89C51的频率和功率因数的测量
作者姓名
******8
学号
*******
所在院系
电气工程学院
学科专业名称
电气工程及其自动化
指导老师
李啸骢教授
基于AT89C51的频率和功率因数的测量
前言
频率和功率因数是交流电路中的重要参数,是衡量电力系统是否经济运行的一个重要指标,也是供电线路在线监测系统的重要检测量,在功率因数补偿系统中需对其进行实时测量。
因此设计出结构简单、检测精度高的频率和功率因数测量电路十分必要。
以前的测量方法主要是模拟法,模拟法采用分离原件,简单经济,有些场合仍然适用,但是精度不高,维护麻烦。
而此本研究课题中作者采用数字法,即采用单片机智能控制,可以对被测电路的电压、电流进行采样,利用波形在三个过零点之间就是一个整周期的特点,通过装置的过零比较器将波形转化为方波信号,测量两个上升沿,同时启动定时器计数,这样,两个上升沿之间定时器的计数差值即为一个整周期的计数值,在本课题中,测量一个周期内脉冲的个数就可以测量频率。
利用单片机处理后的电压和电流间的相位差即可测量出功率因数。
该方法具有测量精度高,速度快,操作简单,直接显示被测量,是比较好的频率和功率因数测量方法。
交流电压和电流信号通过电压电流互感器,然后经过过零比较器将处理后的信号输送到单片机内部,通过单片机的处理,再由显示电路显示频率和功率因数,单片机采用AT89C51,显示电路由LCD1602组成。
2.方案论证
由于频率的测量都是用相同的方法,故只讨论功率因数的测量
(1)方案一提取电压来检测功率因数
通过对电压的提取来检测功率因数的原理如图2(a)所示,首先采用3个高精度的WB系列数字式交流电压真有效值传感器分别对被测电路的电源电压U1、附加可调电阻RP两端电压U2及负载电压U3进行检测。
可调电阻RP的作用是使附加电阻尽可能小,以减小对被测负载的影响,又可得到数值适当的电压U2满足功率因数计算的要求。
由电路理论,可画出电压U1、U2和U3的相量图如图2(b)所示,则
即是被测负载的功率因数。
根据几何学中的余弦定理可得,
由式
(2)可知,只要
(1)
则
由图2(b)可知,
所以
(2)
将电压U1、U2、U3经过运算后就可求出负载的功率因数
。
(2)方案二通过电压互感器和电流互感器得到低压交流信号,然后通过整形电路将交流信号转换为TTL方波脉冲。
相位差的计算原理是利用输入两路信号过零点的时间差,以及信号的频率来计算2路信号的相位差。
两路信号的相位差:
其中,
N为两路信号的上升沿分别触发计数器的差值,Fk为单片机时钟频率,T为输入信号的周期。
测得相位差后,功率因数即为
,具体设计参考本文的硬件和软件设计部分。
方案一是一种比较可行的功率因数的测量方法,但需要应用到通信接口电路将被测功率因数进行远距离传输,所以硬件部分设计比较繁琐,实现起来的比较困难,而方案二简单、易于实现,并且具有比较高的测量精度,与我们所学的知识密切相关,故选择方案二。
3基础知识
3.1AT89C51单片机性能
图3.1AT89C51引脚图
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
(1)AT89C51的主要特性如下:
.与MCS-51兼容
.4K字节可编程快闪存储器
.寿命:
1000次写/擦
.数据保留时间:
十年
.128.8位内部RAM
.32可编程I/O线
.两个16位定时器/计数器
.五个中断源
.可编程串行通道
.低功耗的闲置和掉电模式
.片内振荡器和时钟电路
3.1.1特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
(2)其管脚的具体说明如下:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(3)振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.2触发器74LS74
74LS74内含两个独立的D上升沿双d触发器,每个触发器有数据输入(D)、置位输入(
)复位输入(
)、时钟输入(CP)和数据输出(
、
)。
、
的低电平使输出预置或清除,而与其它输入端的电平无关。
当
、
均无效(高电平式)时,符合建立时间要求的D数据在CP上升沿作用下传送到输出端。
3.3定时器/计数器
由于在本课题的设计中会用到单片机的定时/计数功能,所以在这里将定时器/计数器的特点详细介绍。
定时和计数是计算机控制系统中两个重要的功能,在实际系统中应用极为普遍,89C51单片机内部有两个16位可编程定时/计数器,即定时器T0和定时器T1。
89C51单片机内部还有两个专用寄存器TMOD、TCON,可通过编程来设定有关参数,如方式选择、定时计数选择、运行控制、溢出标志、触发方式等控制字。
(一)TMOD和TCNO寄存器
89C51单片机内部设置的两个16位可编程的定时器/计数器T0和T1,它们可以处于计数方式或定时方式。
可通过设置特殊功能寄存器TMOD中都有一个控制位来选择T0或T1位定时器还是计数器。
其状态字均在响应的特殊功能寄存器中,通过对控制寄存器的编程,用户可以方便地选择适当的4中工作模式中的一种。
图3.289C51单片机定时器/计数器的结构图
89C51单片机定时器/计数器的结构如图3.2所示。
其中,特殊功能寄存器TMOD用于控制和确定个定时器/计数器的功能和工作模式;特殊功能寄存器TCON用于控制定时器/计数器T0、T1的启动和停止计数,同时包含定时器/计数器的状态。
它们的内容靠软件设置。
系统复位时,寄存器的所有位都被清零。
1.工作方式控制寄存器TMOD
图3.3TMOD寄存器个为定义
TMOD用于设定定时器/计数器的工作方式及四种工作模式中的一种,其各位的定义如图3.3所示。
TMOD地址为89H,高4位位定时器T1的方式控制字段,低4位位定时器T0的方式控制字段。
(1)门控位GATE:
当GATE=0时,定时器/计数器只有软件控制位TR0或TR1来控制启停。
TR1位为1,定时器启动开始工作;位0时,定时器调整工作。
当GATE=1时,定时器/计数器的启动要由外部中断引脚和TR1为共同控制。
只有当中断引脚
和
为高时,TR0或TR1置1才能启动定时器工作。
(2)C/
:
C/
=0为定时器方式,采用晶振脉冲的12分频信号作为计数器的计数脉冲,即对机器周期进行计数。
若选择12MHz晶振,则定时器的计数脉冲为1MHz。
从定时器的计数值便可求得技术时间,故称为定时器方式。
C/
=1为计数器方式,采用外部引脚(T0为P3.4,T1为P3.5)的输入脉冲作为计数脉冲。
当T0(或T1)输入发生高到低的负跳变时,计数器加1,最高计数频率为晶振频率的1/14。
M1M0:
定时器的工作方式由M1M0二位的状态确定,对应关系如下所示。
M1M0工作方式功能描述
00方式013位的计数器,TL0只用低5位
01方式116位的计数器
10方式28位的自动重装计数初值的计数器
11方式3T0分成2个独立的8位计数器
2.定时器/计数器控制寄存器TCON
控制寄存器TCON的主要功能是用于定时器的启动、停止以及在溢出时设定标志位和外部中断触发方式。
它的字节地址位88H,位地址位88H~8FH。
其控制字各位的定义如表3.1所示。
低4位与外部中断有关,高4位的功能如下:
(1)TF1位T1的溢出标志位
当定时器T1溢出时,由硬件将TF1置1,并申请中断。
当进入中断服务程序时,硬件又自动将TF1清零(也可以用软件清零)。
(2)TR1位定时器T1的运行控制位
该位由软件置位和复位。
当GATE(TMOD.7)为0时,TR1为1时允许T1计数,TR1为0时禁止T1计数;当GATE为1时,TR1为1时而且
输入高电平时,才允许T1计数,TR1为0或
输入为低电平时禁止T1计数。
(3)TF0为定时器T0的溢出标志位
当定时器T0溢出时,由硬件将TF0置1,并申请中断。
当进入中断服务程序时,硬件又自动将TF0清零(也可以用软件清零)。
(4)TR0为定时器T0的运行控制位
该位由软件置位和复位。
当GATE(TMOD.3)为0时,TR0为1时允许T0计数TR0为0时禁止T0计数;当GATE为1时,TR0为1而且
输入高电平时,才允许T0计数,TR0为0或
输入为低电平时,禁止T0计数。
(二)定时器/计数器的初始化
定时器的功能是由软件来设置的,所以一般在使用定时器/计数器前均要对其进行初始化。
初始化的步骤
1)确定工作模式(是计数还是定时)、工作方式、启动控制方式,将其写入TMOD寄存器。
2)设置定时或计数器的初值:
可直接将初值写入TH0、TL0或TH1、TL1中。
16位计数初值必须分两次写入对应的计数器。
3)根据要求是否采用中断方式:
直接对IE为赋值。
开放中断时,对应位置位;采用程序查询方式IE位应清0进行中断屏蔽。
4)启动定时器工作:
可使用SETBTR1启动。
若第一步设置为软启动,即GATE设置为0时,以上指令执行后,定时器即可开始工作。
若GATE设置为1时,还必须由外部中断引脚
(其中i为0或1)共同控制,只有当
引脚电平为高时,以上指令执行后定时器方可启动工作。
定时器一旦启动就按规定的方式定时或计数。
3.4中断系统
当CPU正在处理某事件时外界发生了更为紧急的请求,要求CPU暂停当前的工作,转而去处理这个紧急事件。
处理完成后,再回到原来被中断的地方继续原来的工作,这样的过程称为中断。
实现这一功能的部件称为中断系统,请示CPU中断的请求源称为中断源。
中断系统是使处理机对外界异步事件具有处理能力而设置的。
功能越强的中断系统,其对外界异步事件的处理能力越强。
89C51单片机有5个中断源,当中断源同时向CPU请求中断时,就存在CPU优先响应哪个中断源的问题。
通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别,CPU总是最先响应级别最高的中断。
它可分为两个中断优先级,即高级优先级和低级优先级;可实现两级中断嵌套。
用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断申请。
即每一个中断源的优先级都可以由程序来设定。
(一)中断源
在89C51单片机中,有5个中断源:
两个外部
(P3.2)和
(P3.3)输入的中断源、两个定时器T0和T1的溢出中断和一个串行发送/接收中断。
(1)外部中断源:
和
89C51外部中断0和外部中断1的中断请求信号分别有P3.2和P3.3引脚输入。
并允许外部中断源以低电平活负边沿两种中断取法方式来输入中断请求信号。
请求信号的有效电平可由定时器控制寄存器TCON的IT0和IT1设置,如图3.4所示。
图3.4定时器控制寄存器TCON各位的定义
89C51会在每个机器周期的S5P2时对
和
线上中断请求信号进行一次检测,检测方式和中断触发方式的选取有关。
若89C51设定为电平触发方式(即IT0=0或IT1=0),则CPU检测到
/
上低电平时就可认定其上中断请求有效;若设定为边沿触发方式(即IT0=1或IT1=1时),则CPU会在相继的两个周期内两次检测
/
线上电平才能确定其上的中断请求是否有效,即前一次检测为高电平和后一次检测到为低电平时
/
上中断请求才有效。
由于外部中断信号每个机器周期被采样一次,有引脚
和
输入的信号应至少保持一个机器周期,即12个振荡周期。
如果外部为边沿触发方式,则引脚出输入的信号的搞电平个低电平至少各保持一个周期,才能确保CPU检测到电平的调变;而如果采用电平触发方式,外部中断源应一直保持中断请求有效,直到得到响应为止。
(二)中断控制
CPU对中断源的开放和屏蔽,以及每个中断源是否被允许中断,都受中断允许寄存器IE控制。
每个中断源优先级的设定,则由中断优先级寄存器IP控制。
寄存器状态可通过程序由软件设定。
(1)中断的开放和屏蔽
89C51没有专门的开中断和关中断指令,中断的开放和关闭是通过中断允许寄存器IE进行两级控制的。
所谓两级控制是指有一个中断允许总控制位EA,配合各中断源的中断允许控制位共同实现对中断请求的控制。
这些中断允许控制位集成在中断允许寄存器IE中,如表3.2所示为中断允许寄存器各位的定义。
表3.2中断允许寄存器IE
现对IE各位的说明如下:
EA(IE.7)为CPU中断走允许位,EA=0,CPU关中断,禁止一切中断。
EA=1,CPU开放中断,而每个中断源是否开放还是屏蔽分别由各自的允许位确定。
×(IE.6)保留位。
ET2(IE.5)为定时器2中断允许位,仅用于52子系列单片机中,ET2=1允许定时器2中断,否则禁止中断。
ES(IE.4)为串行口中断允许位。
ES=1,允许串行口的接收和发送中断;ES=0禁止串行口中断。
ET1(IE.3)为定时器1(T1溢出中断)中断允许位。
ET1=1,允许T1中断,否则禁止中断。
EX1(IE.2)为外部中断1(
)的中断允许位。
EX1=1允许外部中断1中断;否则禁止中断。
ET0(IE.1)为定时器0(T0溢出中断)的中断允许位。
ET0=1允许T0中断,否则禁止中断。
EX0(IE.0)为外部中断0(
)的中断允许位。
EX0=1允许外部中断0中断,否则禁止中断。
中断允许寄存器IE的单元地址是A8H,个控制位(位地址为A8H~AFH)也可位寻址,可以进行字节寻址也可位寻址。
所以既可以用字节传送指令又可以用位操作指令来对各个中断请求加以控制。
3.5LCD1602液晶显示
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。
(1)管脚功能:
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地
第2脚:
VDD接5V电源正极
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
(2)1602LCD的特性
n+5V电压,对比度可调
n内含复位电路
n提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
n有80字节显示数据存储器DDRAM
n内建有192个5X7点阵的字型的字符发生器CGROM
n8个可由用户自定义的5X7的字符发生器CGRAM
(3)功能引脚说明
表3.31602管脚接口说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.3
4系统软件设计
4.1系统软件的编译环境
频率的测量和功率因数的测量部分采用proteus软件仿真,Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
其主界面如图4.1所示
图4.1Proteus主界面
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1).原理布图
(2).PCB自动或人工布线
(3).SPICE电路仿真
革命性的特点
(1).互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2).仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
Proteus的基本操作:
(1).选择元件:
P按钮(常用元件所在库及名称)根据设计出的硬件图在Proteus的原件库里找到相应的元器件。
(2).选择要使用的元件:
在PickDevice窗口双击相应元件名称,即可将元件添加到主界面左侧的列表中
(3).放置元件到绘图区:
单击列表中的元件,然后在右侧的绘图区单击,即可将元件放置到绘图区。
(每单击一次鼠标就绘制一个元件,在绘图区空白处单击右键结束这种状态)
(4).删除元件:
右击元件一次表示选中(被选中的元件呈红色),选中后再一次右击则是删除。
(5).移动元件:
右击选中,然后用左键拖动。
(6).旋转元件:
左下角旋转工具栏
(7).元件连线:
在引脚上鼠标指针变成X状,单击,移动到目的引脚,再次单击。
(8).删除连线:
同删除元件
(9).绘制电源和地:
单击工具栏上的左起第8个工具(Inter-SheetTerminal),左侧工具栏显示TERMINALS,可在其中选择POWER或GROUND,像放置元件一样放置到绘图区。
(10).在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
论文采用Keil51作为单片机的程序编译环境,它的环境界面如图4.2所示。
与其它编译环境相仿,具有打开文件、加载文件、编译文件的功能,同时,Kei
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 频率 功率因数 测量