时钟芯片DS1302的原理及使用

2023-10-29

一.描述

DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302芯片包含一个用于存储实时时钟/日历的 31 字节的静态 RAM,可通过简单的串行接口与微处理器通讯,将当前的是时钟存于RAM。DS1302芯片对于少于 31 天的月份月末会自动调整,并会自动对闰年进行校正。由于有一个 AM/PM 指示器,时钟可以工作在 12 小时制或者 24小时制。

二.芯片参数
1.芯片特点
  • 实时时钟计算年、月、日、时、分、秒、星 期,直到 2100 年,并有闰年调节功能
  • 31 x 8 位 通用暂存 RAM
  • 串行输入输出,使管脚数最少
  • 2.0V 至 5.5V 宽电压范围操作
  • 在 2.0V 时工作电流小于 300nA
  • 读写时钟或 RAM 数据时有单字节或多字节(脉冲串模式)数据传送方式
  • 8 管脚 DIP 封装或可选的 8 管脚表面安装 SO 封装
  • 简单的 3 线接口
  • 与 TTL 兼容 (VCC = 5V)
  • 可选的工业温度范围:-40°C to +85°C
2.引脚说明

在这里插入图片描述
DS1302采用的是三线接口的双向数据通信接口,RST是片引脚,低电平有效;SCLK是时钟芯片,为通信提供时钟源;I/O为数据输入输出引脚,用于传输及接收数据;
DS1302还采用了双电源供电模式,VCC1 连接到备用电源,在VCC2主电源失效时保持时间和日期数据.

三.参考电路

在这里插入图片描述
DS1302芯片基本电路如上图,其中Y2为32.768k外部晶振,为芯片提供时钟源;P2为备用电池,以保证在主电源掉电后,芯片仍可继续运行;D1为二极管,保证电压的单向导通,防止主电源电压过高烧坏备用电池;R6为上拉电阻,增强信号传输的稳定性。

四.控制程序
1.时钟数据的读写地址

在这里插入图片描述
如上图,为DS1302芯片的时钟数据的读和写的地址,也就是说要实现对芯片控制,就是往这些地址上写入或读出数据。其中:
读地址为0x81(秒), 0x83(分), 0x85(时), 0x87(日), 0x89(月), 0x8b(星期), 0x8d(年);
写地址为0x80(秒), 0x82(分), 0x84(时), 0x86(日), 0x88(月), 0x8a(星期), 0x8c(年)

2.控制时序

DS1302控制软件最基本的操作为写函数和读函数,其次就是实现初始化函数。

(1)读时序

在这里插入图片描述

/*******************************************************************************
* 函数功能		   : 读取一个地址的数据
*******************************************************************************/
uchar Ds1302Read(uchar addr)
{
	uchar n,dat,dat1;
	RST = 0;
	_nop_();

	SCLK = 0;//先将SCLK置低电平。
	_nop_();
	RST = 1;//然后将RST(CE)置高电平。
	_nop_();

	for(n=0; n<8; n++)//开始传送八位地址命令
	{
		DSIO = addr & 0x01;//数据从低位开始传送
		addr >>= 1;
		SCLK = 1;//数据在上升沿时,DS1302读取数据
		_nop_();
		SCLK = 0;//DS1302下降沿时,放置数据
		_nop_();
	}
	_nop_();
	for(n=0; n<8; n++)//读取8位数据
	{
		dat1 = DSIO;//从最低位开始接收
		dat = (dat>>1) | (dat1<<7);
		SCLK = 1;
		_nop_();
		SCLK = 0;//DS1302下降沿时,放置数据
		_nop_();
	}

	RST = 0;
	_nop_();	//以下为DS1302复位的稳定时间,必须的。
	SCLK = 1;
	_nop_();
	DSIO = 0;
	_nop_();
	DSIO = 1;
	_nop_();
	return dat;	
}
(2)写时序

在这里插入图片描述

/*******************************************************************************
* 函数功能		   : 向DS1302命令(地址+数据)
*******************************************************************************/
void Ds1302Write(uchar addr, uchar dat)
{
	uchar n;
	RST = 0;
	_nop_();
	SCLK = 0;//先将SCLK置低电平。
	_nop_();
	RST = 1; //然后将RST(CE)置高电平。
	_nop_();

	for (n=0; n<8; n++)//开始传送八位地址命令
	{
		DSIO = addr & 0x01;//数据从低位开始传送
		addr >>= 1;
		SCLK = 1;//数据在上升沿时,DS1302读取数据
		_nop_();
		SCLK = 0;
		_nop_();
	}
	for (n=0; n<8; n++)//写入8位数据
	{
		DSIO = dat & 0x01;
		dat >>= 1;
		SCLK = 1;//数据在上升沿时,DS1302读取数据
		_nop_();
		SCLK = 0;
		_nop_();	
	}	
		 
	RST = 0;//传送数据结束
	_nop_();
}
(3)初始化
/*******************************************************************************
* 函数功能		   : 初始化DS1302.
*******************************************************************************/
void Ds1302Init()
{
	uchar n;
	Ds1302Write(0x8E,0X00);		 //禁止写保护,就是关闭写保护功能
	for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
	{
		Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);	
	}
	Ds1302Write(0x8E,0x80);		 //打开写保护功能
}
3.参考例程

实现了DS1302的驱动程序,接下来就可以实现DS1302的报时功能了。

//---DS1302写入和读取时分秒的地址命令---//
//---秒分时日月周年 最低位读写位;-------//
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; 
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};

//---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
//---存储顺序是秒分时日月周年,存储格式是用BCD码---//
uchar TIME[7] = {0, 0, 0x12, 0x01, 0x01, 0x02, 0x13};

/*******************************************************************************
* 函数功能		   : 读取时钟信息
*******************************************************************************/
void Ds1302ReadTime()
{
	uchar n;
	for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
	{
		TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
	}	
}

void main()
{
	LcdInit();
	Ds1302Init();
	while(1)
	{	
		Ds1302ReadTime();       //读取此时的时间
		LcdDisplay();	               //显示时间
	}
	
}

如需DS1302相关资料及例程, 请关注公众号,首页回复DS1302获取资料
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时钟芯片DS1302的原理及使用 的相关文章

  • JS 数组去重复数据、处理数组数据

    需求 去除数组里id重复的对象 let arr id 1 name zhang id 1 name li id 2 name he id 2 name zhao id 2 name zhao id 3 name liu name li id
  • Web端报错

    Chunk vendors 2a8c602b js 48混合内容 位于 https 3323 sfdy13168 com goodsManage 的页面通过HTTPS加载 但请求了不安全的XMLHttpRequest端点 http 110
  • nacos配置文件优先级

    1 通过工程的应用名字找到德配置文件的优先级最高 比如content api工程功程对应的content api dev yaml文件是最先的优先级 2 扩展配置 项目中会依赖其他模块的配置文件所依赖的nacos配置 的优先级其次 举例 c
  • cuda 安装

    零 修订记录 序号 修订内容 修订时间 1 新增 20210708 2 支持tensorflow 20210715 一 摘要 本文主要介绍cuda 的安装 二 环境信息 一 软件信息 2 1 1 操作系统 root localhost ca

随机推荐

  • 【Java】* 给定一个整数数组 nums 和一个目标值 target, * 请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    leetcode 刷题 数组 题目 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 示例 给定 nums 2 7 11 15 target 9 因为 nums 0
  • openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

    文章目录 openGauss学习笔记 64 openGauss 数据库管理 创建和管理表空间 64 1 背景信息 64 2 注意事项 64 3 操作步骤 64 3 1 创建表空间 64 3 2 在表空间中创建对象 64 3 3 查询表空间
  • git checkout切换到指定commit

    切换分支是 git checkout 最常见的功能 这里不做介绍 今天主要介绍下它在撤销文件改动上的应用 放弃单个文件修改 注意不要忘记中间的 不写就成了检出分支了 git checkout filepathname 放弃所有的文件修改 g
  • 值得推荐的C/C++框架和库,包含很多开源项目 (真的很强大)

    值得学习的C语言开源项目 1 Webbench Webbench是一个在linux下使用的非常简单的网站压测工具 它使用fork 模拟多个客户端同时访问我们设定的URL 测试网站在压力下工作的性能 最多可以模拟3万个并发连接去测试网站的负载
  • mysql分组统计占比/百分比

    需求 统计当前数据库user tasks表中 不同status字段值对应的记录条数及占比 sql语句 SELECT status number concat round number total 100 00 2 percent FROM
  • Week 2 Git &Github 5: Amending commits

    git commit amend overwirte 上一次commit 用这个命令的前提是只能对本地的commit进行这样的操作 不要在跟他人公用仓库时使用这个操作 容易出现错误 使用案例 win10通过左下角windows图标 右键打开
  • 量化投资学习-17:庄家和主力为啥要在牛市到顶后砸盘?

    一直很奇怪 为啥庄家和主力要留一小部分筹码在牛市的顶部砸盘 你赚完自己的钱 走人就是了 走人之后 让散户自己玩不就得了 为啥要做这种损人不利己的事情呢 砸盘是要牺牲砸盘筹码的利益的 不理解这一点 是因为格局不够大 这是散户的眼光局限性所决定
  • 复现贪吃蛇程序——吃食物增加长度(最后一篇)

    本节便是贪吃蛇程序的最终部分 实现吃食物增加长度的功能 当二维数组canvas High Width 的元素值为 2时输出食物数值 F 其实现思路和3 4 2节中小蛇的移动类似 只需保持原蛇尾 不将最大值变为0即可 先奉上完整的代码 inc
  • 3个珍藏已久的资源网站,个个都很厉害,赶快私藏起来吧

    现在想要找到好的资源真的是难上加难了 拥有资源即拥有财富 今天小编就来给大家分享几个优质的资源网站 让你从此以后找资源不发愁 1 爱资料工具 这个网站是一个小工具合集的网站 虽说它页面布局有点混乱 但是这完全不影响它的实用性 包括开发工具
  • python爬虫股票数据分析判断股票好坏_学 Python 爬虫:爬取股票信息

    分析 打开 Chrome 的开发者模式 将股票代码一个一个选出来吧 我们可以将所有的股票代码存放在一个列表中 剩下的就是找一个网站 循环的去将每一只股票的数据取出来咯 同花顺 想必各位聪明的同学已经发现了 000001 就是股票代码 我们接
  • Git中的Sign Off功能是什么?

    Git中的Sign Off功能有什么意义 git commit signoff 我什么时候应该使用它 如果有的话 1楼 签名是提交消息末尾的一行 用于证明谁是提交的作者 其主要目的是改善对谁做了什么的追踪 尤其是补丁 提交示例 Add te
  • Ubuntu 15 安装Zsh与oh-my-zsh

    一 前言 Zsh和bash一样 是一种Unix shell 但大多数Linux发行版本都默认使用bash shell 但Zsh有强大的自动补全参数 文件名 等功能和强大的自定义配置功能 oh my zsh是基于zsh的功能做了一个扩展 方便
  • 数据结构--顺序表,栈的实现

    顺序表 顺序表是在计算机内存中以数组的形式保存的线性表 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素 使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 即通过数据元素物理存储的相邻关系来反映数据元素
  • vmware创建的虚拟机无法连接外网

    在我本机中使用vmware创建虚拟机后 安装 docker 时使用wget 命令下载docker的安装文件 报错找不到资源 然后通过ping www baidu com 发现也ping不通 经过一番折腾可以访问外网了 将步骤记录下来 1 设
  • vue-cli2 ,区分开发环境,测试环境,生成环境的方法

    项目背景 为了适应vue cli2环境搭建需求 需要动态配置开发 测试 生产三种对应域名及其及打包命令 使用cross env可以让配置环境更加清晰明了还好管理 1 安装 cross env npm install save dev cro
  • arccotx图像在matlab,反三角函数图像与性质是什么?

    01 反三角函数是反正弦arcsinx 反余弦arccosx 反正切arctanx 反余切arccotx 反正割arcsecx 反余割arccscx这些函数的统称 各自表示其反正弦 反余弦 反正切 反余切 反正割 反余割为x的角 三角函数的
  • 2021第十四届全国大学生信息安全竞赛WP(CISCN)-- pwn部分

    CISCN 2021 WP 概述 ciscn 2021 lonelywolf ciscn 2021 pwny 第一种利用方式 第二种利用方式 ciscn 2021 silverwolf ciscn 2021 game 总结 概述 作为学习不
  • PeopleSoft PeopleTools Meta-Tables

    This is an attempt to list PeopleSoft meta tables along with some kind of description for every table The list will be b
  • 手把手教你使用vue2搭建微前端micro-app

    简述 本文主要讲述新手小白怎么搭建micro app 几乎是每一步都有截图说明 上手应该很简单 研究背景 这段时间在网上找了很多有关微前端相关的知识 起初本来是想着先搭建一个single spa 但是奈何网上能找到的内容都是千篇一律 我也是
  • 时钟芯片DS1302的原理及使用

    一 描述 DS1302时钟芯片是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片 它可以对年 月 日 周 时 分 秒进行计时 且具有闰年补偿等多种功能 DS1302芯片包含一个用于存储实时时钟 日历的 31 字节的静态