基于DS12C887时钟芯片的高精度时钟的设计 精品.docx
《基于DS12C887时钟芯片的高精度时钟的设计 精品.docx》由会员分享,可在线阅读,更多相关《基于DS12C887时钟芯片的高精度时钟的设计 精品.docx(47页珍藏版)》请在冰豆网上搜索。
基于DS12C887时钟芯片的高精度时钟的设计精品
华侨大学厦门工学院
本科生毕业设计(论文)
题目:
基于DS12C887时钟芯片的高精度时钟的设计
姓名:
吴挺
学号:
0902106019
系别:
电气工程
专业:
电气工程及其自动化
年级:
2009
指导教师:
刘晓东
年月日
独创性声明
本毕业设计(论文)是我个人在导师指导下完成的。
文中引用他人研究成果的部分已在标注中说明;其他同志对本设计(论文)的启发和贡献均已在谢辞中体现;其它内容及成果为本人独立完成。
特此声明。
论文作者签名:
日期:
关于论文使用授权的说明
本人完全了解华侨大学厦门工学院有关保留、使用学位论文的规定,即:
学院有权保留送交论文的印刷本、复印件和电子版本,允许论文被查阅和借阅;学院可以公布论文的全部或部分内容,可以采用影印、缩印、数字化或其他复制手段保存论文。
保密的论文在解密后应遵守此规定。
论文作者签名:
指导教师签名:
日期:
基于DS12C887时钟芯片的高精度时钟的设计
摘要
随着社会的发展人们的生活节奏越来越快,每天的工作,学习,休息的时间都安排的很紧,需要一个时钟准确的报时。
人们对时钟的要求越来越高,不仅要求每天的的时间误差小于几毫秒,还要求具有定时闹钟,具有万年历等功能。
传统的日历电子钟元器件多、维修麻烦、误差大、功能更新不方便。
DS12C887时钟芯片能够自动显示年、月、日、时、分、秒等时间信息,同时还具有校时,报时,闹钟等功能。
DS12C887也可以很方便的由软件编程进行功能的调整或增加。
所以设计基于DS12C877时钟芯片的高精度时钟的设计具有十分重要的现实意义和实用价值。
关键词:
DS12C887,时钟芯片,单片机STC89C52,高精度时钟
DesignofhighprecisionclockbasedonclockchipDS12C887
Abstract
Withthedevelopmentofsociety,peopleliferhythmfasterandfaster,aday'swork,studyandresttimearrangementisverytight,needaclocktellthetimeaccurately.Peopleishigherandhigherrequirementfortheclock,everydaynotonlyrequiresthetimeerrorislessthanafewmilliseconds,alsorequiresatimingalarmclock,acalendar,andotherfunctions.Traditionalelectronicclockcalendarcomponents,maintenancetrouble,bigerror,functionmoreupdateisnotconvenient.ChipDS12C887clockautomaticallydisplayyear,month,day,hours,minutesandsecondstimeinformation,butalsowiththeschool,thetime,alarmclock,andotherfunctions.DS12C887canalsobeveryconvenientbythesoftwareprogrammingtoadjustfunctionortoincrease.SothedesignisbasedonDS12C877clockchipdesignofhighprecisionclockhasveryimportantpracticalsignificanceandpracticalvalue.
Keywords:
DS12C887,clockchipmicrocontrollerSTC89C52,high-precisionclock
第1章绪论
1.1研究背景
传统时钟芯片在电源断电时内部的时间芯片就会停止计时,所以需要额外使用一个备用的电源向时钟芯片供电,这样会使系统功耗增大,体积变大。
单一功能定时时钟只提供年,月,日,时,分,秒的时间信息和日历功能,多功能时钟除了提供时间信息和日历功能以外,通常还具有报警,定时,闹钟等功能。
采用单片机STC89C52和时钟日历芯片DS12C887设计并且制作出来的电子钟,一个月的时间里只有1秒内的误差[1],比DS1302,DS1307,PCF8485等的芯片设计出来的时钟更精确[2]
时钟按照工具接口方式不同可以分为并行接口时钟和串行接口时钟,并行接口时钟的特点是:
传输速度快,但是硬件数目多,接线数目多,产品体积大。
串行接口时钟的特点:
传输线少,成本低,产品体积小。
缺点是传输速度慢。
时钟芯片的种类也越来越多,对时钟芯片的要求越来越高,比如精度高,体积小,功耗低,性能稳定,功能齐全,使用方便,技术更新灵活。
所以设计一款体积小,工作稳定,时间精确的时钟具有十分重要的意义。
第2章方案论证选择
2.1时钟计时的方案选择
方案一:
传统的基于单片机的时钟设计可以采用单片机内部的晶振来产生脉冲,然后通过单片机内部的计时器经过分频产生秒脉冲,然后通过软件编程来实现时钟的显示,这种设计方案的优点是外围器件少,电路简单清晰,电路焊接容易,出问题的故障几率小。
但是这种方案需由软件编程来实现秒脉冲的产生,编程相对来说比较复杂,而且也不利于排除故障,维修起来不方便。
由于单片机内部时钟会产生误差,即使设计时间误差补偿程序也很难实现提供准确时间的功能。
。
这种设计还有一个非常大的缺点就是如果单片机断电,芯片里的时间计时就停止,再次上电时又从初始设定重新计时,这样就需要在每次上电都调整时间,比较麻烦。
方案二:
在传统的基于单片机的数字时钟设计的基础上经过一些改进,引入DS12C887时间芯片,本次设计可分为两部分:
硬件部分包括:
体积小功能丰富的STC89C52单片机[3]、具有掉电保护的DS12C887时钟芯片[4]电路简单易于实现的1602LCD液晶显示器[5],键盘输入电路等。
具体说来,系统智能控制部分由单片机及其相关的外围电路[6]组成,外围电路包括解决死机等问题的复位电路[7]、波形稳定的晶振电路[8]、键盘设计、闹铃电路以及合适的直流电源电路[9]。
利用单片机将复位电路、能够降低功耗和减少显示器外部引线的显示电路[10]、电源电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。
软件部分主要包括了主程序模块,DS12C887模块,LCD1602模块,键盘控制模块。
DS12C887芯片具有掉电保护功能,内部自带锂电池,能够在断电的情况下保持时间信息,等到外部电路恢复供电之后能够不必调整时间,为时钟的校时操作节省了很多时间,而且这种设计更节能,在需要观察时间的时候比如白天就可以给主电路通电。
而在夜晚不需要观察时钟的时候就可以给主电路断电,这样可以节约大量电能。
时间芯片DS12C887采用了内部集成晶振的电路,并且具有内部温漂补偿电路设计。
能够准确计时,提供精确的时间,这样就简化了电路的器件选择,另外也使程序的设计更加简洁。
在硬件设计方面,由于只增加了一个DS12C887时间芯片,因此并不是特别复杂,而且这种独立计时的设计使得产品排故更加方便。
第二种方案更加准确而且电路硬件设计更加简单,软件设计更加简洁,因此采用第二种方案。
2.2显示部分的方案选择
1.数码管显示,8段数码管显示虽不需要复杂的驱动程序,可视范围宽,但硬件制作成本高,硬件电路的设计复杂。
2.LCD1602液晶显示,液晶显示最大的特点就是界面简洁,已经广泛应用于现代工业控制和智能化仪器仪表等地方,己经成为单片机开发领域典型模块之一。
能够方便的显示文字和数字。
3.LCD1602液晶显示时屏幕不会有闪烁。
液晶操作方便,且与单片机的接口电路简单,接线面积小,大大提高了万年历的性能。
所以最终选择LCD1602液晶显示方案。
第3章系统组成
3.1.1系统原理与硬件设计
本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。
本次设计利用时钟日历芯片DS12C887的特性和STC89C52单片机的功能利用实现的。
根据设计的要求万年历要显示年、月、日、时、分、秒的显示同LCD1602。
在明确本次设计思路之后,画出设计框图,总体框图如图2.1所示。
图1设计总体框图
图2系统电路原理图
3.1.2硬件选择
(1)时钟芯片选择选用DS12C887时钟芯片。
(2)单片机的选择 选用STC89C52单片机,并配备11.0592MHz晶振,复位电路采用上电复位。
(3)显示电路选择 采用LCD1602液晶显示。
(4)电源选择 采用直流5V电源供电。
3.1.3单片机STC89C52中文资料
STC89C52是STC公司生产的低电压,高性能CMOS8位单片机.片内含8KbyTES的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用STC公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH由存储单元,STC89C52单片功能强大,适用于许多电子产品。
主要性能参数:
1.与Mcs-51产品指令和引脚完全兼容。
2.8字节可重擦写FLASH闪速存储器
3.1000次擦写周期
4.全静态操作:
0HZ-24MHZ
5.三级加密程序存储器
6.256X8字节内部RAM
7.32个可编程I/0口线
8.3个16位定时/计数器
9.8个中断源
10.可编程串行UART通道
11.低功耗空闲和掉电模式
图3STC89C52外部引脚图
Vcc:
电源电压
GND:
地线
P0:
P0口是一组8位漏极开路型双向1/O口,也即地址/数据总线复用口。
作为输出口用时.每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。
当访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
PI是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL
与AT89C51不同之处是,Pl.0和P1.1还可分别作为定时/计数器2的外部计数输入(Pl.0/T2)和输入(P1.1/T2EX),
参见图3
FLASH编程和程序校验期间,Pl接收低8位地址。
图3PI.O和PI.l的第二功能
口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。
对端口P2写“l",通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(llt)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvx@DPTR指令)时,P2送出高8位地址数据。
在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。
FLASH编程或校验时,P2亦接收高位地址和一些控制信号。
·P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,内部上拉电阻把它们被拉高,并作为输入的端口。
这个时候,被外部拉低的P3口将用上拉电阻输出电流(IIL).
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如图表1:
表1
端口引脚
第二功能
P3.0
RXD(串行输入口〕
P3.1
TXD(串行输出口〕
P3.2
INTO(外中断0〕
P3.3
INTO(外中断l)
P3.4
TO(定时/计数器0)
P3.5
Tl(定时/计数器l)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上的高电平时单片机复位。
·ALE/PROG:
当访问外部程序存储器或数据存储器的时候,ALE(地址锁存允许)输出脉冲用来锁存低8位字节的地址.通常,ALE依然以时钟振荡频率的1/6输出固定的脉冲信号,所以可以用来实现对外输出时钟或用于定时目的。
每次访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程的时候,这个引脚还用于输入编程脉冲(PROG)。
可以通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位.可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,另外,此引脚会被拉高一点点,当单片机执行外部程序得时候,应该把ALE设置为禁止。
·PSEN:
程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令时,每个机器周期两次PSEN有效,就是输出两个脉冲。
这个时候,当访问外部数据存储器时,就会跳过两次PSEN信号。
·EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地).
如EA端接在高电平上,CPU就执行内部程序存储器中的指令。
flash存储器编程时,该引脚加上+12V的编程允许电源VPP ,该器件必须使用12V编程电压VPP。
·XTAL1:
振荡器的反相放大器的及内部时钟发生器的输入端.
·XTAL2:
振荡器的反相放大器的输出端。
AT89C52的特殊功能是,在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFR),SFR的地址空间映象如表2所示。
并非所有的地址都被定义,从80H—FFH共128个字节只有一部分被定义,还有相当一部分没有定义。
对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。
不应将数据写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
AT89C52除了有AT89C51所有的定时/计数器0和定时/计数器1外,还增加了一个定时/计数器2。
定时/计数器2的控制和状态位位于T2CON,T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2在16位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。
3.1.4STC单片机最小系统
图4单片机最小系统
STC单片机是一种高性能、低功耗的8位CMOS微处理芯片,STC单片机虽然功能强大,但要想完成其强大的功能,单靠它也是不的行的,因此要让它运行起来,就要创设其工作的环境,即最小系统,STC单片机最小系统如图1所示,它包括由一个晶振,两个电容组成的振荡电路,一个复位按钮一个10UF电容和一个10K电阻组成的复位电路,电源电路三个电路组成。
本系统以STC89S52单片机为核心,使用11.0592MHZ的晶振,复位电路为按键高电平复位。
第4章系统硬件电路设计
4.1.1晶振电路
图5晶振电路
在晶振电路中,C1、C2为晶振的负载电容,分别接在晶振的两个脚上和对地的电容,电路中取了30PF。
因为晶振与单片机的振荡电路中脚XTAL0和脚XTAL1会产生偕波,虽然谐波对电路的影响不大,但是会影响电路中时钟振荡器的稳定性.在晶振的脚XTAL0和脚XTAL1之间接分别接入两个5pf-30pf的瓷片电容接可以增加电路的稳定性。
4.1.2复位电路
图6复位电路
单片机复位电路有上电自动复位和手动复位两种方式。
上电复位要求接通电源后,自动进行复位操作。
手动复位要求接通电源的前提下,在单片机运行的条件下,在单片机运行期间,用按钮开关操作使单片机进行复位的操作。
这里采用的是手动复位。
4.1.3程序下载接口
图7程序下载接口图
如图可接插USB口,从而获取+5V的电源。
RXD,TXD用于下载程序、串口通信用。
通过计算机把程序下载到单片机中。
4.2.11602液晶概述
1602LCD是指显示的字符和数字为16X2,即可以显示两行,每行16个字符液晶模块共32个字符和数字。
1602LCD主要技术参数:
1.显示大小:
16×2个字符
2.芯片额定电压:
4.5—5.5V
3.额定电流:
2.0mA(5.0V)
4.工作时的电压:
5.0V
4.2.21602液晶引脚功能
表2液晶引脚功能
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源正极(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最低,接地时对比度最高。
4
RS
RS是选择两种寄存器,当高电平1时选择数据寄存器、当低电平0时选择指令寄存器。
5
R/W
R/W是选择两种读写信号线,高电平1时进行读操作,低电平0时进行写操作
6
E
E(或EN)端为使能端,下降沿使能。
7
DB0
双向数据总线第0位(最低位)
8
DB1
双向数据总线第1位
9
DB2
双向数据总线第2位
10
DB3
双向数据总线第3位
11
DB4
双向数据总线第4位
12
DB5
双向数据总线第5位
13
DB6
双向数据总线第6位
14
DB7
双向数据总线第7位(最高位),是读忙标志位
15
BLA
背光电源正极
16
BLK
背光电源负极
4.2.31602读写时序图
1602液晶模块内部的控制器一共具有11条控制指令,如表3所示:
表3
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
表3字符控制命令说明:
通过指令编程来实现1602液晶模块的读写操作、屏幕和光标的操作。
(其中1为高电平、0为低电平)
指令1:
清显示,将指令码01H复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是不是左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制开关整体的显示,高电平表示显示打开,低电平表示关显示关闭C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平表示闪烁,低电平表示不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平的时候显示单行,高电平的时候显示双行F:
低电平的时候显示5x7的点阵字符,高电平的时候显示5x10的点阵字符。
指令7:
设置字符发生器RAM的地址。
指令8:
设置DDRAM的地址。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,高电平的时候模块不能接收数据或者命令,假如是低电平表示不忙。
指令10:
写入数据。
指令11:
读出数据。
芯片时序表如下:
表4
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,D0—D7=数据,E=高脉冲
输出
无
图81602读写时序图
4.2.41602LCD的一般初始化(复位)过程
1.延时15mS
2.写指令38H(不检测忙信号)
3.延时5mS
4.写指令38H(不检测忙信号)
5.延时5mS
6.写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号
7.写指令38H:
显示模式设置
8.写指令08H:
显示关闭
9.写指令01H:
显示清屏
10.写指令06H:
显示光标移动设置
11.写指令0CH:
显示开及光标设置
4.2.51602LCD的电路连接
液晶5端为读/写选择端,因为我们不从液晶中读取数据,只向其写入命令和显示数据,因此此端始终选择为写状态,即低电平接地。
液晶6端为使能信号,是操作时必须的信号。
其电路如图2-11所示:
图91602的电路连接
4.3.1DS12C887概述
DS12C887具有DS12R885裸片,32.768HZ石英晶体和一个可充电电池三个部分,DS12C887与计算机常用的时钟芯片MC146818B和DS12887管脚兼容,同时可直接替换可以用来直接代替IBMPC上的时钟日历芯片DS12887。
采用DS12C887芯片设计的时钟电路有良好的微机接口,并且不需要任何外围电路和器件。
时钟芯片DS12C887具有如下的特征[[11]:
(1)DS12C887里面自带一个锂电池,外部掉电时,内部信息还能保持10年的时间,保证不丢失数据。
(2)能够自动产生秒、分、时、天、星期、日、月、年、世纪等时间信息,并
有闰年补偿功能。
其内部还增加了世纪寄存器,利用硬件电路解决了“千年”问题。
(3)具有二进制数码和BCD码两种表示时间的方法、具有日
历和定时闹钟功能。
(4)一天内的时间记录具有12小时制和24小时制两种,12小时时钟模
式中,具有PM和AM用来区分上午和下午。
同时可选用夏令时模式;
(5)有128个RAM单元与软件接口,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器14个作为