倒数计时器系统的设计修改概要.docx
- 文档编号:5964971
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:149.55KB
倒数计时器系统的设计修改概要.docx
《倒数计时器系统的设计修改概要.docx》由会员分享,可在线阅读,更多相关《倒数计时器系统的设计修改概要.docx(17页珍藏版)》请在冰豆网上搜索。
倒数计时器系统的设计修改概要
摘要......................................................................1
关键词....................................................................2
前言.............................................................................5
1.3本章小结8
3.3倒计时转换计算17
4本设计相应部分的软件介绍.....................................................18
4.5本章小结23
总结..............................................................24
....
摘要
在实际应用当中,倒数计时器随处可见,比如在香港回归和澳门回归时,大陆同胞以设立倒计时器的方式表示其迫切的心情。
在单片机应用系统中,常常需要一个实时时钟供定时,测控之用。
单片机中都集成有定时器,配合软件可以作为系统的时间基准,构成一个实时时钟。
通常定时器工作在中断方式,因此它将频繁地中断CPU的工作。
倒计时系统中采用DS12C887时钟芯片实现其功能。
倒计时系统中采用8个LED显示日时分秒。
关键词:
单片机;时钟芯片;DS12C887;倒计时
前言
在实际应用当中,倒计时器随处可见,2008年的奥运会,即将举行的高考都用到倒计时系统,方便大家准确的知道需要准备的时间,DS12C887是美国达拉斯半导体公司最新推出的时钟芯片,采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,同时它与目前IBMAT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。
采用DS12C887芯片设计的时钟电路勿需任何外围电路并具有良好的微机接口。
用作计时器的方法有几种,但是随着单片机应用越来越广泛,倒计时系统采用单片机和时钟芯片制作比较简单且价格合理,工作稳定可靠、响应速度快、实时性强,具有数字显示和工作状态显示功能,是大部分工作人员的首选。
电路中采用了AT89C51,4511DS12C887等,采用共阴型数码管,本设计原理简单,易懂,操作方便,实用性能比较好。
倒计时系统是单片机系统的简单应用。
它是由硬件和软件相配合使用的,这样可以弥补硬件成本高,结构复杂的特点,提高响应速度。
该倒计时系统经济实惠,适用于家庭以及学校。
1设计要求与方案论证
实现倒计时系统可以有多种方案,不同的方案要求与实现的功能不一样,本章主要是对几种方案进行论证与比较,选择比较合适的方案来实现基本要求和功能。
1.1设计要求
本设计要求用单片机和日历时钟芯片实现一个倒计时系统,能够准确显示出设定时间和当前时间之间的倒计时间值,分别用8个LED数码管显示天数、时、分、秒的数值。
1.2方案论证
1.2.1方案一用PCF8563实现户外倒计时系统
该系统的总体设计方案:
整个系统由时钟芯片、中央处理单元、译码、驱动、显示、键盘几部分构成。
系统框图如图1.1所示
户外倒计时显示LED点阵
驱动ULN2003
时钟芯片PCF8563
时间显示数
码管
译码MC14513
移位LED
中央处理器CPU
选择74LS145
键盘
图1﹣2-1方案一的系统设计框图
这个方案的实用性较强的倒计时系统,可用于大型节日或活动的倒计时间实现。
硬件电路和软件实现都比较完整。
但它硬件结构较为复杂,简单的设计制作难以完成该电路,因此不适合选用这个方案来实现。
1.2.2方案二基于GPS的高精度倒计时系统的实现
基于GPS的高精度,倒计时牌是卫星测时技术,计算机技术及通信技术三者的有机结合。
从功能模块上看,整个系统分为GPS测时接收系统和时钟显示系统,它主要完成以下功能:
(1)定时接收GPS卫星发送的数据并进行识别和缓存;
(2)对GPS测时数据进行格式转换,以使编码格式适于接收;
(3)在给定时间内刷新DS12C887型时钟的时间;
(4)读DS12C887时间,进行倒计时换算并显示。
基于GPS的高精度倒计时牌的硬件结构较为简单,它包括控制模块和显示模块两部分。
本方案系统的精度高,硬件电路和软件实现都比较简单,能准确显示出倒计时的天数、时、分、秒,具有很强的实用功能。
但其硬件电路的实现价格比较高。
不适合简单的实验性制作使用,因此不采用这个方案来实现。
1.2.3方案三用AT89C51和时钟芯片DS12C887来实现倒计时系统
这个方案是用实时时钟芯片DS12C887来产生实时的时间,单片机读取时钟芯片DS12C887的时间后,将其转化为与预设时间的倒计时间。
再通过显示部分显示出来,显示部分由8个LED数码管构成,能够显示出倒计时的天数、时、分、秒的数值。
其原理框图如图1﹣2-3所示
数码管显示部分
单片机处理单元
时钟信号产生单元
图1﹣2-3方案三原理框图
这个方案的硬件结构和软件实现都较简单,所用硬件价格合理。
很适合用较简单的设计制作来实现倒计时系统的功能。
所以本设计选用这个方案来实现目的,本设计将详细论述这一方案的实现过程及原理。
1.3本章小结
该章明确了设计要求与任务,详细阐述了用PCF8563实现户外倒计时系统、基GPS的高精度倒计时系统的实现、用AT89C51和时钟芯片DS12C887来实现倒计时系统这三种方案的优缺点,对每个方案都进行了说明并比较最终确定了选用AT89C51和时钟芯片DS12C887来实现倒计时系统,这个方案比较适合实验制作软件硬件都比较完整,硬件价格合理,以下章节都对选定的这个方案进行详细的解释和原理说明。
2时钟芯片DS12C887
实时时钟芯DS12C887是这个设计方案选用的核心部件之一,本章对DS12C887的芯片做一下简单介绍以及其内部功能有一个简单了解,对它如何与单片机联合工作以及硬件接口电路。
2.1DS12C887的概述和功能:
DS12C887是美国达拉斯半导体公司最新推出的时钟芯片,。
采用DS12C887芯片设计的时钟电路勿需任何外围电路并具有良好的微机接口。
,可广泛用于各种需要较高精度的实时时钟场合中。
其主要功能如下:
(1)内含一个锂电池,断电情况运行十年以上不丢失数据。
(2)计秒、分、时、天、星期、日、月、年,并有闰年补偿功能。
(3)二进制码或BCD码表示时间、日历和定闹。
(4)12小时或24小时制,12小时时钟模式带有PM和AM指导,有夏令时功能。
(5)MOTOROLA和INTEL总线时序选择
(6)SQW方波输出信号
(7)有128个RAM单元与软件音响器,其中14个作为字节时钟和控制寄存器,114字节为通用RAM,所有RAM单元数据都具有掉电保护功能。
2.2DS12C887的内部功能
2.2.1时间、日历和定闹单元
时间和日历信息通过读相应的内存字节来获取,时间、日历和定闹通过写相应的内存字节设置或初始化,其字节内容可以是十进制或BCD形式。
时间可选择12小时制或24小时制,当选择12小时制时,小时字节搞位为逻辑“1”代表PM。
时间、日历和定闹字节是双缓冲的,总是可访问的。
每秒钟这10个字节走时1秒,检查一次定闹条件,如在更新时,读时间和日历可能引起错误。
三个字节的定闹字节有两种使用方法。
第一种,当定闹时间写入相应时、分、秒定闹单元,在定允许闹位置高的条件下,定闹中断每天准时起动一次。
第二种,在三个定闹字节中插入一个或多个不关心码。
不关心码是任意从C到FF的16进制数。
当小时字节的不关心码位置位时,定闹为小时发生一次由于相线小时和分钟定闹字节置不关心位时,每分钟定闹一次;当三个字节都置不关心位时,每秒中断一次。
2.2.2更新周期
DS12C887每秒执行一次更新周期还比较每一定闹字节与相应的时间字节,如果匹配号三个字节都是不关心码,则产生一次定闹中断。
(如表2-2-2所示)
表2-2-2周期中断速率和输出方波频率
RS3
RS2
RS1
RS0
周期性中断频率
SQW方波频率
0
0
0
0
不允许
无输出
0
0
0
1
30.517us
32.768khz
0
0
1
0
61.035us
16.384khz
0
0
1
1
122.070us
8.192khz
0
1
0
0
244.141us
4.096khz
0
1
0
1
488.281us
2.048khz
0
1
1
0
976.5625us
1.024khz
0
1
1
1
1.953125ms
512hz
1
0
0
0
3.90625ms
256hz
1
0
0
1
7.8125ms
128hz
1
0
1
0
15.625ms
64hz
1
0
1
1
31.25ms
32hz
1
1
0
0
62.5ms
16hz
1
1
0
1
125ms
8hz
1
1
1
0
250ms
4hz
1
1
1
1
500ms
2hz
2.3硬件接口电路
DS12C887时钟芯片和89C51单微机的接口电路如图2-3-1所示。
模式选择脚MOT拉地,不选择INTEL时序,选择DS12C887时钟芯片的地址总线及AS端口和89C51单片微机的P0及ALE端直接相联,DS、R/W读写控制线与单片机的RD、WR控制线相连;DS12C887的高位地址由89C51单片机的P2.7端口来片选,则DS12C887的高8位地址定为7FH,而其低8位地址则由芯片内部各单元的地址来决定(00H~3FH);DS12C887的中断输出端IRQ和89C51的外部INT0端相联,给单片机提供中断信号;DS12C887的SQW端口产生方波输出信号。
P0
INT0
ALE
RD
WR
P2.7
89C51
AD0-AD7
SQW
IRQ
AS
DS
R/W
CS
RESET
MOT
DS12C887
方波输出
VCC
1K
0.005uf
图2-3-1DS12C887与单片机的硬件连接图
2.4本章小结
前一章论证并选定了设计方案,在选定的方案中使用了DS12C887这个核心的时钟芯片。
该章主要对用到的时钟芯片DS12C887进行了详细阐述,
首先从整体上阐述了DS12C887的功能与作用。
它是一种高精度、实用性很强的实时时钟芯片;它具有掉电存储功能,并内置充电电路可以掉电后保持运行以及外围设计电路简单等特点
接下来介绍了DS12C887内部地址单元的分配情况,以及内部各个单元的作用,主要讲到了该设计方案中使用到的秒、时、分、日、月、年等地址,其中00H---09H单元存放了秒到年的时间值,还介绍了对DS12C887的读写方式和内部四个寄存器A、B、C、D,以及简要介绍了DS12C887的周期中断速率和输出方波频率。
最后,以本方案中采用的硬件电路图为例,介绍了DS12C887与单片机的典型硬件连接电路。
其中包括了数据读写部分的连接、DS12C887工作方式的选择以及读写方式的设定,还简要介绍了该设计中用到的DS1C2887的几个主要引脚。
3整体方案设计及工作原理
前面两章论证了本倒计时系统的设计方案并介绍了所选方案中用到的核心芯片DS12C887的功能和使用。
本章将在前面的基础之上,从整体设计思路到各个功能模块的作用和原理进行详细的阐述。
3.1典型硬件原理图
图3-1-1典型硬件原理图
DS12C887输出时间信息,经CPU处理后,转换为倒计时时间,并显示出来,所以本设计共可分为三个主要部分:
时钟信号产生模块、控制模块、显示模块三个单元。
3.2各模块功能介绍
3.2.1时钟信号产生单元
该部分以实时时钟芯片DS12C887为核心,单片机对时钟芯片DS12C887初始化后,这部分将产生高精度的年、月、日、时、分、秒等实时时间信息,如图3.2所示。
图3-2-1时钟产生模块
3.2.2控制模块
图3-2-2控制模块
这一部分是整个电路的核心模块,包含两个主要的控制部分,如图3.3所示。
第一部分主要由AT89C51单片机控制,首先对时钟芯片进行初始化,使之按照预定的时间接着往下计时,输出实时时钟信号。
并通过P0端口读取当前时间值,然后将读取的时间信息转化为与设定时间之间的倒计时间值。
再通过P1端口的控制,将倒计时间信息送显示模块进行显示。
第二部分是由按键控制的时间调整部分;首先可以在控制模块加入一个按键开关,使当前时间和倒计时时间进行相互转换显示,按一下开关显示当前时间,再按一下开关则转换成倒计时时间显示。
这样用一个按键控制了倒计时间和当前时间之间的相互转换显示。
其次是通过按键实现时间的设定与调整,可以分为对当前时间的设定与调整以及对预设时间的调整。
具体的实现方法是:
先使用单片机的一个外部中断INT0接一个按键K1,按下K1后进入中断服务子程序,进入中断服务程序后,先对DS12C887的秒、分、小时、日期、月份、年所在的地址单元作清零的操作,在用K3键进行加1操作,调整和设定时间值,秒调整后按下K2键确认调整并将地址指针指向分单元地址,对分进行设定,依次类似可进行其他时间值的调整。
3.2.3显示模块
图3-2-3显示模块
该模块是整个电路的倒计时间显示部分。
由8个LED数码管和相应显示驱动芯片4511和74LS138构成,如图3.4所示。
要显示8位数值,所以选择用动态按位扫描的方式进行显示.动态显示方式中,LED数码显示器轮流工作,为了防止闪烁现象,每个LED数码管刷新频率必须大于25HZ,即相邻两次点亮时间间隔要小于40ms。
4511芯片和74LS138同时工作,4511芯片送入数据给LED然后74LS138通过选通确定哪个数码管显示。
位扫描码由P1.4,P1.5,P1.6译码产生。
所以选择用动态按位扫描的方式进行显示.8个数码管显示出倒计时时间的天数、时、分、秒的数值。
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本章小结
本章是整个设计方案的整体实现章节,对本方案的具体实现方法从总体再到各个功能模块都作了详细的论述。
在本章的首节首先给出了根据系统的设计要求及选用的方案所设计的整体硬件电路原理图。
由时间单元、控制单元和显示部分三个模块构成。
以实时时钟芯片DS12C887为核心的时间产生模块讲述了该方案中用于计算倒计时的实时时间值的产生来源。
控制模块(本系统的核心模块)阐述了该模块如何实现对整个系统的控制,分为对时钟芯片DS12C887的初始化;时间值的读取,倒计时的计算与转换;对显示部分的控制等。
显示模块讲述了本系统中显示部分的工作原理,介绍了这个倒计时系统的动态扫描显示等内容。
本章的最后就如何将读取的当前时间转化为与预设时间之间的倒计时时间作了详细介绍并给出了转化的具体方法。
4本设计相应部分的软件介绍
到第三章为止,已经将这个倒计时系统从理论论证再到系统整体硬件电路进行了详细论述,本章将根据该方案的设计思路以及硬件电路图,介绍该倒计时系统的软件实现原理和思路。
4.1总体功能程序实现的流程图
主程序流程如图4-1-1所示
开始
计算倒计时时间
显示当前时间
F0=1
INT0
读DS12C887的内容
初始化
显示
YN
返回
图4-1-1主程序流程图
4.2主流程图的简要解释说明:
首先对时钟芯片DS12C887进行初始化,设定当前时间值,初始化后时钟芯片将以设定时间为基准开始运行,然后通过89C51的P0口读取DS12C887的当前时间值,然后通过判断是否是中断如果是中断则显示当前时间,如果不是中断则计算倒计时时间并显示出来。
4.2.1时钟芯片DS12C887的初始化程序
假定采用每天24小时制的非夏令时,时间数据格式为BCD码,初始化时间为2007年05月20日00时00分00秒,1k方波输出。
时钟芯片每一秒种向单片机申请中断一次,一方面让单片机修改一次时钟显示,另一方面也给单片微机系统提供时间基准。
DS12C887时钟芯片的初始化写入程序
MOVDPTR,#7F0AH;寄存器A地址
MOV A,#70H:
DV2~DV0=111,分频复位
MOVX @DPTR,AA
INC DPTR:
到寄存器B地址
MOV A,#8AH:
停止更新,允许更新中断,选BCD码,24小时制
MOVX @DPRT,A
MOV DPL,#00H,秒单元地址
CLR A:
00秒
MOVX @DPTR,A
MOVDPL,#02H;分单元地址
CLR A:
00分
MOVX@DPTR,A
MOVDPL,#04H;时单元地址
MOV A,#09H;9时
MOVX @DPTR,A
MOV DPL#07H;日单元地址
MOV A,@01H:
1日
MOVX @DPTR,A
INC DPTR:
到月单元地址
MOV A,#01H;1月
MOVX @DPTR,A
INC DPTR:
到年单元地址
MOV A,#96H;1996年
MOVX @DPTR,A
INC DPTR;到寄存器A地址
MOV A,#26H;DV2~DV0=010 RS3~RS0=0110
MOVX @DPTR,A:
周期中断率为976.5625µs,允许方波输出,频率1kHz
INC DPTR:
到寄存器B
MOV A,#1AH;每秒更新一次,允许方波输出,24小时制
MOVX @DPTR,A:
时钟开始运行
4.3实时时间的读取程序
DS12C887的日历时钟通常有中断和查询两种方法读出。
但在读数据时,首先要判断数据是否更新结束,只有在数据更新结束时数据读出才有效。
本设计方案采用查询法读取数据:
查询寄存器A的UIP位,当UIP=0时,数据更新结束,可以读出。
以下是采用查询方法,从秒至年单元的数据读出后存入89C51内部RAM的30~35H单元中,该部分程序流程图和读取程序如图4.2所示。
转到DS12C887的时间单元
UIP=0
N
计算倒计时记时
读取时间数据
Y
显示
图4-3-1读取时间的流程图
对DS12C887的时间读取程序(查询法)
MOV DPTR,#7F0AH;寄存器A地址
MOVX A,@DPTR
WAIT:
JB ACC,7,WAIT;UIP=1则等待更新完毕
MOV DPL,@00H;秒地址
MOV R0,#30H;取目标首地址
MOVX A,@DPTR;取秒数据
MOV @R0,A:
送入80C51的内部RAM缓冲区
INC DPTR:
移指针
INC R0
4.4倒计时部分的软件实现原理
倒计时流程如图4.3所示。
读DS12C887的内容
取月加一
查表一得天数
取月值
查表二得每月天数
减读取日数
天数相加保存
取时分秒
预定时间减时分秒
保存返回
图4.3倒计时转化流程图
以从现在到2007年07月01日为例来说明其设计,首先由单片机读DS12C887的时间单元,并将其存放在以30H为起始的单元中,先读取月份,利用查表的方法计算其下月份到预定时间的天数。
然后再利用查表方式判断其月份是31天、30天、28天或29天,然后将查表得到的天数减去读取日期,这样将二个天数相加就会得到实际天数。
进行时、分、秒的计算时,首先要把2007年07月01日0点0时0秒转化为2007年06月29日23点59时60秒,这样,直接利用时、分、秒相减就能得到相差的时、分、秒。
这只是一个简单的固定时间设置,有待于实现的功能是调解预定时间,可以在中断INT1加一个开关,这个开关就可以调解预定时间。
按下中断INT1进入中断程序,然后按开关K2后开始进入时间调整,先调整天然后按下K3确认,指针自动指向小时,在按下K2进行调整,重复操作调整好时间后自动跳出中断程序,
就修改了预设时间。
4.5本章小结
本章是该倒计时系统设计的软件实现部分。
从整体的软件设计流程图到各个主要的子程序部分分别进行讲述。
首先介绍了本系统整体功能实现的流程图,先对时钟芯片DS12C887进行初始化,然后通过89C51的P0口读取DS12C887的当前时间值,再计算出读取时间与预设定时间之间的倒计时时间值并送显示模块显示出来。
在时间读取子程序的介绍中,解释对DS12C887读取时间的方法。
DS12C887的日历时钟通常有中断和查询两种方法读出,这里以查询法为例作了介绍。
最后是本倒计时系统在软件设计中最为关键的部分——倒计时时间转化方法。
通过实例和程序流程图详细介绍了在软件实现过程中是如何将得到的当前时间转化为与预设时间之间的倒计时的。
总结
这个设计主要是单片机的一个应用系统,利用单片机和实时时钟芯片构成了一个简单实用的倒计时系统。
通过数码管的显示可以清晰的看出设定时间与现在实时时间之间的倒计时间值。
通过这个必要设计的学习和写作过程,使我比较系统的了解和掌握了51系列单片机的基本原理及其应用。
在这个系统的制作与测试过程中,遇到的第一个问题是对时钟芯片的初始化问题,因为DS12C887并不需要每次复位后进行初始化,如果每次运行都初始化的话就会不断的重复修改它的基准时间,也就读不出准确的当前时间。
因为DS12C887具有掉电存储功能,系统掉电后它可以继续维持时钟的运行状态。
所以只对DS12C887进行一次的初始化后再换用不带初始化的程序,只需要读取时间和转换显示就避免了这个问题。
遇到的第二个问题是倒计时时间的显示模块,因为要进行单个的显示,显示时一分钟倒计时完后前一位不能自动的减一。
这主要是因为对要显示的数进行位操作时处理不当造成的,后来通过设定DS12C887的时间读取方式,使之能直接读出二进制码,再进行倒计时计算和位操作就解决了这个问题。
这个系统的硬件现在已经实现的功能最主要是实现了倒计时时间的计算并准确显示,附加了通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 倒数 计时器 系统 设计 修改 概要
![提示](https://static.bdocx.com/images/bang_tan.gif)