一看就会!DS1302实时时钟原理和程序

2023-05-16

DS1302介绍

一款高性能、低功耗的日历时钟
DS1302是一种串行接口的实时时钟,内部有可编程的日历时钟和31个字节的静态RAM,可以自动进行闰年补偿
工作电压范围宽(2.5V~5.5V),还有对备用电池进行涓流充电功能,可有效延长备用电池的使用寿命
DS1302用于数据记录,能实现数据与该数据出现的时间同时记录,因此应用的广

DS1302引脚介绍

在这里插入图片描述

VCC1主电源
VCC2备用电源,当VCC2大于VCC1 + 0.2V时,由VCC2向DS1302供电否则由VCC1向DS1302供电
SCLK串行时钟输入端,控制数据输入和输出
I/O双向输入线
RST使能端,RST为高时允许读写DS1302数据,为低时禁止读写
X1、X2外接32.768KHZ圆形晶振,给时钟芯片提供工作频率

DS1302寄存器

控制寄存器
在这里插入图片描述
读写寄存器的数据是BCD码(8421型BCD码)
秒寄存器(81H、80H)
bit7定义为时钟暂停标志(CH)
当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态
当该位置为0时,时钟开始运行
小时寄存器(85H、84H)
bit7用于定义DS1302是运行于12小时模式还是24小时模式,
当为1时,现在12小时模式,此时bit5为AM/PM位
在24小时模式时,此位为小时数据位
控制寄存器(8FH、8EH)
bit7是写保护位(WP),其他7位均为0,
在任何对时钟或RAM读写操作之前,WP位必须为0。当WP位为1时,不能对任何时钟日历寄存器或RAM进行写操作。

DS1302中附加31字节静态RAM的地址

在这里插入图片描述

DS1302突发模式配置寄存器

突发模式指一次传送多个字节的时钟信号或RAM数据
在这里插入图片描述

DS1302通信时序

数据的传输是从最低位开始(BIT0)。数据是以位(BIT)为单位依次写入或读出,读字节数据操作中SCLK上升沿时执行写入数据,下降沿时读出数据
读一字节时序
在这里插入图片描述
RST端(图中的CE)从低到高的一个上升沿开始允许读数据,拉低RST端则禁止读写数据;
开始的8个SCLK周期,写命令字节,数据的后8个SCLK周期读出数据。
写一字节时序
在这里插入图片描述
RST端(图中的CE)从低到高的一个上升沿开始允许写数据,拉低RST端则禁止读写数据;
开始的8个SCLK周期,写命令字节,数据的后8个SCLK周期写入数据

#include<reg52.h>

sbit TSCLK = P1^0;//串行时钟输入端
sbit TIO   = P1^1;//双向输入线(数据线)
sbit TRST  = P1^2;//使能端

#define uchar signed char

void write_DS1302(uchar cmd,uchar dat)//写一个字节
{
	uchar i ;
	TRST = 0;//拉低使能端
	TSCLK = 0;//拉低数据总线
	TRST = 1;//使能端产生上升沿
	for(i = 0; i < 8; i ++)//写命令
	{
		TSCLK = 0;
		TIO = cmd & 0x01;//最低位先传
		TSCLK = 1;//数据总线产生上升沿,数据被DS1302读走
		cmd >>= 1;//右移1位
	}	
	for(i = 0; i < 8;i ++)//写数据
	{
		TSCLK = 0;
		TIO = dat & 0x01;//最低位先传
		TSCLK = 1;//数据总线产生上升沿,数据被DS1302读走
		dat >>= 1;//右移1位
	}
	TRST = 0;//拉低使能端,关闭读写功能
}

uchar read_DS1302(uchar cmd)//读取数据
{
	uchar i,dat;
	TRST = 0;//拉低使能端
	TSCLK = 0;//拉低数据总线
	TRST = 1;//使能端产生上升沿
	for(i = 0; i < 8; i ++)//传命令
	{
		TSCLK = 0;
		TIO = cmd & 0x01;//最低位先传
		TSCLK = 1;//数据总线产生上升沿,数据被DS1302读走
		cmd >>= 1;//右移1位
	}
	for(i = 0;i < 8; i ++)//读数据
	{
		TSCLK = 0;//拉低数据总线
		dat >>= 1;
		if(TIO)
		{
			dat |= 0x80;
		}
		TSCLK = 1;//数据总线产生上升沿,数据被DS1302读走
	}
	TRST = 0;//拉低使能端,关闭读写功能
	return dat;
}

uchar dat_to_BCD(uchar dat)//数据转BCD码
{
	uchar dat1,dat2;
	dat1 = dat / 10;
	dat2 = dat % 10;
	dat2 = dat2 + dat1 * 16;
	return dat2;
}

uchar BDD_to_dat(uchar dat)//BCD码转数据
{
	uchar dat1,dat2;
	dat1 = dat /16;
	dat2 = dat % 16;
	dat2 = dat2 + dat1 * 10;
	return dat2;
}

void main()
{
	uchar i;
	uchar sec,min,hour;
	write_DS1302(0x8e,0);//清除写保护
	write_DS1302(0x80,dat_to_BCD(30));//30秒
	write_DS1302(0x82,dat_to_BCD(15));//15分
	write_DS1302(0x84,dat_to_BCD(19));//19时
	write_DS1302(0x8e,0x80);//开写保护
	while(1)
	{
		write_DS1302(0x8e,0);//清除写保护
		sec = BDD_to_dat(read_DS1302(0x81));//读秒寄存器(进行BCD码转换)
		min = BDD_to_dat(read_DS1302(0x83));//读分寄存器
		hour = BDD_to_dat(read_DS1302(0x85));//读时寄存器
		write_DS1302(0x8e,0x80); //开写保护
		for(i = 0; i < 50; i ++)//循环显示时钟
		{
			display(sec,min,hour);//相应的显示函数(本文没有定义)
		}
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一看就会!DS1302实时时钟原理和程序 的相关文章

  • 转:python的socket编程

    python socket编程简介 xff1a python 编写server的步骤 xff1a 1 第一步是创建socket对象 调用socket构造函数 如 xff1a socket 61 socket socket family ty
  • TIME_WAIT连接过多的解决

    netstat n awk 39 tcp 43 43 S NF END for a in S print a S a 39 LAST ACK 1 SYN RECV 164 CLOSE WAIT 3 ESTABLISHED 655 FIN W
  • MySQL更改root密码

    情况一 记得root密码 用SET PASSWORD命令 1 打开终端win 43 r输入cmd回车即可打开 xff1b 2 通过mysql u用户名 p指定root用户登录MySQL xff0c 输入后回车会提示输入密码 3 修改MySQ
  • mac下控制台可以搜索到命令但是vscode显示zsh: command not found:

    记录下吧 困扰几天了 xff0c mac怎么这么难安这些环境变量什么的啊哈哈哈 node npm都是能搜到的 在控制台全局安装了yarn xff0c 控制台可以yarn v命令 xff0c 但是vscode报错zsh command not
  • 1.机器学习sklearn-------聚类

    1 sklearn简介 Scikit learn 也简称 s klearn 是机器学习领域当中最知名的 python 模块之一 sklearn库共分为6大部分 xff0c 分别用于完成分类任务 回归任务 聚类任务 降维任务 模型选择以及数据
  • KEIL编译报错,解决方法汇总

    目录 背景 最近在跟着野火码uCosiii的代码时 xff0c 感觉非常完美 xff0c 结果一编译 xff0c 报了120个莫名其妙的问题 xff0c 下面是踩过的坑 xff0c 一起记录下 xff0c 免得下次又掉进去了 1 编译汇编文
  • “从0开始的FreeRTOS”系列教程第一讲

    大家好 xff0c 这次给大家带来了Freertos的教程 xff0c 这次打算一口气做完一整个系列的教程 xff0c 大概更新频率会是月更 这个系列的教程的主要目的是带大家了解实时系统 real time operating system
  • 我的2013奋发突进

    先简单介绍自己 男 大专学历2012年6月毕业 期间2011 6月 2012 6 算是实习期 正式实习了一年 从2012 6月实习结束后 没打算在原来实习的单位呆着 换了一家公司 一直到2013年的7月末 考虑到种种原因 回归家乡了 技术篇
  • VR 杂想

    什么是VR VR xff08 科学技术 xff09 即VR xff08 Virtual Reality xff0c 即虚拟现实 xff0c 简称VR xff09 xff0c 是由美国VPL公司创建人拉尼尔 xff08 Jaron Lanie
  • 解决rosdep init错误和rosdep update错误以及ros密钥错误

    解决rosdep init错误和rosdep update错误以及ros密钥错误 如果仍无法解决下面所述问题 xff0c 欢迎留言 对于rosdep init错误有以下几种方法 1 更换软件源并更新软件包 sudo apt get upda
  • vscode使用技巧——webpack项目的断点调试

    为了方便调试 xff0c 我研究了一下如何使用vscode进行断点调试 本次尝试已在html template项目中测试通过 安装插件 在vscode的插件商店安装必要的插件 Debugger for Chrome 调整webpack配置
  • apt-get 源和常识

    本文内容 xff1a 1 apt get的源换成阿里或163的 2 atp get的源的常识 一 概述 安装好Ubuntu它自带源是国外的 xff0c 访问较慢 xff0c 经常会出现连接失败的情况 所以建议将它替换为国内的 xff08 如
  • 树莓派、百度DuerOS等RAW格式的镜像浏览、提取文件的方法

    前言 树莓派上装了docker等一堆东西 xff0c 要跑DuerOS的 DuerOS开发套件个人版 http open duer baidu com openduer product idk id 61 personal xff0c 有好
  • 解决Ubuntu可以ping通ip地址,不能ping通域名和浏览器无法上网的问题

    Ubuntu版本18 04 4 主要原因 原本的dns解析不行 要修改为谷歌的域名解析服务器8 8 8 8才行 并且每次关机后就会恢复默认 要添加到开机自启 1 修改配置文件 vim etc NetworkManager NetworkMa
  • Java核心技术卷1读书笔记

    Java核心技术卷1读书笔记 前言Math floorMod 前言 本笔记主要记录学习 JAVA核心技术 卷1 时遇到的问题或者心得 xff0c 若有朋友有更好的学习资源推荐请留言或联系我VX 18439428204 QQ 75107651
  • [前端基础] 浏览器篇

    提供基础用法 xff0c 基础概念引用 MDN W3C xff0c 基础内容做扩展知识 xff0c 可应对面试 xff0c 详细原理及应用需要去官网 GitHub 深入学习 1 常用 BOM 方法 BOM xff08 browser obj
  • STM32 keil5 报错:flash download failed-cortex M3解决方法

    起因 因为之前自己使用的STM32都是使用的F4 xff0c 自己打了一块STM32F1C8T6板子 xff0c 焊好之后 xff0c 打开以前正点原子的例程的时候 xff0c 出现无法烧录的情况 xff0c 总是报这样的错误 xff0c
  • Hadoop实战学习(3)-读取数据库内容

    要读取数据库中的数据 xff0c 首先需要实现一个实体类 xff0c 这个实体类部分映射数据库中要查询的表的字段 且该实体类需要实 现Writable与DBWritable两个接口 xff0c DBWritable的实现类负责查询与写入 x
  • 消失点(灭点、Vanishing Point)

    目录 定义 xff1a 性质 xff1a 消失点分为3种 一条直线的消失点是过摄影中心且平行于该直线的直线与像平面的交点 地面物体的两个消失点的连线为水平线 xff0c 提供地平线的信息 应用 xff1a 计算焦距和图像中心 求像心 求焦距
  • window.performance.timing 字段说明和主要性能指标

    window performance是W3C性能小组引入的新的API xff0c 目前IE9以上的浏览器都支持 字段说明 xff1a connectStart 和 connectEnd 分别代表TCP建立连接和连接成功的时间节点 domCo

随机推荐

  • C++中的private, public, protected

    0 概述 数据隐藏是C 43 43 面向对象编程的重要特征之一 xff0c 它允许我们隐藏对象内部细节即数据成员 xff0c 防止程序的函数直接访问一个类对象的内部表示 数据成员和成员函数 对类成员函数的访问限制由访问修饰符指定 访问修饰符
  • 数据链路层设计要点

    数据链路层保证数据在两台机器间进行可靠 有效的通信 需要考虑传输错误 xff08 检错 纠错等 xff09 延迟等问题 因此 xff0c 其功能可概括为 xff1a 1 向网络层提供一个定义良好的服务接口 xff1b 2 处理传输错误 xf
  • 由NT Service中调用SendInput模拟键盘鼠标事件了解到的

    TODO
  • 远程连接之ssh的使用(日志监控)

    ssh的简介 ssh服务 Secure Shell xff1a SSH 为建立在应用层基础上的安全协议 SSH 是较可靠 xff0c 专为远程登录提供服务 解决的问题 xff1a 对服务器的远程控制 xff0c 远程操作 ssh服务是安全的
  • 基于润和hi3516 dv300开发板,体验鸿蒙3.0 L1小型系统拍照Sample

    背景 xff1a 希望能在润和hi3516 dv300开发板上 xff0c 体验拍照功能 前段时间花了一段精力 xff0c 好不容易在润和hi3516 dv300上烧录了L2系统 xff0c 并跑成功了ArkUI应用 xff0c 详见 xf
  • 集群故障处理之处理思路以及健康状态检查(三十三)

    前言 按照笔者的教程 xff0c 大家应该都能够比较顺畅的完成k8s集群的部署 xff0c 不过由于环境 配置以及对Linux k8s的不了解会导致很多问题 异常和故障 xff0c 这里笔者分享一些处理技巧和思路 xff0c 以及部分常见的
  • ElasticSearch集群日志限制问题

    本文是基于CentOS7的环境下使用rpm包安装进行说明 ELK的默认日志记录会增长很多 xff0c 除ElasticSearch外 xff0c 都会无限增长 xff0c 长时间运行可能带来灾难性的后果 xff08 如 xff1a 节点宕机
  • 集群故障处理之处理思路以及听诊三板斧(三十四)

    前言 本篇主要分享一些处理故障和问题绝招 xff0c 比如听诊三板斧 xff1a 1 xff09 查看日志 2 xff09 查看资源详情和事件 3 xff09 查看资源配置 xff08 YAML xff09 如果还是不太好分析 xff0c
  • maven打包根据指定参数,自定义war包名称

    首先定义如下参数 xff1a lt profile gt lt id gt front lt id gt lt properties gt lt rp build warname gt front lt rp build warname g
  • 银联周雍恺:开放交换机组网技术和前沿进展

    在第三届未来网络发展大会SDN NFV技术与应用创新分论坛上中国银联电子商务与电子支付国家工程实验室周雍恺博士 xff0c 发表了主题为 开放交换机组网技术和前沿进展 的主题演讲 本次演讲内容主要有三大部分的内容 xff0c 第一部分是开放
  • 华为面试题

    http topic csdn net u 20080703 13 62ce76ec fba4 45c6 95fb 625fcfaec73e html
  • 2014 百度研发工程师笔试题

    一简答题 1osi网络七层 2线程共享方式 3 tcp和udp区别 xff0c 及协议 二 编程题 1给一个数组A 61 a1 xff0c a2 an 列出所有的组合方式 2给定一个数组 xff0c 数组相邻两个数的差的绝对值小于1 xff
  • 2014小米校园招聘笔试题

    1奇偶排序 在一个N个整数数组里面 xff0c 有多个奇数和偶数 xff0c 设计一个排序算法 xff0c 令所有的奇数都在偶数的左边 例如输入a 61 8 4 1 6 7 4 9 6 4 2叉数降维 设计一个算法 xff0c 把一个排序二
  • bootloader详解(转载)

    一 bootloader介绍 bootloader是硬件在加电开机后 xff0c 除BIOS固化程序外最先运行的软件 xff0c 负责载入真正的操作系统 xff0c 可以理解为一个超小型的os 目前在Linux平台中主要有lilo grub
  • 关于LVM管理PVcreate过程中错误Device /dev/sdb not found (or ignored by filtering)

    今天在做环境中一台机器磁盘扩容过程中出现此报错 xff0c 第一次遇到 xff0c 说一下情况 xff1a 1 我的机器中原本有一个LV 500G xff0c 作为nova节点的存储空间 xff0c 空间不够 xff0c 想扩容1T xff
  • DIY一套NAS+私有云盘+下载机

    如果你家里有多台设备需要联网需要娱乐 xff0c 你一定会或多或少遇到设备碎片化带来的烦恼 当然 xff0c 已经有很多厂商包括新晋的小米 360在内的互联网公司做了这个事情 xff0c 给你搞个家庭存储中心 xff0c 基本能解决你的大部
  • SD-WAN三种基础技术架构

    第一类架构 xff1a 叠加网络结构 xff08 On Prem Overlay xff09 xff0c 这是最基本的SD WAN架构 xff0c 初期SD WAN的典型架构 xff0c 适合中小企业小规模快速组网 如图所示 xff1a 简
  • windows共享时出现“指定网络名不再可用”解决办法

    问题 xff1a 同时按住 windows 43 r 弹出运行面板 xff0c 输入 IP xff0c 点击 确定 不能共享 xff0c 提示 指定网络名不再可用 解决方法 xff1a 如果不能访问 xff0c 右键单击计算机 xff0c
  • SD-WAN|跨境网络专线

    随着公司越来越依赖云应用程序 分散的团队和统一通信 xff0c 确保连接性不仅重要 xff0c 而且对任务至关重要 但传统的 WAN 并不总能应对挑战 xff0c 使用公共互联网也不总是可靠或安全的 现在 xff0c 通过 SD WAN 改
  • 一看就会!DS1302实时时钟原理和程序

    DS1302介绍 一款高性能 低功耗的日历时钟 DS1302是一种串行接口的实时时钟 xff0c 内部有可编程的日历时钟和31个字节的静态RAM xff0c 可以自动进行闰年补偿 工作电压范围宽 xff08 2 5V 5 5V xff09