[资料分享]

基于DS1307的可调实时时钟系统设计

[复制链接]
463|1
手机看帖
扫描二维码
随时随地手机跟帖
Violin11|  楼主 | 2018-9-29 12:48 | 显示全部楼层 |阅读模式
本帖最后由 Violin11 于 2018-9-29 12:49 编辑

基于DS1307的可调实时时钟系统设计

利用实时时钟芯片 DS1307 设计一个能够调节时间的实时时钟。 介绍采用 I2C 总线接口实时时钟芯片 DS1307 进行准确定时的设计原理, 提出实时时钟芯片 DS1307 与单片机接口电路的设计方法,同时给出几个典型程序实例,通过 Proteus 软件进行仿真实现。


先来说说实时时钟DS1307的使用

DS1307 是一款十分常用的实时时钟芯片,它可以记录年、月、日、时、分、秒等信息,提供至2100年的记录。可使用电池供电,也就是说,即使Arduino 在断电状态下,时钟芯片仍然是在运行的。它使用十分常用的两线式串行总线(I2C),只要两根线即可和Arduino 通信。


接线图:

o4YBAFpq66eAHvE4AALcwLCJhaE234_副本.png

电控单元的时钟基准通常可利用 CPU 内部定时器作为时钟基准,并通过软件编程和 CPU 时钟中断来构造一个软时钟。 这种方法的优点是无需额外硬件支持,但缺点是时钟的计时精度受 CPU 主晶振以及与其相连的起振电容的影响而无法做到很高, 因此累积误差较大。同时在主电源掉电时为了维持时钟不停摆,系统必须由备用电源给整个 CPU 供电,这将导致功耗增大。


I2C总线虚拟技术

DS1307是一款具有I2C总线接口的实时时钟芯片,要驱动具有I2C总线接口的DS1307芯片,一种办法是选择一款带有I2C总线接口的高档单片机,然而,在很多小型仪器仪表中以及在单片机的教学环境中,使用带有I2C总线接口的高档单片机在经济上是不合算的,在这种情况下,可以采用I2C总线虚拟技术,选用普遍使用的51单片机,利用单片机的通用I/O端口模拟实现I2C总线接口。


硬件接口电路设计

本系统的电路由单片机AT89C51、日历时钟芯片DS1307、独立按键及显示电路组成。


DS1307与AT89C51的接口

为了使AT89C51单片机能够驱动DS1307芯片,本文采用了I2C总线虚拟技术,将单片机P2.6口和P2.7口来虚拟I2C总线接口。I2C总线是同步串行数据传输总线,其内部为双向传输电路,端口输出为开漏结构,故总线上必须有上拉电阻,通常可取5~10kΩ。因单片机P2口内部有上拉电阻,故DS1307芯片的SCL引脚与SDA引脚与单片机接口时,不需再添加上拉电阻。日历时钟芯片DS1307与AT89C51的接口电路如图1所示。


pIYBAFpq686ACrBBAAGByF5Ukfc731.png

时钟显示电路

为了将系统时间实时显示出来,本系统没有采用常用的数码管作为显示方式,而是采用1602LCD液晶实时显示时间,这样电路的设计就会相对简单一些,所用到的I/O口也较少。

时钟调节电路

为了能够及时对时间进行调节,本系统设计了时钟调节电路,由K0、K1、K2三个按键组成,且分别由单片机的P2.0、P2.1和P2.2口控制。其中,K0做为时钟调节的菜单键,第一次按下表示可以调节时间秒,第二次可以调节时间分,第三次按下调节时,第四次按下退出调时菜单,时钟继续开始走动。K1和K2分别是时分秒调节的加减键。在本电路中,根据经验总结,额外添加三个上拉电阻,以保证在没有按键按下时,进入单片机三个I/O口的按键均处于高电平状态,防止干扰产生。时钟调节电路如图所示。


o4YBAFpq6-eAKGvKAABWGgHvxMM449_副本.png



相关帖子

Violin11|  楼主 | 2018-9-29 12:49 | 显示全部楼层
基于DS1307的可调实时时钟系统设计

文档1.pdf

188.04 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

717

主题

1010

帖子

3

粉丝