DS1302时钟芯片的51单片机程序设计

控制/MCU

1882人已加入

描述

一、 DS1302时钟芯片的原理

DS1302是美国推出的一片带有RAM的实时时钟芯片,它能对年月日周,时分秒进行技术,具有闰年补偿那功能,动作电压2.5-5.5V,采用三线接口和MCU连接。计时的时钟来源为外接的32.768K晶振产生。三线接口分别为RST、IO和SCLK。RST是复位/片选信号,当RST为高电平是,允许DS1302进行操作,在传送数据过程中RST置为低电平则会终止此次数据的传送,IO变为高阻态。IO为串行数据输入输出端口,SCLK为串行传输的时钟信号线,只有在SCLK为低电平是,才能将RST置为高电平。

DS1302内部有14个和时间相关的寄存器,还有2个控制寄存器,还有31个RAM单元,本文我们只对和时间相关的寄存器做介绍。

具体请看下表

RAM

DS102芯片内部寄存器

在以上表格中需注意:

1、秒寄存器的最高位CH为时钟停止位,为0时振荡器工作,为1是停止。

2、时寄存器的最高位是12小时制和24小时制的选择位,此位为1是12小时制,此时第5位AP=1位下午,AP=0为上午,反之亦然。

DS1302的串行数据传输是从低位开始的,不管是读操作还是写操作。具体看时序图:

RAM

DS1302时序图

我们来总结下如何对DS1302操作:

1)首先要通过8eH将写保护去掉,这样我们才能将日期,时间的初值写时各个寄存器。

2)然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时运行了。

3)将写保护寄存器再写为80H,防止误改写寄存器的值。

4)不断读取80H-8CH的值,将他们转化为十进制后显示出来就可以啦,之前我们说过,DS1302读出的数据是BCD码,所以需要转换一下。

二、DS1302的接口电路

RAM

DS1302接口电路

三、DS1302的C51程序设计

此处提供的程序主要是DS1302芯片的读写操作的驱动程序,完整程序将会在后面的教程里提供。(小代提供的程序保证是源码,可完全运行的源码,将会在视频教程中全部讲解,在此提供图片形式代码,需要请自行动手敲进去,小代不提倡初学直接来复制粘贴)。

RAM

DS1302初始化函数

RAM

DS1302读操作函数

RAM

DS1302写操作函数

RAM

DS1302写数据到某个地址函数

RAM

DS1302读某地址数据函数

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分