栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

时钟芯片DS3231程序I2C,留下记录避坑

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

时钟芯片DS3231程序I2C,留下记录避坑

看资料书有些操作你觉得不合理,但实际却是合理地

DS3231.C

#include "DS3231.h"

//当前时间数组
unsigned char rtc_current[8] = {0x20,0x22,0x03,0x13,0x23,0x59,0x59,0x01};

//用于存储十六进制转十进制的数组
unsigned char rtc[15];

//修改时间数组
xdata unsigned char rtc_gaishijian[8] = {0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x01};
xdata unsigned char rtc_gaishuzu[15];

//闹钟数组
xdata unsigned char alarm_clock[4] = {0x00,0x00,0x00,0x01};
xdata unsigned char alarm[8];


void DS3231_Write(unsigned char addr,unsigned char dat)
{
    I2C_Start();
    I2C_SendByte(0xD0);
    I2C_ReadACK();
    I2C_SendByte(addr);
    I2C_ReadACK();
    I2C_SendByte(dat);
    I2C_ReadACK();
    I2C_Stop();
}


unsigned char DS3231_Read(unsigned char addr)
{
	  unsigned char test=0x00;
	  I2C_Start();
      I2C_SendByte(0xD0);
      I2C_ReadACK();
      I2C_SendByte(addr);
      I2C_ReadACK();
      I2C_Start();
	  I2C_SendByte(0xD1);
	  I2C_ReadACK();
	  test=I2C_ReadByte();
	  I2C_SendNAK();
      I2C_Stop();
	  return I2CRXD;
}


void RTC_WriteConfig(void)
{
	DS3231_Write(rtc_year,rtc_current[1]);
	DS3231_Write(rtc_mon,rtc_current[2]);
	DS3231_Write(rtc_date,rtc_current[3]);
	DS3231_Write(rtc_hour,rtc_current[4]);
	DS3231_Write(rtc_min,rtc_current[5]);
	DS3231_Write(rtc_sec,rtc_current[6]);
	DS3231_Write(rtc_week,rtc_current[7]);
	
}


void RTC_Read(void)
{
	
  rtc_current[1]=DS3231_Read(rtc_year);
  rtc_current[2]=DS3231_Read(rtc_mon);
  rtc_current[3]=DS3231_Read(rtc_date);
  rtc_current[4]=(DS3231_Read(rtc_hour)&0x3f);
  rtc_current[5]=(DS3231_Read(rtc_min)&0x7f);
  rtc_current[6]=(DS3231_Read(rtc_sec)&0x7f);
  rtc_current[7]=DS3231_Read(rtc_week);
	
	//-------年-------//
	rtc[0] = ((rtc_current[0]&0xf0)>>4);
	rtc[1] = (rtc_current[0]&0x0f);
	rtc[2] = ((rtc_current[1]&0xf0)>>4);
	rtc[3] = (rtc_current[1]&0x0f);
	//-------月-------//
		
	rtc[4] = ((rtc_current[2]&0xf0)>>4);
	rtc[5] = (rtc_current[2]&0x0f);

	//-------日-------//
	rtc[6] = ((rtc_current[3]&0xf0)>>4);
	rtc[7] = (rtc_current[3]&0x0f);

	//-------时-------//
	rtc[8] = ((rtc_current[4]&0xf0)>>4);
	rtc[9] = (rtc_current[4]&0x0f);

	//-------分-------//
	rtc[10] = ((rtc_current[5]&0xf0)>>4);
	rtc[11] = (rtc_current[5]&0x0f);

	//-------秒-------//
	rtc[12] = ((rtc_current[6]&0xf0)>>4);
	rtc[13] = (rtc_current[6]&0x0f);

	//--------------//
	rtc[14] = (rtc_current[7]&0x0f);
}




void rtc_gaishuzu_Read(void)
{
//-------年-------//
	rtc_gaishuzu[0] = ((rtc_gaishijian[0]&0xf0)>>4);
	rtc_gaishuzu[1] = (rtc_gaishijian[0]&0x0f);
	rtc_gaishuzu[2] = ((rtc_gaishijian[1]&0xf0)>>4);
	rtc_gaishuzu[3] = (rtc_gaishijian[1]&0x0f);
	//-------月-------//
		
	rtc_gaishuzu[4] = ((rtc_gaishijian[2]&0xf0)>>4);
	rtc_gaishuzu[5] = (rtc_gaishijian[2]&0x0f);

	//-------日-------//
	rtc_gaishuzu[6] = ((rtc_gaishijian[3]&0xf0)>>4);
	rtc_gaishuzu[7] = (rtc_gaishijian[3]&0x0f);

	//-------时-------//
	rtc_gaishuzu[8] = ((rtc_gaishijian[4]&0xf0)>>4);
	rtc_gaishuzu[9] = (rtc_gaishijian[4]&0x0f);

	//-------分-------//
	rtc_gaishuzu[10] = ((rtc_gaishijian[5]&0xf0)>>4);
	rtc_gaishuzu[11] = (rtc_gaishijian[5]&0x0f);

	//-------秒-------//
	rtc_gaishuzu[12] = ((rtc_gaishijian[6]&0xf0)>>4);
	rtc_gaishuzu[13] = (rtc_gaishijian[6]&0x0f);

	//--------------//
	rtc_gaishuzu[14] = (rtc_gaishijian[7]&0x0f);
}

void rtc_alarm_Read(void)
{
	//-------时-------//
	alarm[0] = ((alarm_clock[0]&0xf0)>>4);
	alarm[1] = (alarm_clock[0]&0x0f);

	//-------分-------//
	alarm[2] = ((alarm_clock[1]&0xf0)>>4);
	alarm[3] = (alarm_clock[1]&0x0f);

	//-------秒-------//
	alarm[4] = ((alarm_clock[2]&0xf0)>>4);
	alarm[5] = (alarm_clock[2]&0x0f);

	//--------------//
	alarm[6] = (alarm_clock[3]&0x0f);
}

DS3231.H

//DS3231寄存器地址 ----------------
#define rtc_sec  0x00
#define rtc_min  0x01
#define rtc_hour  0x02
#define rtc_date  0x04
#define rtc_mon  0x05
#define rtc_year  0x06
#define rtc_week  0x03
//----------------------------------

重点是读程序,网上找不到对应的程序,程序stc和stm32都可以执行,仅供参考。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号