基于ds1302的单片机时钟设计说明

单片机课程设计报告 题 目基于DS1302电子实时时钟 姓 名XXX 同 组 人XXX 班级学号XX 指导老师XXXXX 日 期2011-12-22 目 录 摘要 第一部分题目要求4 第二部分方案论证与选择4 第三部分电路设计与参数选择7 第四部分系统软件设计10 第五部分系统调试与仪器使用12 第六部分测试数据与结果分析18 第七部分使用说明书19 总 结19 摘要 本作品是以89C52单片机为核心,DS1302时钟芯片、数码管做显示器及74LS08与门构成的24小时制单功能电子实时时钟。这种单功能电子实时时钟不仅具有了一般数字钟的基本功能,并且通过两个按钮实现时钟运行与停止功能。如果我们要设置时间,只需在软件程序上改变时钟芯片的初始化程序。在电子产品盛行的今天,像这样的设计我们可以给它更大的发展空间。

第一部分 题目要求 我们设计的这种24小时制功能钟,可以在数码管上显示时、分、秒,并且我们可以通过按钮来控制时钟的运行及停止(按钮KEY1控制时钟停止运行,按钮KEY2控制时钟运行)并采用220V交流电源供电。

第二部分 方案论证与选择 一、 系统功能框图 在现今的这个社会,每天的时间都很紧迫,有些人怕误了时间做自己重要的事,尤其是对现在的学生而言,他们早上要早起,上课要准时,这样都少不了有一个时钟;
早上干早班的人,在外出行的人,工厂里某些要严格按时间标准来控制的产品等等一些我们身边无时无刻都有的,而在这个关键的部分就要用到我们本次设计的时钟来计时了。下面我们就介绍一下本次设计的基本设计框图。

单 片 机 时钟信号产生电路 复位电路 DS1302时钟芯片 数码管显示时、分、秒 两个按钮控制时钟芯片的运行及停止 二、系统主要部分有 1中央处理器电路采用单片机芯片机外围电路构成最小系统。

2时钟信号产生电路时钟芯片 3人机接口电路按键电路、数码管显示电路。

三、方案论证及选择 1.时钟电路部分 方案一利用单片机内部的定时功能来实现时钟的走时,通过计算可知,使定时器每25ms产生一次中断,当产生40次中断后秒单元将加一,以此类推,从而实现时、分、秒的走时,并加以显示。

由于这种方式在断电的情况下将停止走时,且通电后必须再初始化,而且需要调表,故不用此方法。

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

DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。

外部引脚分配 各引脚的功能为 Vcc1备用电源;
Vcc2主电源。当Vcc2Vcc10.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。

SCLK串行时钟,输入;

I/O三线接口时的双向数据线;

CE输入信号,在读、写数据期间,必须为高。该引脚有两个功能第一,CE开始控制字访问移位寄存器的控制逻辑;
其次,CE提供结束单字节或多字节数据传输的方法。

DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式。

所以,最后本设计采用DS1302时钟芯片。

2、显示部分 本设计中,显示部分我们可以采用1602液晶显示器或多个LED数码管显示器,下面我们就对这两个显示进行比较,看看那个显示器更加的适合该设计。

比较一采用LCD1602液晶显示器。在我们的日常生活中,我们对LCD1602液晶显示器并不陌生,在计算器、万用表、电子表及很多家用电子产品中都可以用到它显示的主要是数字、专用符号和图形。特别是在单片机的人机交流界面中用它作为输出器件有显示质量高、采用数字式接口、体积小、重量轻。功耗低等优点。通常按显示方式咳咳分为段式、字符式、点阵式等。但是在用它做显示器的时候,我们要对它进行编程,比如我们要显示一个字符,那么这个时候就复杂了,因为一个字符由6x8或8x8点阵组成,我们这时候既要找到和显示屏幕上某几个位置对应的显示RAM区8字节,还要使每个字节的不同位为“1”,其他的为“0”,为“1”的点亮,为“0”的不亮。这样一来在显示简单的数字上就大大的加大了我们设计的难度,所以,对于一些简单的数字,我们不应采用LCD1602液晶显示来显示。

比较二使用多个LED数码管显示。LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的 2个8数码管 字样了。如显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。再一个,数码管相对于LCD1602液晶显示器来说具有亮度大、接口设计比较容易,价格相对较便宜等优点。且在本次设计中恰好能把我们要显示的数字显示出来。所以,本次设计采用多个LED数码管显示器来显示数字。

3、按键部分 方案一并口输入式的按键控制。它的优点是电路设计简单,但每一管脚对应一个按键,虽然说单片机有多个外部引脚,但本系统采用多个LED数码管显示、时钟芯片等外围电路,他们占用外部接口线较多,要是此时要在单片机上再添加几个按键的话,那么这样单片机的外部引脚就有点供应不了,所以在占用如此多管脚的情况下,该方案是不可取的。

方案二我们可以采用芯片74LS08与门来扩展接口,虽然在该设计中我们只用到二个按钮,但用这个芯片就足可以了。我们采用这种方式只占用1个口线,另外按键去抖动较方便,是一种明智的选择。

第三部分 电路设计与参数选择 一、 单片机最小系统电路设计和元件的选择 根据设计要求和计算简便的原则,我们选择12M的石英晶振、30PF的陶瓷电容、22uF的瓷片电容、10k电阻、5V电源,最小系统图如下 二、数码管显示电路设计 电路如下图 我们这里采用8个数码管来显示时分秒,在单片机的P0引脚上外接上10k的上拉电阻。P0口输出段码,P2口输出位码。

三、DS1302时钟芯片电路设计 部分电路图如下 在这里我们采用32.768kMZ的晶振接在DS1302的X1和X2之间,DS1302的5、6、7引脚分别接在单片机的P1.2、P1.1、P1.0三个引脚上,VCC2接上5V电源,VCC1可以外接电源。

四、按键电路设计 部分电路图如下 这里我们采用74LS08与门芯片来扩展接口,同时,我们在编程时用外部中断0来设计程序,以便更好的实现效果。在按键与单片机13和14引脚之间接上一10k的上拉电阻,电阻上接5V电源。

第四部分 软件设计部分 一、 主程序单元部分。

MAIN 1、定义一个缓冲数据ReadValue 2、DS1302初始化 外部中断设置 从秒寄存器读取数据保存到缓冲数据ReadValue中 key10 key20 DS1302停止运行writeset13020 x80, dat|0 x80 YES NO DS1302可以运行writeset13020 x80, dat|0 x7f YES 将读出的数据转化 调用时、分、秒显示程序 主程序流程图如上所示 在主程序中调用时分秒显示子程序,通过按键来判断DS1302时钟芯片运行还是停止。

二、外部中断部分 判断KEY1是否为0 stoptime1; 判断KEY2是否为0 stoptime0; 用外部中断0来是秒停止或开始计数。

三、 显示程序单元部分。

此系统的显示部分采用的是多个LED数码管显示,主要显示时分秒,内的数据通过输出端口一次输出到显示器上。

时、分、秒显示流程图如下 P2赋位码 P0赋段码 延时1ms 注释该显示大概流程图是这样,但在该程序设计中是把时、分、秒的显示程序分别提出来单独做一个子程序。

四、DS1302时钟芯片判断时钟是否停止流程图 定义一个flag 数据 读寄存器datreadset13020 x81; 写入不保护命令writeset13020 x8e,0 x00; 判断flag是否问为1 DS1302停止计数writeset13020 x80, dat|0 x80; DS1302可以进行计数writeset13020 x80, dat 第五部分 系统调试与仪器使用 一、 系统调试 调试工作分硬件调试和软件调试两部分,调试方法介绍如下 首先,硬件调试主要是先搭建硬件平台,然后利用万用表等工具对电路检测,最后用程序进行功能调试,硬件调试比较费时,需要细心和耐心也需要熟练掌握电路原理。

然后,可以直接应用编辑或仿真软件进行调试,比如单片机C51编辑软件Keil.该软件提供了一个集成开发环境uVision,它包括C编辑、宏编辑、连接器、库管理和一个功能强大的仿真调试器。通过编译。运行,可以检查程序错误。但使用此方法,仍需要十分了解所使用元器件的工作方式和管脚连接方式。软件调试过程中要仔细耐心,即便是要多写一两个字符,都无法编译成功。而有时往往在Keil中编译。运行无错,但烧录到单片机中运行出错,很有可能是编程时管脚或时序编辑得不对。

还有一种方式,即应用仿真软件搭建电路的软件平台,再导入程序进行仿真调试,如果电路出