找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1692|回复: 0
打印 上一主题 下一主题
收起左侧

DS1302使用手册缩减版

[复制链接]
跳转到指定楼层
楼主
ID:421049 发表于 2019-3-8 20:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DS1302使用手册缩减版,自己整理的,带例程。

  • 特征

实时时钟(RTC)计秒、分、时、日期、月、星期和年,并且带闰年,有效补偿到2100年

宽范围工作电压

2.0V到5.5V,可选工业级温度范围:-40℃到+85℃
二、典型工作电路及外部引脚分布图

                        

三、引脚描述

  • VCC2接5V主电源
  • X1,X2是振荡源,外接32.768kHz晶振6pf电容一起工作。
  • GND电源地
  • RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。
  • I/O为串行数据输入输出端(双向)
  • SCLK为时钟输入端。
  •   VCC1为后备电源。外接3V纽扣电池,在主电源关闭的情况下,也能保持时钟的连续运行。

注:RST、I/O、SCLK视情况需要上拉电阻

  • 寄存器

小时寄存器(85h、84h)的位7用于定义 DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是AM/PM,当为1时,表示 PM。(24小时写入11:00--0x84,0x11;

12小时写入11:00--0x84,0x91;

12小时写入23:00--0x84,0xb1;)

秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为 0时,时钟开始运行。

控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和 RAM 的写操作之前,WP 位必须为0。当 WP 位为1时,写保护位防止对任一寄存器的写操作。

(write_1302(0x8e,0x00)-----禁止写保护,就是关闭写保护功能

write_1302(0x8e,0x00-----打开写保护功能 )



位7:必须是1,如果它为0,则不能把数据写入到 DS1302 中;

位5至位1(A4~A0):指示操作单元的地址;

位6:如果为0,则表示存取日历时钟数据,为1表示存取 RAM 数据;

位0:为0表示要进行写操作,为1表示进行读操作。

  • 读写时序

注:读一个字节,SCLK=1,SCLK=0

写一个字节,SCLK=0,SCLK=1

表中CE为文中的RST;

写入时需要将十进制转换成BCD码

#程序参考#


  1. void write_byte(uchar dat)//写一个字节
  2. {

  3.               ACC=dat;
  4.               RST=1;
  5.               for(a=8;a>0;a--)

  6.               {
  7.                             IO=ACC0;
  8.                             SCLK=0;
  9.                             SCLK=1;
  10.                             ACC=ACC>>1;
  11.               }
  12. }

  13. uchar read_byte()//读一个字节

  14. {

  15.               RST=1;

  16.               for(a=8;a>0;a--)

  17.               {

  18.                             ACC7=IO;
  19.                             SCLK=1;
  20.                             SCLK=0;
  21.                             ACC=ACC>>1;



  22.               }

  23.               return (ACC);

  24. }

  25. //-----------------------------------------------------------------------------------------------------------------------

  26. void write_1302(uchar add,uchar dat)//向1302芯片写数据函数,写入指定地址、数据

  27. {
  28.               RST=0;
  29.               SCLK=0;
  30.               RST=1;
  31.               write_byte(add);  //写入地址
  32.               write_byte(dat);  //写入数据
  33.               SCLK=1;         //视情况决定写不写
  34.               RST=0;
  35. }

  36. uchar read_1302(uchar add)//向1302芯片读数据函数



  37. {
  38.               uchar temp;
  39.               RST=0;
  40.               SCLK=0;
  41.               RST=1;
  42.               write_byte(add);    //读地址
  43.               temp=read_byte();  //读数据
  44.               SCLK=1;           //视情况决定写不写



  45.               RST=0;
  46.               return(temp);
  47. }
复制代码

完整的Word格式文档51黑下载地址:
DS1302使用手册缩减版.docx (328.51 KB, 下载次数: 11)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表