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 charvoid 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);//相应的显示函数(本文没有定义)}}
}

一看就会!DS1302实时时钟原理和程序相关推荐

  1. 关于STM32驱动DS1302实时时钟的一点思考

    关于STM32驱动DS1302实时时钟的一点思考 之前用51驱动过DS1302,没用多久就输出了正确的时间.当时以为这块芯片其实没啥,很简单.但是现在用STM32做项目,用到同样的芯片,以为这有何难, ...

  2. 树莓派基础实验32:DS1302实时时钟模块实验

    一.介绍   现在有很多流行的串行时钟芯片,如DS1302,DS1307,PCF8485等,由于简单的接口,低成本和易用性,他们被广泛应用于电话.传真.便携式仪器等产品领域.在本实验中,我们将使用DS ...

  3. 4.7 51单片机-DS1302 实时时钟芯片

    4.7 DS1302 实时时钟芯片 4.7.1 原理图介绍 图4-7-1 图4-7-2 驱动DS1302之前,实验板上需要将JP595跳线帽和J11跳线帽断开.JP1302跳线帽接上. 4.7.2 D ...

  4. 嵌入式--RTC实时时钟原理及相关库函数功能

    一.RTC实时时钟原理 1.RTC实时时钟是一个独立的定时器,可以提供日期时间或者闹钟的功能.其核心是通过32位可编程计数器RTC_CNT计数来进行时间配置. 2.图1中RTCCLK为RTC时钟源,其 ...

  5. 基于51单片机的DS1302实时时钟

    本讲内容: 介绍DS1302实时时钟芯片基本知识,演示DS1302例程. DS1302实时时钟: DS1302能提供包括秒.分.时.日期.月份和年份信息.闰年可自行调整,可选择12小时制和24小时制, ...

  6. 51单片机学习笔记-8 DS1302实时时钟

    8 DS1302实时时钟 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Gi ...

  7. DS1302实时时钟芯片

    DS1302 是 DALLAS(达拉斯) 公司推出的一款涓流充电时钟芯片, 2001 年 DALLAS 被 MAXIM(美信) 收购,因此我们看到的 DS1302 的数据手册既有 DALLAS 的标志 ...

  8. 51单片机DS1302实时时钟

    一.DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片.它可以对年.月.日.周.时.分.秒进行计时,且具有闰年补偿等多种功能.        RTC( ...

  9. 基于51单片机的DS1302实时时钟程序

    DS1302概述 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片.它可以对年.月.日.周.时.分.秒进行计时,且具有闰年补偿等多种功能. 工作原理 DS1302 是 ...

最新文章

  1. linux core文件的打开和分析
  2. 75的写的自己情感经历(转贴自天涯社区)
  3. 河北移动引入物联网4G专网APN提升交警执法效率
  4. sqlserver 还原到时间点
  5. ABP文档 - Mvc 视图
  6. 剑指offer(刷题21-30)--c++,Python版本
  7. SpringBoot2 整合 AXIS2 服务端和客户端
  8. CMake和Make——make makefile cmake qmake都是什么,有什么区别?
  9. kafka 消费者API操作入门
  10. linux内存分段管理,Linux內存管理之分段機制
  11. Mac电脑专业音乐制作Logic Pro X中文
  12. 跨境B2B电商市场血雨腥风,供应链管理系统成争夺焦点
  13. 有道智云应用ID应用密钥审请
  14. 2022年5月22日-Taylor级数的python实验
  15. springboot项目部署 + vue项目部署
  16. 胡巴动态表情包 捉妖记胡巴QQ表情无水印下载
  17. E - Obstacle Course的详细解答
  18. 多时点DID平行趋势检验
  19. linux串口设备配置方法(固定ID)
  20. Excel2002制作自动记录考勤表(转)

热门文章

  1. 用chatgpt做ppt
  2. 从高德地图获取城市公交线路+站点
  3. 【已解决】VS code源代码控制器显示5k+的修改文件
  4. Linux下的java运行
  5. Scratch软件编程等级考试三级——20200913
  6. python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)cmd复制文件命令使用
  7. php微信二维码签到墙互动,微久信微信墙2017全新版本教程第二篇:微信签到/扫码3D签到/微信手绘签到...
  8. sort() sorted()
  9. 三角公式以及常见关系
  10. 安卓的SoundPool(音效池)播放声音(及具体参数解析)