技术文档

ds1302 51单片机 教你玩单片机之DS1302

小编 2024-11-24 技术文档 23 0

教你玩单片机之DS1302

以下所有内容仅适合新手,大神请勿介意哈,如有错误,麻烦大家指正,不喜勿喷。

DS1302简介

DS1302是一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。 下图为DS1302的引脚功能图:

原理图

DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。第二个字节就是要读或写的数据了。

单字节读

只有在SCLK为低电平时,才能将CE置为高电平。所以在进行操作之前先将SCLK置低电平,然后将CE置为高电平,接着开始在IO上面放入要传送的电平信号,然后跳变SCLK。数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上

单字节写

只有在SCLK为低电平时,才能将RST置为高电平。说以在进行操作之前先将SCLK置低电平,然后将RST置为高电平,开始在IO上面放入要传送的电平信号,然后跳变SCLK。数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上

DS1302的时钟寄存器

时钟/日历包含在7个寄存器中,数据在时钟/日历寄存器中是二进制编码的十进制格式存储的,也就是常说的BCD码存储的。

时钟寄存器的第8个字节是写保护寄存器。当WP为“1”的时候是开启写保护,这个时候是禁止对DS1302进行写操作的。当WP为“0”的时候是关闭写保护,这个时候才能对DS1302进行写操作。

因为万年历程序过长,所以,需要看程序的朋友,可以进入我的主页查看文章:《单片机之DS1302万年历实验程序》

原创|DS 1302时钟芯片的51单片机程序设计

今天我们来讲的是时钟芯片DS1302.在之前的文章中已经简单介绍过这块芯片的原理,在此我们主要讲的是程序设计部分。关于DS1302的一个简介大家可以自行百度,在此小代就不做过多的说明。

一、 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单元,本文我们只对和时间相关的寄存器做介绍。

具体请看下表

DS102芯片内部寄存器

在以上表格中需注意:

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

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

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

DS1302时序图

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

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

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

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

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

二、DS1302的接口电路

DS1302接口电路

三、DS1302的C51程序设计

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

DS1302初始化函数

DS1302读操作函数

DS1302写操作函数

DS1302写数据到某个地址函数

DS1302读某地址数据函数

相关问答

51单片机 简单电子时钟程序,通过按钮设置时间,并且通过 DS1302 ...

那DS1302不是寄存时间,就是一片时钟芯片,它就完成时钟计时的,有时间和日期的。...调整之后,楼主是否把时间又写进1302了呢,差不多就重新调用一次1302初始化有用...

单片机 控制的 ds1302 -ZOL问答

ds1302是一块高性能芯片,它的内部有31个寄存器,具有闰年自动补充功能,至于它的原理,你去查找相关资料,.它是独立运行的,它不会自动传数据给单片机,必须由单片机...

求一个 51单片机 定时闹钟程序。要C语言。能够调时间 - hL0lQS...

P0=dispcode[hour10];//显示时的十位2113delay(1);P2=0x7f;P0=dispcode[hour1];//显示时的个位delay(1);}voidmain(){uns...

在proteus中 ds1302 内部的ram如何显示?

在Proteus仿真软件中,DS1302实时时钟芯片内部的RAM可以通过下列步骤进行显示:1.打开Proteus软件并加载你的电路图。2.在元件库中搜索并添加DS1302实时时钟...

单片机 数字钟毕业中期检查表中的一个问题 - 沈禾欣子 的回答...

你问什么问题??淮安信息职5261业技术学院综合毕业实践说明4102书(论文1653)2009-2010学年系专业摘要:数字电子时钟电路设计系统,以AT89C51单片机为...

怎样保持 单片机 的断电后的时间?

1.对于较老型号的单片机,可外扩串口时钟芯片+纽扣电池的方法,如DS1302+3.6V镉电池。2.8051系列,可外扩并口时钟芯片DS12887,DS12887内含电池,只是并口方式...

单片机 处理速度快慢都与什么有关?

DS1302是RTC芯片,在没有坏的情况下,单片机只从DS1302里面读或写数据,时间的快慢与程序无关,前提是你没有总是在改时间,DS1302正常走时的快慢与晶振及两个校正...

【3V 单片机 制作电子钟(用两节干电池)驱动电路用2节干电池驱...

[最佳回答]1.使用能在1.8~3.3V工作的单片机.2.单片机的工作频率尽量低,降低功耗.3.数码管是很耗电的,建议换成LCD.4.使用DS1302这样的时钟芯片.1.使用能在1.8...

求一个 51单片机 定时闹钟程序。要C语言。能够调时间 - 198***...

我来发一个C语言211351单片机时钟程序,希望5261能帮到你/*程序功能:4102带定时闹铃时钟*//*-------...

晶振的原理及作用?

晶振的工作原理一、什么是晶振?晶振是石英振荡器的简称,英文名为Crystal,它是时钟电路中最重要的部件,它的主要作用是向显卡、网卡、主板等配件的各部...机...

猜你喜欢