倒数计时器系统的设计(修改)_第1页
倒数计时器系统的设计(修改)_第2页
倒数计时器系统的设计(修改)_第3页
倒数计时器系统的设计(修改)_第4页
倒数计时器系统的设计(修改)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北科技学院毕业设计(论文) 目 录摘要.1关键词.2前言.51设计要求与方案论证.61.1设计要求.61.2 方案论证61.2.1 方案一 用PCF8563实现户外倒计时系统61.2.2方案二 基GPS的高精度倒计时系统的实现71.2.3 方案三 AT89C51和时钟芯片DS12C887实现倒计时系统813本章小结82 时钟芯片DS12C887.92.1. DS12C887的概述和功能特点.92.2. DS12C887的内部功能102.3 硬件接口电路112.4 本章小结123整体方案设计及工作原理.133.1典型硬件电路原理图.133.2 各模块功能介绍143.2.1 时钟信号产生单元14

2、3.2.2 控制模块153.2.3 显示模块163.3 倒计时转换计算173.4 本章小结174本设计相应部分的软件介绍.184.1总体功能程序实现的流程图. .184.2时钟芯片DS12C887的初始化程序194.3实时时间的读取程序214.4倒计时部分的软件实现原理.224.5 本章小结23 总结.24 参考文献.25 致谢.26.II 摘 要 在实际应用当中,倒数计时器随处可见,比如在香港回归和澳门回归时,大陆同胞以设立倒计时器的方式表示其迫切的心情。在单片机应用系统中,常常需要一个实时时钟供定时,测控之用。单片机中都集成有定时器,配合软件可以作为系统的时间基准,构成一个实时时钟。通常定

3、时器工作在中断方式,因此它将频繁地中断CPU的工作。倒计时系统中采用DS12C887时钟芯片实现其功能。倒计时系统中采用8个LED显示日时分秒。关键词:单片机;时钟芯片;DS12C887;倒计时I前言在实际应用当中,倒计时器随处可见,2008年的 奥运会,即将举行的高考都用到倒计时系统,方便大家准确的知道需要准备的时间,DS12C887是美国达拉斯半导体公司最新推出的时钟芯片,采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,同时它与目前 IBM AT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。采用DS12C887芯片设计的时钟电路勿需任

4、何外围电路并具有良好的微机接口。用作计时器的方法有几种,但是随着单片机应用越来越广泛,倒计时系统采用单片机和时钟芯片制作比较简单且价格合理,工作稳定可靠、响应速度快、实时性强,具有数字显示和工作状态显示功能,是大部分工作人员的首选。电路中采用了AT89C51,4511 DS12C887等,采用共阴型数码管,本设计原理简单,易懂,操作方便,实用性能比较好。倒计时系统是单片机系统的简单应用。它是由硬件和软件相配合使用的,这样可以弥补硬件成本高,结构复杂的特点,提高响应速度。该倒计时系统经济实惠,适用于家庭以及学校。1设计要求与方案论证 实现倒计时系统可以有多种方案,不同的方案要求与实现的功能不一样

5、,本章主要是对几种方案进行论证与比较,选择比较合适的方案来实现基本要求和功能。1.1 设计要求本设计要求用单片机和日历时钟芯片实现一个倒计时系统,能够准确显示出设定时间和当前时间之间的倒计时间值,分别用8个LED数码管显示天数、时、分、秒的数值。1.2 方案论证1.2.1 方案一 用PCF8563实现户外倒计时系统该系统的总体设计方案:整个系统由时钟芯片、中央处理单元、译码、驱动、显示、键盘几部分构成。系统框图如图1.1所示户外倒计时显示LED点阵驱动ULN2003时钟芯片PCF8563时间显示数码管译码MC14513移位LED中央处理器CPU选择74LS145键 盘图12 1方案一的系统设计

6、框图这个方案的实用性较强的倒计时系统,可用于大型节日或活动的倒计时间实现。硬件电路和软件实现都比较完整。但它硬件结构较为复杂,简单的设计制作难以完成该电路,因此不适合选用这个方案来实现。1.2.2方案二 基于GPS的高精度倒计时系统的实现基于GPS的高精度,倒计时牌是卫星测时技术,计算机技术及通信技术三者的有机结合。从功能模块上看,整个系统分为GPS测时接收系统和时钟显示系统,它主要完成以下功能:(1) 定时接收GPS卫星发送的数据并进行识别和缓存;(2)对GPS测时数据进行格式转换,以使编码格式适于接收; (3)在给定时间内刷新DS12C887型时钟的时间; (4)读DS12C887时间,进

7、行倒计时换算并显示。基于GPS的高精度倒计时牌的硬件结构较为简单,它包括控制模块和显示模块两部分。本方案系统的精度高,硬件电路和软件实现都比较简单,能准确显示出倒计时的天数、时、分、秒,具有很强的实用功能。但其硬件电路的实现价格比较高。不适合简单的实验性制作使用,因此不采用这个方案来实现。1.2.3方案三 用 AT89C51和 时钟芯片DS12C887来实现倒计时系统这个方案是用实时时钟芯片DS12C887来产生实时的时间,单片机读取时钟芯片DS12C887的时间后,将其转化为与预设时间的倒计时间。再通过显示部分显示出来,显示部分由8个LED数码管构成,能够显示出倒计时的天数、时、分、秒的数值

8、。其原理框图如图12 3所示数码管显示部分单片机处理单元时钟信号产生单 元图12 3方案三原理框图这个方案的硬件结构和软件实现都较简单,所用硬件价格合理。很适合用较简单的设计制作来实现倒计时系统的功能。所以本设计选用这个方案来 实现目的,本设计将详细论述这一方案的实现过程及原理。1.3 本章小结 该章明确了设计要求与任务,详细阐述了用PCF8563实现户外倒计时系统、基GPS的高精度倒计时系统的实现、用 AT89C51和时钟芯片DS12C887来实现倒计时系统这三种方案的优缺点,对每个方案都进行了说明并比较最终确定了选用AT89C51和时钟芯片DS12C887来实现倒计时系统,这个方案比较适合

9、实验制作软件硬件都比较完整,硬件价格合理,以下章节都对选定的这个方案进行详细的解释和原理说明。2时钟芯片DS12C887 实时时钟芯DS12C887是这个设计方案选用的核心部件之一,本章对DS12C887的芯片做一下简单介绍以及其内部功能有一个简单了解,对它如何与单片机联合工作以及硬件接口电路。2.1 DS12C887的概述和功能:DS12C887是美国达拉斯半导体公司最新推出的时钟芯片,。采用DS12C887芯片设计的时钟电路勿需任何外围电路并具有良好的微机接口。,可广泛用于各种需要较高精度的实时时钟场合中。其主要功能如下:   (1)内含一个锂电池,断电情况运行十年以上

10、不丢失数据。   (2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。   (3)二进制码或BCD码表示时间、日历和定闹。   (4)12小时或24小时制,12小时时钟模式带有PM和AM指导,有夏令时功能。   (5)MOTOROLA和INTEL总线时序选择 (6)SQW方波输出信号(7)有128个RAM单元与软件音响器,其中14个作为字节时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。2.2 DS12C887的内部功能2.2.1 时间

11、、日历和定闹单元时间和日历信息通过读相应的内存字节来获取,时间、日历和定闹通过写相应的内存字节设置或初始化,其字节内容可以是十进制或BCD形式。时间可选择12小时制或24小时制,当选择12小时制时,小时字节搞位为逻辑“1”代表PM。时间、日历和定闹字节是双缓冲的,总是可访问的。每秒钟这10个字节走时1 秒,检查一次定闹条件,如在更新时,读时间和日历可能引起错误。三个字节的定闹字节有两种使用方法。第一种,当定闹时间写入相应时、分、秒定闹单元,在定允许闹位置高的条件下,定闹中断每天准时起动一次。第二种,在三个定闹字节中插入一个或多个不关心码。不关心码是任意从C到FF的16进制数。当小时字节的不关心

12、码位置位时,定闹为小时发生一次由于相线小时和分钟定闹字节置不关心位时,每分钟定闹一次;当三个字节都置不关心位时,每秒中断一次。2.2.2 更新周期DS12C887每秒执行一次更新周期还比较每一定闹字节与相应的时间字节,如果匹配号三个字节都是不关心码,则产生一次定闹中断。(如表222所示) 表222 周期中断速率和输出方波频率RS3RS2RS1RS0周期性中断频率SQW方波频率0000不允许无输出000130.517us32.768khz001061.035us16.384khz0011122.070us8.192khz0100244.141us4.096khz0101488.281us2.04

13、8khz0110976.5625us1.024khz01111.953125ms512hz10003.90625ms256hz10017.8125ms128hz101015.625ms64hz101131.25ms32hz110062.5ms16hz1101125ms8hz1110250ms4hz1111500ms2hz2.3硬件接口电路DS12C887时钟芯片和89C51单微机的接口电路如图231所示。模式选择脚MOT拉地,不选择INTEL时序,选择DS12C887时钟芯片的地址总线及AS端口和89C51单片微机的P0及ALE端直接相联,DS、R/W读写控制线与单片机的RD、WR控制线相连;

14、DS12C887的高位地址由 89C51单片机的P2.7端口来片选,则DS12C887的高8位地址定为7FH,而其低8位地址则由芯片内部各单元的地址来决定(00H3FH); DS12C887的中断输出端IRQ和89C51的外部INT0端相联,给单片机提供中断信号;DS12C887的SQW端口产生方波输出信号。 P0 INT0 ALE RD WR P2.789C51AD0-AD7 SQWIRQASDSR/WCS RESETMOTDS12C887 方波输出 VCC 1K 0.005uf 图231 DS12C887与单片机的硬件连接图2.4本章小结前一章论证并选定了设计方案,在选定的方案中使用了DS

15、12C887这个核心的时钟芯片。该章主要对用到的时钟芯片DS12C887进行了详细阐述,首先从整体上阐述了DS12C887的功能与作用。它是一种高精度、实用性很强的实时时钟芯片;它具有掉电存储功能,并内置充电电路可以掉电后保持运行以及外围设计电路简单等特点接下来介绍了DS12C887内部地址单元的分配情况,以及内部各个单元的作用,主要讲到了该设计方案中使用到的秒、时、分、日、月、年等地址,其中00H-09H单元存放了秒到年的时间值,还介绍了对DS12C887的读写方式和内部四个寄存器A、B、C、D,以及简要介绍了DS12C887的周期中断速率和输出方波频率。最后,以本方案中采用的硬件电路图为例

16、,介绍了DS12C887与单片机的典型硬件连接电路。其中包括了数据读写部分的连接、DS12C887工作方式的选择以及读写方式的设定,还简要介绍了该设计中用到的DS1C2887的几个主要引脚。 3整体方案设计及工作原理前面两章论证了本倒计时系统的设计方案并介绍了所选方案中用到的核心芯片DS12C887的功能和使用。本章将在前面的基础之上,从整体设计思路到各个功能模块的作用和原理进行详细的阐述。3.1典型硬件原理图图311典型硬件原理图DS12C887输出时间信息,经CPU处理后,转换为倒计时时间,并显示出来,所以本设计共可分为三个主要部分:时钟信号产生模块、控制模块、显示模块三个单元。3.2 各

17、模块功能介绍3.2.1 时钟信号产生单元该部分以实时时钟芯片DS12C887为核心,单片机对时钟芯片DS12C887初始化后,这部分将产生高精度的年、月、日、时、分、秒等实时时间信息,如图3.2所示。图321时钟产生模块3.2.2 控制模块图322控制模块这一部分是整个电路的核心模块,包含两个主要的控制部分,如图3.3所示。第一部分主要由AT89C51单片机控制,首先对时钟芯片进行初始化,使之按照预定的时间接着往下计时,输出实时时钟信号。并通过P0端口读取当前时间值,然后将读取的时间信息转化为与设定时间之间的倒计时间值。再通过P1端口的控制,将倒计时间信息送显示模块进行显示。第二部分是由按键控

18、制的时间调整部分;首先可以在控制模块加入一个按键开关,使当前时间和倒计时时间进行相互转换显示,按一下开关显示当前时间,再按一下开关则转换成倒计时时间显示。这样用一个按键控制了倒计时间和当前时间之间的相互转换显示。其次是通过按键实现时间的设定与调整,可以分为对当前时间的设定与调整以及对预设时间的调整。具体的实现方法是:先使用单片机的一个外部中断INT0接一个按键K1,按下K1后进入中断服务子程序,进入中断服务程序后,先对DS12C887的秒、分、小时、日期、月份、年所在的地址单元作清零的操作,在用K3键进行加1操作,调整和设定时间值,秒调整后按下K2键确认调整并将地址指针指向分单元地址,对分进行

19、设定,依次类似可进行其他时间值的调整。3.2.3 显示模块图323显示模块该模块是整个电路的倒计时间显示部分。由8个LED数码管和相应显示驱动芯片4511和74LS138构成,如图3.4所示。要显示8位数值,所以选择用动态按位扫描的方式进行显示.动态显示方式中,LED数码显示器轮流工作,为了防止闪烁现象,每个LED数码管刷新频率必须大于25HZ,即相邻两次点亮时间间隔要小于40ms。4511芯片和74LS138同时工作,4511芯片送入数据给LED然后74LS138通过选通确定哪个数码管显示。位扫描码由P1.4,P1.5,P1.6译码产生。所以选择用动态按位扫描的方式进行显示.8个数码管显示出

20、倒计时时间的天数、时、分、秒的数值。3.3倒计时转换计算具体实现如下,以从现在到2007年07月01日为例来说明其设计,首先由单片机读DS12887的时间单元,并将其存放在以30H为起始的单元中,先读取月份,利用查表的方法计算其下月份到预定时间的天数。然后再利用查表方式判断其月份是31天、30天、28天或29天,然后将查表得到的天数减去读取日期,这样将二个天数相加就会得到实际天数。进行时、分、秒的计算时,首先要把2007年07月01日0点0时0秒转化为2007年06月29日23点59时59秒,这样,直接利用时、分、秒相减就能得到相差的时、分、秒。3.4 本章小结 本章是整个设计方案的整体实现章

21、节,对本方案的具体实现方法从总体再到各个功能模块都作了详细的论述。在本章的首节首先给出了根据系统的设计要求及选用的方案所设计的整体硬件电路原理图。由时间单元、控制单元和显示部分三个模块构成。以实时时钟芯片DS12C887为核心的时间产生模块讲述了该方案中用于计算倒计时的实时时间值的产生来源。控制模块(本系统的核心模块)阐述了该模块如何实现对整个系统的控制,分为对时钟芯片DS12C887的初始化;时间值的读取,倒计时的计算与转换;对显示部分的控制等。显示模块讲述了本系统中显示部分的工作原理,介绍了这个倒计时系统的动态扫描显示等内容。本章的最后就如何将读取的当前时间转化为与预设时间之间的倒计时时间

22、作了详细介绍并给出了转化的具体方法。4本设计相应部分的软件介绍到第三章为止,已经将这个倒计时系统从理论论证再到系统整体硬件电路进行了详细论述,本章将根据该方案的设计思路以及硬件电路图,介绍该倒计时系统的软件实现原理和思路。4.1 总体功能程序实现的流程图主程序流程如图411所示开 始计算倒计时时间显 示 当 前时 间 F0=1INT0 读DS12C887的内容初 始 化显 示Y N 返 回图411主程序流程图4.2主流程图的简要解释说明: 首先对时钟芯片DS12C887进行初始化,设定当前时间值,初始化后时钟芯片将以设定时间为基准开始运行,然后通过89C51的P0口读取DS12C887的当前时

23、间值,然后通过判断是否是中断如果是中断则显示当前时间,如果不是中断则计算倒计时时间并显示出来。4.2.1时钟芯片DS12C887的初始化程序假定采用每天24小时制的非夏令时,时间数据格式为BCD码,初始化时间为2007年05月20 日00时00分00秒,1k方波输出。时钟芯片每一秒种向单片机申请中断一次,一方面让单片机修改一次时钟显示,另一方面也给单片微机系统提供时间基准。 DS12C887时钟芯片的初始化写入程序    MOV DPTR,#7F0AH;寄存器A地址    MOV  A,#70H:DV2DV0=11

24、1,分频复位    MOVX  DPTR,AA             INC  DPTR:到寄存器B地址    MOV  A,#8AH:停止更新,允许更新中断,选BCD码,24小时制    MOVX  DPRT,A    MOV  DPL,#00H,秒单元地址    CLR 

25、A:00秒   MOVX  DPTR,A    MOV DPL,#02H;分单元地址    CLR  A:00分    MOVX DPTR,A    MOV DPL,#04H;时单元地址MOV  A,#09H;9时    MOVX  DPTR,A    MOV  DPL#07H;日单元地址    MOV  A,01H:1日

26、60;   MOVXDPTR,AINCDPTR:到月单元地址MOVA,01H;1月    MOVX  DPTR,A INC  DPTR:到年单元地址    MOV  A,#96H;1996年    MOVX  DPTR,A    INC  DPTR;到寄存器A地址    MOV  A,#26H;DV2DV0=010  RS3RS0=0110 

27、60;  MOVX  DPTR,A:周期中断率为976.5625µs,允许方波输出,频率1kHz    INC  DPTR:到寄存器B    MOV   A,#1AH;每秒更新一次,允许方波输出,24小时制    MOVX  DPTR,A:时钟开始运行4.3 实时时间的读取程序DS12C887的日历时钟通常有中断和查询两种方法读出。但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。 本设计方案采用查

28、询法读取数据:    查询寄存器A的UIP位,当UIP=0时,数据更新结束,可以读出。以下是采用查询方法,从秒至年单元的数据读出后存入89C51内部RAM的3035H单元中,该部分程序流程图和读取程序如图4.2所示。 转到DS12C887的时间单元UIP=0 N计算倒计时记时读取时间数据 Y 显 示图431 读取时间的流程图对DS12C887的时间读取程序(查询法) MOV  DPTR,#7F0AH;寄存器A地址    MOVX  A,DPTR    WAIT:JB  ACC

29、,7,WAIT;UIP=1则等待更新完毕    MOV  DPL,00H;秒地址    MOV  R0,#30H;取目标首地址    MOVX   A,DPTR;取秒数据    MOV  R0,A:送入80C51的内部RAM缓冲区    INC  DPTR:移指针    INC  R04.4 倒计时部分的软件实现原理倒计时流程如图4.3所示。读DS

30、12C887的内容取月加一查表一得天数取月值查表二得每月天数减读取日数天数相加保存取时分秒预定时间减时分秒保存返回图4.3 倒计时转化流程图以从现在到2007年07月01日为例来说明其设计,首先由单片机读DS12C887的时间单元,并将其存放在以30H为起始的单元中,先读取月份,利用查表的方法计算其下月份到预定时间的天数。然后再利用查表方式判断其月份是31天、30天、28天或29天,然后将查表得到的天数减去读取日期,这样将二个天数相加就会得到实际天数。进行时、分、秒的计算时,首先要把2007年07月01日0点0时0秒转化为2007年06月29日23点59时60秒,这样,直接利用时、分、秒相减就

31、能得到相差的时、分、秒。这只是一个简单的固定时间设置,有待于实现的功能是调解预定时间,可以在中断INT1加一个开关,这个开关就可以调解预定时间。按下中断INT1进入中断程序,然后按开关K2后开始进入时间调整,先调整天然后按下K3确认,指针自动指向小时,在按下K2进行调整,重复操作调整好时间后自动跳出中断程序,就修改了预设时间。4.5 本章小结 本章是该倒计时系统设计的软件实现部分。从整体的软件设计流程图到各个主要的子程序部分分别进行讲述。 首先介绍了本系统整体功能实现的流程图,先对时钟芯片DS12C887进行初始化,然后通过89C51的P0口读取DS12C887的当前时间值,再计算出读取时间与

32、预设定时间之间的倒计时时间值并送显示模块显示出来。在时间读取子程序的介绍中,解释对DS12C887读取时间的方法。DS12C887的日历时钟通常有中断和查询两种方法读出,这里以查询法为例作了介绍。最后是本倒计时系统在软件设计中最为关键的部分倒计时时间转化方法。通过实例和程序流程图详细介绍了在软件实现过程中是如何将得到的当前时间转化为与预设时间之间的倒计时的。 总结这个设计主要是单片机的一个应用系统,利用单片机和实时时钟芯片构成了一个简单实用的倒计时系统。通过数码管的显示可以清晰的看出设定时间与现在实时时间之间的倒计时间值。通过这个必要设计的学习和写作过程,使我比较系统的了解和掌握了51系列单片机的基本原理及其应用。在这个系统的制作与测试过程中,遇到的第一个问题是对时钟芯片的初始化问题,因为DS12C887并不需要每次复位后进行初始化,如果每次运行都初始化的话就会不断的重复修改它的基准时间,也就读不出准确的当前时间。因为DS12C887具有掉电存储功能,系统掉电后它可以继续维持时钟的运行状态。所以只对DS12C887进行一次的初始化后再换用不带初始化的程序,只需要读取时间和转换显示就避免了这个问题。遇到的第二个问题是倒计时时间的显示模块,因为要进行单个的显示,显示时一分钟倒计时完后前一位不能自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论