附录3 8 DS12887DS12C887_第1页
附录3 8 DS12887DS12C887_第2页
附录3 8 DS12887DS12C887_第3页
附录3 8 DS12887DS12C887_第4页
附录3 8 DS12887DS12C887_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

9.6 80C51与并行接口日历时钟芯片DS12C887的接口DALLAS公司生产的DS12C887实时时钟芯片,为系统提供年、月、日、星期、小时、分钟和秒等信息,其主要功能特性如下:l 带有内部晶体振荡器并内置锂电池,可以在无外部供电的情况下保持数据的时间长达10年以上;l 具有秒、分、时、星期、日、月、年计数,并有闰年修正功能;l 时间显示可以选择24小时模式或者带有AM和PM指示的12小时模式;l 时间、日历和闹钟均具有二进制和BCD码两种形式;l 可选择Motorola和Intel总线时序;l 内部具有闹钟中断、周期性中断、时钟更新周期结束中断,这三个中断源可通过软件屏蔽;l 内部有128B的RAM,其中15B为时间和控制寄存器,113B为通用RAM,所有RAM单元都具有掉电保护功能,因此被称为非易失性RAM;l 输出可编程的方波信号;9.6.1 DS12C887日历时钟芯片的性能及引脚说明DS12C887内部可看成由电源、日历时钟信息、寄存器和存储器及总线接口四部分组成,四部分相互配合,共同实现时钟信息的获取。DS12C887共有24个引脚,其引脚排列如图9-xx所示。图9-xx DS12887引脚排列图DS12887的引脚功能如下:MOT(1引脚):总线时序模式选择端,DS12C887有两种总线工作模式。高电平时,选择Motorola总线时序;低电平或者悬空时,选择Intel总线时序。NC(2、3、16、20、21、22引脚):悬空。AD0AD7(411引脚):地址/数据复用总线。该总线采用分时复用,总线周期的前半部分,AD0AD7传送的是地址信息,用以选通 DS12C887内的某个RAM区,总线周期的后半部分,AD0AD7传送的是数据信息。GND(12引脚):接地端。(13引脚):片选端,低电平选中DSC12887芯片。AS(引脚):地址选通输入端。在进行读写操作时,AS的下降沿将AD0AD7上的地址信息锁存到DSC12887里,而下一个上升沿清除AD0AD7上的地址信息。(15引脚):读/写输入端。在选择Motorola总线时序模式时,此引脚用于指示当前是读操作还是写操作,高电平时为读操作,低电平时为写操作;在选择Intel总线时序模式时,此引脚为低电平有效的写输入引脚,相当于外部RAM或I/O口时的写使能信号()。DS(17引脚):数据选择或读输入引脚。在选择Motorola总线时序模式时,此引脚为数据锁存引脚;在选择Intel总线时序模式时,此引脚为低电平有效的读输入引脚,相当于外部RAM或I/O口时的输出使能信号()。(18引脚):复位引脚,低电平有效。复位不会影响到时钟、日历和RAM,通常将该引脚接高电平。(19引脚):中断请求输出信号,低电平有效,可作为微处理器的中断请求输入。SQW(23引脚):方波信号输出引脚。可通过设置寄存器位SQWE使能或者禁止此信号输出,该信号的输出频率也可通过对芯片内的寄存器编程来改变。VCC(24引脚):+5V电源端。当Vcc输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读/写操作;当 Vcc小于+4.25V时,禁止用户对内部RAWI进行读/写操作,此时用户不能正确获取芯片内的时间信息;当cc的输入小于+3时,DS12C887会自动将电源切换到内部自带的锂电池上,以保证内部的电路能够正常工作。9.6.2 DS12C887内部RAM和寄存器DS12C887的内存空间共128B,其中11B专门用于存储时间、星期、日历和闹钟信息;4B专门用于控制和存放状态信息;其余113B为用户可以使用的普通RAM空间。日历时钟芯片DS12C887的内存空间映射关系及各位的定义如表9-xx所示(选择DM=1的二进制模式)。如果选择DM=0的BCD模式,请读者查阅DS12C887的芯片资料。表9-xx 日历时钟芯片DS12C887的内存空间映射关系及各位的定义地址D7D6D5D4D3D2D1D0功能范围(H)00H00秒秒003B01H00秒秒闹钟003B02H00分分003B03H00分分闹钟003B04HAM/PM000小时小时010C+AM/PM0小时001705HAM/PM000小时小时闹钟010C+AM/PM0小时001706H000000星期星期010707H0000日日011F08H00000月月010C09H0年年00630AHUIPDV2DV1DV0RS3RS2RS1RS0控制寄存器A-0BHSETPIEAIEUIESQWEDM24/12DSE控制寄存器B-0CHIRQFPFAFUF0000控制寄存器C-0DHVRT0000000控制寄存器D-0E7FHxxxxxxxxx-1. 控制寄存器A字节的内容如下:l UIP:更新标志位,为只读位用来标志芯片是否即将更新,并且不受复位操作的影响。UIP=1表示即将发生数据更新,UIP=0表示至少在244us内芯片不会更新数据。UIP=0可以获得所有时钟、日历和闹钟信息。将寄存器B中的SET位置1可以限制任何数据更新操作,并且清除UIP位。l DV2、DV1、DV0:这3位为010时将打开晶振且时钟运行。l RS3、RS2、RS1、RS0:用于设置周期性中断产生的时间周期和输出方波的频率,具体设置查阅DS12C887的芯片资料。2. 控制寄存器B字节的内容如下:l SET:设置位,可读写,不受复位操作影响。SET=0,不处于设置状态,芯片进行正常的时间数据更新;SET=1,数据更新被禁止,可以通过程序设置时间和日历信息。l PIE:周期性中断使能位,可读写,复位时清除此位。PIE=0,禁止周期中断输出到;PIE=1,允许周期中断输出到。中断信号产生的周期由RS3RS0决定。l AIE:闹铃中断使能位,可读写。AIE=0,禁止闹钟中断输出到;AIE=1,允许闹钟中断输出到。l UIE:数据更新结束中断使能位,可读写,复位或者SET=1时清除此位。UIE=0,禁止更新结束中断输出到;UIE=1,允许更新结束中断输出到。l SQWE:方波使能位,可读写,复位时清除此位。SQWE=0时,SQW引脚保持低电平;SQWE=1时,SQW引脚输出设定频率的方波,其频率由由RS3RS0决定。l DM:数据模式位,可读写,不受复位操作影响。DM=0时,设置时间、日历信息为二进制数据;DM=1时,设置时间、日历信息为BCD码数据。l 24/12:时间模式设置位,可读写,不受复位操作影响。为0时,设置为12小时模式;为1时,设置为24小时模式.l DSE:夏令时允许标志位,可读写,不受复位操作影响。DSE=1时,会引起两次特殊的时间更新,4月的第一个星期日凌晨1:59:59会直接更新到3:00:00,以及10月的最后一个星期日凌晨1:59:59会直接更新到1:00:00;DSE=0时,时间信息正常更新。3. 控制寄存器C字节的内容如下:l IRQF:中断请求标志位。当IRQF=1时,引脚输出低电平,产生中断申请。当PF=PIE=1或者AF=AIE=1或者UF=UIE=1时,IRQF置1,否则IRQF置0。l PF:周期中断标志位。由复位操作或读寄存器C操作清除。l AF:闹钟中断标志位。由复位操作或读寄存器C操作清除。l UF:数据更新结束中断标志位。由复位操作或读寄存器C操作清除。4. 控制寄存器D字节的内容如下:l VRT:RAM和时间有效位。此位不可写,也不受复位操作影响,正常情况下读取时总为1,如果出现读取为0的情况,则表示电池耗尽,时间数据和RAM中的数据出现问题,数据的正确性就不能得到保证。5. 操作时序 Motorola和Intel模式总线读/写时序图如图9-xx、9-xx、9-xx所示。图9-xx motorola模式总线读/写时序图图9-xx Intel模式总线写时序图图9-xx Intel模式总线读时序图9.6.3 80C51单片机与DS12C887的接口设计例9-xx DS12C887、LCD1602与AT89C51单片机连接的仿真图如图9-xx所示,用C语言编程,实现在LCD1602液晶的第一行显示“年月日星期”,第二行显示“时分秒”。图9-xx DS12C887时钟芯片、液晶LCD1602与单片机连接的仿真图解:接口说明如下:1)液晶的4端为向液晶控制器写数据/命令选择端,接单片机的P3.5口;2)液晶的5端为读/写选择端,不从液晶读取任何数据,只向其写入数据和命令,因此此端始终选择为写状态,接地;3)液晶的6端为使能端,接单片机的P3.4口;4)液晶的D0D7端为数据/指令输入端,与单片机P0口通过排阻相连;5)DS12C887的AS端与单片机的P1.0端相连;6)DS12C887的端与单片机的P1.1端相连;7)DS12C887的DS端与单片机的P1.2端相连;8)DS12C887的CS端与单片机的P1.3端相连;9)DS12C887的AD0AD7与单片机的P2相连;程序设计如下:#include#define uchar unsigned char #define uint unsigned int sbit lcdrs=P35;sbit lcden=P34; sbit dsas=P10;sbit dsrw=P11;sbit dsds=P12;sbit dscs=P13;char miao,shi,fen,num;uchar code table= 2017-4-16 SUN;uchar code table1= : : ;void write_ds(uchar,uchar);uchar read_ds(uchar);void set_time();void delay(uint z);void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)lcdrs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void init()lcden=0; write_ds(0x0A,0x20); /打开振荡器write_ds(0x0B,0x26); /设置24小时模式,数据采用二进制模式set_time(); /设置上电默认值write_com(0x38); /LCD1602初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num15;num+)/写入液晶初始显示值write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num12;num+)write_date(table1num);delay(5);void write_sfm(uchar add,uchar date) /LCD1602刷新时,时分秒的在液晶的位置是第4、7、10位uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void write_ds(uchar add,uchar date)/写12C887函数dscs=0;dsas=1;dsds=1;dsrw=1;P2=add; /先写地址dsas=0;dsrw=0;P2=date; /再写数据dsrw=1;dsas=1;dscs=1;uchar read_ds(uchar add) /读12C887函数 uchar ds_date;dsas=1;dsds=1;dsrw=1;dscs=0;P2=add; /先写地址dsas=0;dsds=0;P2=0xff;ds_date=P2; /再读数据dsds=1;dsas=1;dscs=1;return ds_date;void set_time()/设置首次上电初始化时间write_ds(0,45);write_ds(1,

温馨提示

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

评论

0/150

提交评论