高精度RTC SD2403AP在智能路灯控制器上的运用
时间报警允许寄存器的使能位是用于确定哪些时间报警寄存器(秒、分钟等)需要与实时时钟寄存器之间作比较。当实时时钟运行时,一旦被允许的报警寄存器均与对应的实时时钟寄存器相匹配,就会触发一次报警中断,同时报警中断标志位INTAF位被置”1”
当设置 INTS1=0、INTS0=1时,即允许报警中断从INT脚输出。该报警中断有两种模式,即单事件报警和周期性报警, 模式的选定由控制寄存器2中的报警中断模式位IM的值来定:
IM=0 ,单事件报警,输出低电平直至INTAF位清零
IM=1 ,周期性报警,输出低电平有效、宽度为250MS的周期性脉冲直至INTAF位清零
为清除报警中断,可通过写操作将控制寄存器1的INTAF位置”0”。但当ARST位置为”1”,则在控制寄存器1被读取时,INTAF位会自动清零。
●智能路灯控制器设计
本文采用大家使用普遍ATMEL89C51单片机做主控芯片。通过对时间的调用配合光感信号达到对路灯的开关智能控制,该系统可广泛应用于道路灯、霓虹灯、航标灯、夜景灯、高速公路照明灯、庭院灯及所有室外照明灯具的控制,其系统框图如下
硬件设计
图中,主要给出SD2403AP的具体接线电路,OUT为各位的控制信号。可接三极管后放大给继电器输出,从而控制路灯的开关。
在此设计中MCU通过P3.4,P3.5模拟IIC总线与SD2403AP进行通信,并通过INT读出中断信号,本设计设置的每天早上6:30(此时间可以由用户通过KEY键进行修改)定时关掉OUT1路的输出。OUT2,OUT3等由光线控制。现以OUT1的关断做例子分析
软件设计
安排SD2403AP在06:30输出一个低电平的信号,MCU通过轮循的方式查到此电平并设置OUT1为0,从而关断继电器并关段路灯等。
这里将写入SD2403AP的寄存器列出来,如表:
寄存器名称 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
数值范围 |
|
00H |
秒 |
0 |
S40 |
S20 |
S10 |
S8 |
S4 |
S2 |
S1 |
0-59 |
01H |
分钟 |
0 |
MN40 |
MN20 |
MN10 |
MN8 |
MN4 |
MN2 |
MN1 |
0-59 |
02H |
小时 |
12_/24 |
0 |
H20 P/A_ |
H10 |
H8 |
H4 |
H2 |
H1 |
0-23 |
03H |
星期 |
0 |
0 |
0 |
0 |
0 |
W4 |
W2 |
W1 |
0-6 |
04H |
日 |
0 |
0 |
D20 |
D10 |
D8 |
D4 |
D2 |
D1 |
1-31 |
05H |
月 |
0 |
0 |
0 |
MO10 |
MO8 |
MO4 |
MO2 |
MO1 |
1-12 |
06H |
年 |
Y80 |
Y40 |
Y20 |
Y10 |
Y8 |
Y4 |
Y2 |
Y1 |
0-99 |
07H |
秒报警 |
0 |
AS40 |
AS20 |
AS10 |
AS8 |
AS4 |
AS2 |
AS1 |
0-59 |
08H |
分钟报警 |
0 |
AMN40 |
AMN20 |
AMN10 |
AMN8 |
AMN4 |
AMN2 |
AMN1 |
0-59 |
09H |
小时报警 |
0 |
0 |
AH20 AP/A_ |
AH10 |
AH8 |
AH4 |
AH2 |
AH1 |
0-23 |
0AH |
星期报警 |
0 |
AW6 |
AW5 |
AW4 |
AW3 |
AW2 |
AW1 |
AW0 |
N/A |
0BH |
日报警 |
0 |
0 |
AD20 |
AD10 |
AD8 |
AD4 |
AD2 |
AD1 |
1-31 |
0CH |
月报警 |
0 |
0 |
0 |
AMO10 |
AMO8 |
AMO4 |
AMO2 |
AMO1 |
1-12 |
0DH |
年报警 |
AY80 |
AY40 |
AY20 |
AY10 |
AY8 |
AY4 |
AY2 |
AY1 |
0-99 |
0EH |
报警允许 |
0 |
EAY |
EAMO |
EAD |
EAW |
EAH |
EAMN |
EAS |
N/A |
0FH |
CTR1 |
WRTC3 |
0 |
INTFA |
INTDF |
0 |
WRTC2 |
0 |
RTCF |
N/A |
10H |
CTR2 |
WRTC1 |
IM |
INTS1 |
INTS0 |
FOBAT |
INTDE |
INTAE |
INTFE |
N/A |
11H |
CTR3 |
ARST |
0 |
TDS1 |
TDS0 |
FS3 |
FS2 |
FS1 |
FS0 |
N/A |
12H |
时间调整 |
0 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
N/A |
13H |
倒计时定时器 |
TD7 |
TD6 |
TD5 |
TD4 |
TD3 |
TD2 |
TD1 |
TD0 |
0-255 |
14H~1FH |
(12BYTE) |
BIT7 |
BIT6 |
BIT5 |
BIT4 |
BIT3 |
BIT2 |
BIT1 |
BIT0 |
N/A |
读时间的时候用到的是00H——06H里面的数值,为BCD码。
控制寄存器和中断在07——13H。
本设计设置的中断涉及的寄存器有08H,09H,EH,FH,10H
部分软件如下:
- 打开“软锁”,即设置WRTC1,WRTC2,WRTC3为1,才能写数据。写完数据关闭软锁
TIMEWRITE_ON:
SETB SDA
SETB SCL
LCALL DELAY
CLR SDA
LCALL DELAY
CLR SCL
LCALL DELAY ;I2C START
MOV R6,#64H
LCALL SEND
MOV R6,#10H ;设置时钟数据的内部起始地址为10H
LCALL SEND
MOV R6,#80H ;置10H的WRTC1为1
LCALL SEND
CLR SDA
SETB SCL
LCALL DELAY
SETB SDA
LCALL DELAY ;I2C STOP
LCALL IICSTART ;具体程序同上I2C START,此处略
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#0FH ;设置时钟数据的内部起始地址为0FH
LCALL SEND
MOV R6,#84H ;置0FH的WRTC2。WRTC3为1
LCALL SEND
LCALL IICSTOP ;同上,I2CSTOP
SEND: MOV A, R6 ;发送一个字节
MOV R2,#08H
SEND1: MOV C,ACC。7
MOV SDA,C
LCALL DELAY
SETB SCL
LCALL DELAY
CLR SCL
LCALL DELAY ;SEND A BIT
RL A
DJNZ R2,SEND1
SETB SDA ;置输入状态
SETB SCL
LCALL DELAY
MOV C,SDA
JC ERROR
CLR SCL
LCALL DELAY
RET ;READ A BIT
ERROR: LJMP 0000H
2,写2403的中断控制寄存器以实现6:30输出一个低电平
LCALL TIMEWRITE_ON
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#10H ;设置时钟数据的内部起始地址为10H
LCALL SEND
MOV R6,#92H ;ALARM
LCALL SEND
LCALL IICSTOP
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#0EH ;设置时钟数据的内部起始地址为0E
LCALL SEND
MOV R6,#06H ;报警允许小时,分钟
LCALL SEND
LCALL IICSTOP
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#08H ;设置分钟报警地址
LCALL SEND
MOV R6,#30H ;MINUTE
LCALL SEND
MOV R6,#06H ;HOUR
LCALL SEND
LCALL IICSTOP
LCALL TIMEWRITE_OFF
●结语
SD2403AP是一款高精度实时时钟芯片,在此智能路灯控制器中发挥着重要的作用。其芯片可以广泛用于消费和工业领域的诸多平台,如电子式电力测量仪(数字式电力表)、数码相机、数码摄像机、游戏机、DVD录像机、便携电话等产品
参 考 文 献
[1] 沙占友,王彦朋,孟志永,单片机外围电路设计,电子工业出版社,2003.1
[2] SD2403APIDATASHEET,深圳兴威帆电子技术有限公司,2008
评论