SD2403 Real-Time clock Module(.NET Gadgeteer Compatible)
目录
1 概述
2 性能描述
3 引脚定义
4 安装尺寸
5 详细使用资料
6 硬件连接
7 例子程序
概述
SD2403 Real-Time clock Module(.NET Gadgeteer Compatible) (SKU:TOY0020)
SD2403 Real-Time clock Module内置晶振、IIC串行接口的高精度时钟。Arduino、Gadgeteer平台均可用。
性能描述
工作电压:5V
接口方式:IIC
工作温度:-40℃~+85℃
模块尺寸:37.00 × 37.00(mm)
引脚定义
连接arduino平台接口(排针接口):
1、+5:逻辑电压5V
2、G:电源负
3、SCL:IIC时钟输入引脚
4、SDA:IIC数据输入引脚
5、INT:报警中断输出引脚
Gadgeteer插座:
PIN1:3.3V
PIN2:5V
PIN3:INT
PIN4:NC
PIN5:NC
PIN6:NC
PIN7:NC
PIN8:SDA
PIN9:SCL
PIN10:G
安装尺寸
安装尺寸
详细使用资料
SD2403APIdatasheetv1.3.pdf
硬件连接
在这里选择Arduino 328作为控制器举例说明
选用杜邦线(公母头)作为连接线,将模块与328板子连接起来
杜邦线一端插在模块排针,另一端插在328板子,线序如下:
模块 ———— 328板子
+5 ———— 5V
G ———— GND
SDA ———— 4(模拟IO,4脚)
SCL ———— 5(模拟IO,5脚)
Dreamer系列直接用IDC10芯线连接模块和板子上的IIC接口(丝印是X Y I)即可
例子程序
#include <Wire.h>
#define RTC_Address 0x32//器件地址
//端口连接
//SDA-AD4(Gadgeteer PIN8)
//SCL-AD5(Gadgeteer PIN9)
unsigned char date[7];
//读SD2403实时数据寄存器
void I2CReadDate(void)
{
unsigned char n=0;
Wire.requestFrom(RTC_Address,7);
while(Wire.available())
{
date[n++]=Wire.read();
}
delayMicroseconds(1);
Wire.endTransmission();
}
//写SD2403实时数据寄存器
void I2CWriteDate(void)
{
WriteTimeOn();
Wire.beginTransmission(RTC_Address);
Wire.write(byte(0));//设置写起始地址
Wire.write(0x01);//second:1秒
Wire.write(0x01);//minute:1分
Wire.write(0x88);//hour:8时(二十四小时制)
Wire.write(0x01);//week:星期1
Wire.write(0x11);//day:11号
Wire.write(0x06);//month:6月
Wire.write(0x12);//year:2012年
Wire.endTransmission();
Wire.beginTransmission(RTC_Address);
Wire.write(0x12);//设置写起始地址
Wire.write(byte(0));//清零数字调整寄存器
Wire.endTransmission();
WriteTimeOff();
}
//SD2400写允许程序
void WriteTimeOn(void)
{
Wire.beginTransmission(RTC_Address);
Wire.write(0x10);//设置写地址10H
Wire.write(0x80);//置WRTC1=1
Wire.endTransmission();
Wire.beginTransmission(RTC_Address);
Wire.write(0x0F);//设置写地址0FH
Wire.write(0x84);//置WRTC2,WRTC3=1
Wire.endTransmission();
}
//SD2400写禁止程序
void WriteTimeOff(void)
{
Wire.beginTransmission(RTC_Address);
Wire.write(0x0F);//设置写地址0FH
Wire.write(byte(0));//置WRTC2,WRTC3=0
Wire.write(byte(0));//置WRTC1=0(10H地址)
Wire.endTransmission();
}
//数据处理
void Data_process(void)
{
unsigned char i;
for(i=0;i<7;i++)
{
if(i!=2)
date[i]=(((date[i]&0xf0)>>4)*10)+(date[i]&0x0f);
else
{
date[2]=(date[2]&0x7f);
date[2]=(((date[2]&0xf0)>>4)*10)+(date[2]&0x0f);
}
}
Serial.print("Sec = ");//second
Serial.print(date[0]);
Serial.print(" Min = ");//minute
Serial.print(date[1]);
Serial.print(" H = ");//hour
Serial.print(date[2]);
Serial.print(" W = ");//week
Serial.print(date[3]);
Serial.print(" D = ");//day
Serial.print(date[4]);
Serial.print(" M = ");//month
Serial.print(date[5]);
Serial.print(" Y = ");//year
Serial.print(date[6]);
Serial.println();
}
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
I2CWriteDate();//写实时时钟
delay(100);
while(1)
{
I2CReadDate();//读实时时钟
Data_process();//数据处理
delay(1000);//延时1S
}
}
下载上述程序到Arduino328中,打开串口助手软件,波特率9600, 会看到有秒分时周日月年输出(是在初始设置2012年6月11号8点1分1秒基础上开始计时)