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脚)

RTC SD2403 CD UNO.png 连接USB线

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&lt;7;i++)
  {
      if(i!=2)
      date[i]=(((date[i]&amp;0xf0)&gt;&gt;4)*10)+(date[i]&amp;0x0f);
      else
      {
         date[2]=(date[2]&amp;0x7f);
         date[2]=(((date[2]&amp;0xf0)&gt;&gt;4)*10)+(date[2]&amp;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秒基础上开始计时)

标签: Arduino传感器