【毕业论文】基于51单片机_和_ds12c887的日历时钟显示系统设计.doc

【毕业论文】基于51单片机_和_ds12c887的日历时钟显示系统设计.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于DS12C887的日历时钟显示系统设计 在银行或者其他的公共场合中,经常会看到显示实时信息的显示屏,其中包括年、月、日、星期、时间等,本例子的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,选用日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的时间信息,次款芯片内部有锂电池,可以带掉电的情况下保存10年以上。 ? 主要器件: 1、??AT89C52 2、??DS12C887。 ? 试验流程图; ? 试验电路图: 试验程序代码: //CalendarClk.h程序 #ifndef????_CALENDARCLK_H???????????//?防止CalendarClk.h被重复引用 ? #define????_CALENDARCLK_H ? #include reg52.h #include absacc.h ? #define uchar unsigned char #define uint unsigned int ? /* DS12C887?内部专用寄存器宏定义?*/ #define MIN XBYTE[0x0102] #define HOUR XBYTE[0x0104] #define DAYOFWEEK XBYTE[0x0106] #define DAYOFMONTH XBYTE[0x0107] #define MONTH XBYTE[0x0108] #define YEAR XBYTE[0x0109] #define REG_A XBYTE[0x010a] #define REG_B XBYTE[0x010b] ? /*?由串口获得的日历时钟信息变量,用于对芯片时间的设置?*/ uchar year1,month1,dayofweek1,dayofmonth1,hour1,min1; ? /*?芯片DS12C887提供的日历时钟信息变量?*/ uchar year2,month2,dayofweek2,dayofmonth2,hour2,min2; ? #endif ? //CalendarClk.c程序 #include CalendarClk.h ? /*?从串行口获取数据函数,数据包括:year1,month1,dayofweek1, dayofmonth1,hour1,min1。如果获取到正确数据则返回1,否则返回0 */ uchar getdata() { ???????//?略去 } ? /*?设置日历和时钟函数?*/ void settime() { ???????REG_B = REG_B|0x80;???????????????// SET=1,芯片DS12C887处于设置状态 ? ???????MIN = min1; ???????HOUR = hour1; ???????DAYOFWEEK = dayofweek1; ???????DAYOFMONTH = dayofmonth1; ???????MONTH = month1; ???????YEAR = year1; ? ???????REG_B = REG_B0x7f;??????????????????// SET=0,芯片DS12C887恢复正常数据更新状态 } ? ? /*?获取日历时钟函数?*/ void gettime() { ???????while (REG_A0x80==0x00)???????//?直到UIP=0时,才能读取日历时钟信息???????{ ???????{???? ??????????????min2 = MIN ; ??????????????hour2 = HOUR; ??????????????dayofweek2 = DAYOFWEEK; ??????????????dayofmonth2 = DAYOFMONTH; ??????????month2 = MONTH; ??????????????year2 = YEAR; ???????} } ? /* 13位数码管显示年、月、日、星期、时、分?*/ void display() { ???????//?略去 } ? /*?串口初始化函数?*/ void init_serial() { ???????TMOD = 0x20;???????????????????????????//?定时器T1使用工作方式2 ???????TH1 = 250; ???????TL1 = 250; ???????TR1 = 1;?????????????????????????????//?开始计时 ???????PCON = 0x80;????????????????????????????// SMOD = 1 ???

文档评论(0)

精品资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档