引言
电压监测统计仪是一种在线监测电网电压质量、统计每分钟瞬时电压、每分钟最大电压、每分钟最小电压以及平均电压、电压合格率、电压超上限率、电压超下限率等功能的仪表。从以上功能可得出,电压监测统计仪除了测量电压精度这一因素外,还有一重要因素就是时间的准确性。利用PCF8583串行时钟芯片成功的应用在电压监测仪校验装置中,既实现了电压的可程控信号输出,从而可测量电压监测统计仪的电压精度指标,又实现了一个标准时钟,从而可对电压监测统计仪的时间进行比对,实现校准。
1、 PCF8583的基本功能特点
PCF8583是飞利浦公司推出的I2C总线接口实时时钟芯片,它可独立于CPU工作,不受CPU主晶振及共电容的影响,且计时准确。具有4年日历时钟,12或24小时格式,时基可用32.768KHz或50Hz,带可编程的闹钟,定时和中断功能的日历时钟芯片。芯片具有体积小、硬件连线少、带有256字节的静态RAM等特点。对于PCF8583在电压监测仪校验装置中的应用,主要是用它的实时时钟计数功能,以及标准脉冲输出功能。
2、PCF8583的寄存器结构
在时钟方式下,PCF8583中的寄存器结构地址分配为:00H~07H为时间寄存器地址编码; 08H~0FH为定时器起闹寄存器地址编码,作起闹时间或通用RAM之用;10H~FFH为通用静态RAM。其中00H为控制状态寄存器,01H为1/100秒寄存器,02H为秒寄存器,03H为分寄存器,04H为时寄存器,05H为年/日寄存器,06H为星期/月寄存器,07H为定时寄存器。有关控制寄存器、时寄存器、年/日寄存器、星期/月寄存器的内部格式详述如下:
数据格式为:
⑴ 控制寄存器(00H)
D7位:计数、停止计数位。D7=0,启动对脉冲计数;D7=1,停止计数。
D6位:保持最新计数位。D6=0,计数;D6=1,保持和存储最新计数值到捕捉寄存器中。
D5D4位:功能方式选择位。D5D4=00,选择32.768KHz时钟方式。
D5D4=01,选择50Hz时钟方式。
D5D4=10,事件计数方式。
D5D4=11,测试方式。
D3位:标志位。D3=0,读05H、06HRAM单元时不屏蔽。
D3=1,对05H、06HRAM单元只读出月、日计数值。
D2位:起闹使能位。D2=0,不能起闹;D2=0,允许起闹寄存器使能。
D1位:起闹标志位。D1=0,占空比为50%的分标志 。
D0位:定时器标志位。D0=0,占空比为50%的秒标志 。
⑵ 时寄存器(04H)
D7位:计时格式。D7=0,24小时制,AM、PM标志不变。
D7=1,12小时制,AM、PM标志更新。
D6位:上午(AM)、下午(PM)标志。D6=0,AM;D6=1,PM。
D5D4位:钟点十位(二进制0~2)。
D3D2D1D0位:钟点个位(BCD码)。
⑶ 年/日寄存器(05H)
D7D6位:年份(二进制0~3)。
D5D4位:日期十位(二进制0~3)。
D3D2D1D0位:日期个位(BCD码0~9)。
⑷ 星期/月寄存器(06H)
D7D6D5位:星期(二进制0~6)。
D4位:月份十位( 0~1)。
D3D2D1D0位:月份个位(BCD码0~9)。
3、 硬件接口电路
PCF8583作为I2C总线接口芯片,采用二线通信传输方式。即主要通过时钟线SCL和数据线SDA进行双向传输。由于I2C总线是同步串行数据传输总线,其内部为双向传输电路,端口输出为开漏结构,故总线上必须有上拉电阻,通常可取5~10KΩ。PCF8583与AT89C52单片机的硬件接口电路如图1所示。采用了内带恒温槽、高稳定度的DS32KHz标准晶体振器,代替了使用32.768KHz普通晶振的方案。虽然这二种方案都能产生PCF8583时钟芯片所需要的频率,但是利用DS32KHz产生的晶振频率精度为±1分钟/年。而PCF8583时钟芯片时间的准确性完全取决于晶振频率的准确稳定性。因此,经过图1电路改进后的方案确保了电压监测仪校验装置的时间标准,同时还可把32.768KHz频率输出,作为利用比较法校验电压监测统计仪的标准脉冲。由于考虑到PCF8583内部不带锂离子电池,故外带锂离子电池来保证PCF8583的时钟供电。图1中R1和R2为I2C总线所需要的上拉电阻。P1.4口作为发送时钟信号,P1.5口作为发送或接收数据信号。
4、 PCF8583接口程序设计格式
4.1 PCF8583I2C总线上的信号说明
由于PCF8583为I2C总线接口芯片,因此它的数据操作格式是完全按照I2C总线上的信号读、写操作进行的。其中,I2C总线上的信号如图2所示。启动信号(S)出现在时钟脉冲SCL为高电平,且数据线SDA由高电平到低电平的变化时;停止信号(P)出现在时钟脉冲SCL为高电平,且数据线SDA由低电平到高电平的变化时;应答信号(A)出现在I2C总线上的第9个时钟脉冲SCL为高电平,且相应的数据线SDA为低电平时;非应答信号(/A)出现在I2C总线上的第9个时钟脉冲SCL为高电平,且相应的数据线SDA为高电平时;数据位传送为I2C总线启动后或应答信号启动后的第1~8个时钟脉冲所对应的一个字节的8位数据传送。数据传送按照先高后低位的原则进行读或写
4.2 PCF8583读、写操作格式
PCF8583一次数据操作格式包括起始信号(S)、发送读或写寻址字节、 应答信号、发送数据字节、应答信号……直到发送停止信号(P)。在本文应用中,是按以下两种操作格式来编写程序的。
⑴ PCF8583 写操作格式
PCF8583 写操作格式如下所示,是指从指定单元首地址(word address)开始依次写入几个字节数据。其中slave address1为PCF8583器件写地址,date1~daten为n个字节数据。
⑵ PCF8583 读操作格式
PCF8583 读操作格式如下所示,先写入要读出的n个字节数据存入指定单元首地址(word address)开始的RAM单元中,然后才开始读数据,其中slave address2为PCF8583器件读地址。
5、 PCF8583软件编程
根据图1所示的接口电路,PCF8583的写地址为#0A0H,读地址为#0A1H。在对PCF8583进行数据写入时,应先将日历时钟信息存放于单片机内部从10H开始的8个RAM单元,而从PCF8583读出的数据同样需存放在其中。下面是根据图1电路编制的读写PCF8583时钟的部分软件:
⑴ 变量定义 ⑶ 读时钟数据
SCL BIT P1.4 RD_NUM: LCALL ST
SDA BIT P1.5 MOV
A, #0A0H
year EQU 10H LCALL WRI
month EQU 11H MOV A, #06H
date EQU 12H LCALL WRI
hours EQU 13H LCALL ST
minutes EQU 14H MOV A, #0A1H
seconds EQU 15H LCALL WRI
weekday EQU 16H
RD_BYTE: MOV R3, #8
⑵ 校准写时钟数据 SETB SDA
WR_NUMBER: LCALL ST RD_BYTE1: NOP
MOV A, #0A0H SETB SCL
LCALL WRI MOV C, SDA
MOV A , #00H RLC A
LCALL WRI CLR SCL
MOV A, #80H DJNZ R3, RD_BYTE1
LCALL WRI LCALL STOP
MOV A , seconds RET
LCALL WRI?&nb
sp; ⑷ 写一个字节数据
mov a , minutes WRI: MOV R3, #8
lcall wri WRI1: RLC A
MOV A , hours MOV SDA , C
ANL A , #3FH SETB SCL
MOV hours , A NOP
lcall wri CLR SCL
MOV A , YEAR DJNZ R3, WRI1
SWAP A SETB SDA
RL A SETB SCL
RL A NOP
ORL A , DATE CLR SCL
lcall wri RET
MOV A , WEEKDAY
SWAP A
RL A
ORL A , month
lcall wri
LCALL STOP
RET
⑸ 启动I2C总线 ⑹ 停止I2C总线
ST:&nbs
p; SETB SDA STOP: CLR SDA
SETB SCL SETB SCL
CLR SDA SETB SDA
CLR SCL NOP
RET RET
6 、结束语
本文阐述的PCF8583时钟芯片,应用于单相电压监测仪校验装置,该装置是江西省2003年科技厅重点科技计划课题,编号为10220221,已于2005年6月完成科技成果鉴定。本文在阐述了PCF8583的基本功能特点、寄存器结构的基础上,给出了PCF8583的硬件接口电路、程序设计格式以及相应的接口软件。本文作者创新点是采用了内带恒温槽、高稳定度的DS32KHz晶体振荡器,给PCF8583时钟芯片提供稳定的频率信号,从而实现了标准时钟。虽然采用GPS全球定位系统同样可实现标准时钟,但是它的价格高。因此,本文这种方案的应用是一个提高了产品性价比的成功例子,值得推广。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !