- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DS1302时钟C语言编程完整实例
1 DS1302 简介:
DS1302是美国 DALLAS 公司推出的一种高性能、低功耗的实时 时钟芯片,附加31字节静态 RAM,采用 SPI 三线接口与 CPU 进行
同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM
数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与
31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~
5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电 方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部
引脚分配如图1所示及内部结构如图2所示。DS1302用于数据记录, 特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该
数据的时间同时记录,因此广泛应用于测量系统中。
图1 DS1302的外部引脚分配
图2 DS1302的内部结构
各引脚的功能为:
Vcc1:主电源;Vcc2:备份电源。当 Vcc2Vcc1+0.2V 时, 由 Vcc2向 DS1302供电,当 Vcc2 Vcc1时,由 Vcc1向 DS1302供电。
SCLK:串行时钟,输入,控制数据的输入与输出;
I/O:三线接口时的双向数据线;
CE:输入信号,在读、写数据期间,必须为高。该引脚有两 个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,
CE 提供结束单字节或多字节数据传输的方法。
DS1302有下列几组寄存器:
① DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器
(读时81h~8Dh,写时80h~8Ch),存放的数据格式为 BCD 码形式, 如图3所示。
图 3 DS1302有关日历、时间的寄存器 小时寄存器(85h、84h)的位7用于定义 DS1302是运行于12小时 模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,
位5是 ,当为1时,表示 PM。在24小时模式时,位5是第二个10小时
位。
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该 位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为
0时,时钟开始运行。 控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置
为0。在任何的对时钟和 RAM 的写操作之前,WP 位必须为0。当
WP 位为1时,写保护位防止对任一寄存器的写操作。
②DS1302有关 RAM 的地址
DS1302中附加31字节静态 RAM 的地址如图4所示。
图4
③ DS1302的工作模式寄存器
所谓突发模式是指一次传送多个字节的时钟信号和 RAM 数据。 突发模式寄存器如图5所示。
图5
④此外,DS1302还有充电寄存器等。
2 读写时序说明
DS1302是 SPI 总线驱动方式。它不仅要向寄存器写入控制字, 还需要读取相应寄存器的数据。
要想与 DS1302通信,首先要先了解 DS1302的控制字。DS1302
的控制字如图6。
图6 控制字(即地址及命令字节)
控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把 数据写入到 DS1302中。
位6:如果为0,则表示存取日历时钟数据,为1表示存取 RAM 数 据;
位5至位1(A4~A0):指示操作单元的地址;
位0(最低有效位):如为0,表示要进行写操作,为1表示进行读 操作。
控制字总是从最低位开始输出。在控制字指令输入后的下一个
SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从最低位(0 位)开始。同样,在紧跟8位的控制字指令后的下一个 SCLK 脉冲的 下降沿,读出 DS1302的数据,读出的数据也是从最低位到最高位。 数据读写时序如图7 。
图7 数据读写时序
具体操作见驱动程序。
3 电路原理图:
电路原理图如图8,DS1302与单片机的连接也仅需要3条线:CE 引脚、
SCLK 串行时钟引脚、I/O 串行数据引脚,Vcc2为备用电源,外接
32.768kHz 晶振,为芯片提供计时脉冲。
图8
以上部分是我拷贝别人的,在此我要感谢他,后面的部分全部是我自己写的,经过调试,系统运行稳定。
本来是不准备拷贝的,但考虑读者可能会读不懂程序,所以我才将核心器件的通信协议拿来给大家看看,当初老师叫我随便用C语言编写个单片机程序,于是我就找了个DS1302时钟的程序,写的有点长,可能是我第一次经验不够吧。
#include reg51.h
#include stdio.h
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x7f};//
文档评论(0)