基于FPGA ---ds1302实时时钟显示

ds1302使用手册

  1. 实验目的

使用型号为DS1302的实时时钟芯片完成日期、时间的实时显示。(通过UART发送至上位机显示)。

  1. 实验原理

1.ds1302硬件介绍

(1) 内含一个钮电池,断电情况下运行 10 年以上不丢失数据。

(2) 可计秒、 分、 时、 星期、 日、 月、 年,并有闰年补偿功能,有效年份 为 2100 年以前。

(3) 可选二进制码或 BCD 码表示时间、日历,具有闹钟定时功能。

(4) 可选 12 小时或 24 小时制,12 小时时钟模式带有 PM 和 AM 指示,有夏令时功能。

(5) 简单的3线接口。

1.1硬件结构图

1 DS1302的工作原理

2.1控制字节

DS1302 的控制字符表示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出

2.2输入输出

在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。

2.3寄存器

DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字。

第一个寄存器读写地址分别为0x81和0x80,其最高位CH用来判断系统上一次掉电后时钟是否仍然在正常工作,为1则系统掉电后备用电源没电或其他原因导致的时钟部分未正常工作,为0则掉电后DS1302正常使用备用电源。第六位至第四位表示的是秒数的十位数,最后四位则表示秒数的个位数,表示范围0~59。

第二个寄存器读写地址分别为0x83和0x82,最高位保留,后面七位同第一个寄存器一致,但表示结果是分数。

第三个寄存器读写地址分别为0x85和0x84,最高位为1表示使用12小时制,当选择12小时制时,第五位为0表示AM,为1表示PM,最高位为0时使用24小时制,第五位和第四位一块表示小时的十位数,最后四位则表示小时的个位数。

第四个寄存器读写地址分别为0x87和0x86,第五位和第四位表示日数的十位数,后四位表示日数的个位数。

第五个寄存器读写地址分别为0x89和0x88,第四位表示月份的十位数,后四位表示月份的个位数。

第六个寄存器读写地址分别为0x8B和0x8A,后三位表示星期几。

第七个寄存器读写地址分别为0x8D和0x8C,前四位表示年份的十位数,后四位表示年份的个位数,这里的0~99表示范围2000~2099。

这七个寄存器的数据需要同时读出,才能确保所读数据的准确性。举个不同时读取的例子,读秒数是59,分钟数是0,当下一次读分钟时,分钟变成了1,读出的时间可能是01:59,而实际时间却是00:59,显然是不正确的。为此,DS1302提供了一个burst模式一次性读出这七个寄存器的所有数据。burst模式读写地址分别为0xBF和0xBE,DS1302收到这两个指令后,将时间信息一并存入缓存器,从而保证了时间信息的准确性。

2 DS1302的功能分析及时序分析

DS1302实时时钟芯片,一旦初始化后,它就会随着现实的时钟一直计数。

3.1写操作时序图

下图是 DS1302 芯片写操作的时序图。第一个字节是“访问寄存器的地址”,第二字节是“写数据”。在写操作的时候,都是“上升沿有效”,然而还有一个条件,就是 CE(/RST)信号必须拉高。(数据都是从 LSB 开始发送,亦即是最低位开始至最高位结束)。

需要注意的是在突发模式下,ce保持高,发送额外的扫描周期,直到突发结束。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值