碧波液压网 欢迎你,游客。 登录 注册

基于DS1302和LM016L的实时时钟设计与仿真

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。
液压导航网

  

  0 引言

  实时时钟芯片 DS1302 的应用越来越广泛,本文介绍一个基于该芯片和字符液晶显示器 LM016L的单片机控制实例,并在 Proteus 平台中进行了系统设计与仿真。系统设计要求如下:

  ( 1) 当开关未合上时,LM016L 分两行分别显示以下内容:

  第一行: “DS1302 RealClock”,第二行: “PleaseSelect! ”

  ( 2) 当开关闭合时,LM016L 分两行分别显示以下内容:

  第一行: “Time: ** - ** - **”,第二行:“Date: ** - ** - ***”

  首行“** - ** - **”代表实时时间“时 - 分- 秒”,由程序指定一个初始时间后,系统能够自动计时,其中小时为 24 进制。第二行的“** - ** -***”代表实时日期的“年 - 月 - 日 星期几”。

  1 系统硬件设计

  系统硬件主要由单片机 AT89C51、字符液晶显示器 LM016L、实时时钟芯片 DS1302 以及电阻和开关组成。DS1302 的 Vcc2 端为主电源,接 +5V 直流源,Vcc1 端为后备电源,可以接 100uF 的电容[1]。

  X1 和 X2 端接 32. 768KHz 晶振。复位端、串行时钟和命令、数据输入端分别接 AT89C51 的 P3. 4、P3. 5和 P3. 6 端,并且通过上拉电阻与电源相连接。LM016L 通过上拉电阻接于 AT89C51 的 P0 口。在Proteus 中设计出系统电路原理图如图 1 所示。

  

  1. 1 DS1302 功能简介

  DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字节静态RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供 2100 年之前的秒、分、时、日、月、年、星期的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 指示决定采用 24或 12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:

  ( 1) RES( 复位) ; ( 2) I/O( 数据线) ; ( 3) SCLK( 串行时钟)[2]。

  1. 2 DS1302 的控制命令及内部寄存器

  命令字节用以启动每个数据的传输。DS1302只有一个字节的控制命令格式,如表 1 所示。

  

  最高位( Bit 7) 必须是 1,如果是 0,不能对DS1302 进行写操作。第 6 位如果为 0,则指定为时钟或日历数据; 如果是 1 则指定为 RAM 数据。第 1~ 5 位指定输入、输出数据的寄存器地址。最低位( Bit 0) 为 0 则指定写操作,为 1 则指定读操作。命令字节最低位先被传送。表 2 是对时钟/日历数据进行读写的控制命令及数据格式对照表。

  

  以表中第一行为例,81H 为控制命令字节,表示要从 DS1302 秒寄存器中读取当前秒数据,数据格式最高位 CH = 0,为振荡器工作允许,CH = 1 为振荡器停止; BIT4 ~ BIT6 为秒数据的十位( BCD 码,最大为 101) ; BIT0 ~ BIT3 为秒数据的个位( BCD 码,最大为 1001) 。当控制命令为 80H 时,表示从单片机向 DS1302 的寄存器中写入秒数据。无论读或写,先传送控制命令,紧接着传送数据,并且都从低位开始传送。表 2 中的以下几行分别为分、时、日、月、星期、年、写保护及涓流充电设置的控制命令及数据格式[3]。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码: 看不清?点击更换

最新评论