(SKU:TOY0020)SD2403 Real-Time clock Module(.NET Gadgeteer Compatible)

来自DFRobot Product Wiki
跳转至: 导航搜索

目录

概述

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<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秒基础上开始计时)

个人工具
名字空间

变换
操作
导航
工具箱