模块十二 时钟日历芯片DS12C887实验
一、知识点
DS12C887的引脚功能与性能特点,DS12C887的内部存储器结构,MCS-51单片机与DS12C887的接口方法及程序设计方法。
二、知识点分析
DS12C887是美国DALLAS公司推出的新型时钟日历芯片。由于DS12C887能够自动产生年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题。DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久。其对于一天内的时间记录,有12小时制和24小时制两种模式,在12小时制模式中,用AM和PM区分上午和下午。DS12C887在工业控制及仪器仪表中有着广泛用途,掌握DS12C887与单片机的接口及编程技术,把它嵌入到多样化的应用环境中去,有较大的实用价值。
1)DS12C887与MCS-51单片机的硬件接口和引脚说明
DS12C887与MCS-51单片机的接口示意图如图3.25所示。
图3.25 DS12C887与单片机接口示意图
MOT:模式选择脚。MOT接地时,选择Intel模式;MOT接VCC时,选择Motorola模式。因MCS-51单片机属Intel模式,故将MOT接地。
AD0~AD7:地址/数据复用总线。该总线采用时分复用技术,在总线周期的前半部分,出现在AD0~AD7上的是地址信息,可用以选通DS12C887内的RAM;总线周期的后半部分出现在AD0~AD7上的是数据信息。
AS:地址选通输入脚。在进行读/写操作时,AS的上升沿将AD0~AD7上出现的地址信息锁存到DS12C887上。应将AS脚接MCS-51单片机的ALE端。
:读/写输入脚。当MOT接地时,该脚工作在Intel模式,此时作为写允许输入,即Write Enable。该脚应接MCS-51单片机的信号。
DS:读允许输入脚。该脚接MCS -51单片机的信号。
SQW:方波输出脚。当供电电压VCC大于4.25V时,SQW脚进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。
:片选输入脚,低电平有效。
:中断请求输出脚,低电平有效。复位和读寄存器C都可以清除IRQ中断信号。该脚可以直接接MCS -51单片机的或端。
:复位输入脚,低电平有效。在典型应用中,可以直接接VCC,这样保证DS12C887在掉电时,其内部控制寄存器不受影响。
GND、VCC:直流电源,其中VCC接+5V输入,GND接地。当VCC输入为+5V时,用户可以访问DS12C887内部RAM中的数据,并可对其进行读、写操作;当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源切换到内部自带的锂电池上,以保证内部电路能够正常工作。
2)DS12C887的内部存储器结构
DS12C887内有128个RAM单元,其中11字节用来存储时间信息,4字节用来存储控制信息,其他113字节为通用RAM。
DS12C887内部存储器功能如表3.5所示。
表3.5 DS12C887内部存储器功能
DS12C887内部有4个控制寄存器,分别介绍如下:
●控制寄存器A
UIP位用来标志芯片是否即将进行更新。UIP位为1时,更新即将开始;UIP位为0时,表示至少在244μs内芯片不会更新。此时,时钟、日历和闹钟信息可以通过读写相应的字节获得和设置。
DV0、DV1、DV2位用来开关晶振和复位分频器。当DV0、DV1、DV2设置为010时,晶振打开并保持时钟运行。
RS3、RS2、RS1、RS0为方波频率选择位,产生方波周期中断。具体设置见表3.6。
表3.6 RS3、RS2、RS1、RS0方波频率选择位设置
●控制寄存器B
SET=0,时间更新正常进行,每秒计数1次;SET=1,禁止更新。
PIE=0,禁止周期中断输出到IRQ;PIE=1,允许周期中断输出到IRQ。
AIE=0,禁止闹钟中断输出到IRQ;AIE=1,允许闹钟中断输出到IRQ。
UIE=0,禁止更新结束中断输出到IRQ;UIE=1,允许更新结束中断输出到IRQ。UIE位在复位或设置SET为高时清零。
SQWE为方波允许位。SQWE=0,SQW脚输出低;SQWE=1,SQW输出设定频率的方波。
DM=0,二进制;DM=1,BCD码。
24/12位为0表示12小时制;为1表示24小时制。
DSE为夏令时允许位。DSE=0,不采用夏令时;DSE=1,采用夏令时。
●控制寄存器C
IRQF为中断请求标志位。IRQF=PF∧PIE+AF∧AIE+UF∧UIE。IRQF一旦为高,IRQ脚输出为低。
PF为周期中断标志位。PF=1表示方波周期结束,申请中断。
AF为闹钟中断标志位。AF=1表示当前时间与闹钟时间相匹配,申请中断。
UF为更新中断标志位。UF=1表示更新周期结束,申请中断。
注意:读寄存器C或复位后,所有标志位清零。
●控制寄存器D
VRT为内部锂电池状态。VRT=1,锂电池正常;VRT=0,锂电池耗尽。
三、实践训练
1)实验目的
(1)了解时钟日历芯片DS12C887的性能特点;
(2)掌握DS12C887的工作原理及编程方法;
(3)学会用时钟日历芯片、数码管、微处理器构成电子时钟。
2)实验设备
PC机,XZNU MCUS-Ⅰ单片机实验箱1台,伟福V8/L型仿真器1台。
3)实验内容及说明
利用实时时钟芯片DS12C887和6位LED数码管构成一个电子时钟,显示时、分、秒。
对DS12C887的编程分为初始化编程与应用编程两部分。在计时之前,需要进行初始化设置,其目的是对控制寄存器B进行写入操作,使其停止计数,以便设置工作方式:对A寄存器进行写入操作,可设置中断周期和振荡频率;读状态寄存器C和D,可清除原有的中断标志,并使芯片数据有效。然后对B寄存器写入,以启动计时开始。在DS12C887的正常计时过程中,若要读取并显示当前的时间或日期值时,应先对控制寄存器进行设置,停止计数,待读出数据后,再恢复计时操作。
4)实验电路及连线
时钟日历芯片DS12C887实验电路原理图如图3.26所示。使用专用连接导线,将接插件J24与J9的插孔按照顺序连接构成段数据通路,CSO1端接J29的第1插孔;将J25与J13的插孔按照顺序连接构成位数据通路,CSO2端接J29的第2插孔,J14的CS87端与J2的A15端相接。
5)程序设计
(1)流程图
时钟日历芯片DS12C887实验的主程序和定时中断程序流程如图3.27所示。
图3.26 时钟日历芯片DS12C887实验电路原理图
图3.27 DS12C887实验主程序和中断程序流程图
(2)参考程序
;(能读取年、月、时、分、秒值并能在6位数码管上显示时、分、秒的程序):
;定时器/计数器中断子程序:
;6位数码管显示子程序:
;读取DS12C887当前时间值子程序:
;DS12C887初始化子程序:
6)思考题
(1)编写程序,用液晶显示器显示当前时钟值(年、月、日、时、分、秒),实现电子日历时钟;
(2)总结实验过程中所遇到的问题与解决的办法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。