基于51单片机与实时时钟芯片DS1307的液晶显示万年历项目设计.doc

基于51单片机与实时时钟芯片DS1307的液晶显示万年历项目设计.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机与实时时钟芯片DS1307的液晶显示万年历项目设计

基于DS1307的液晶显示万年历的程序设计 项目名称:基于DS1307的液晶显示万年历C程序设计 项目作者:戚振勇 项目日期:2012/1/9 联系QQ:820897443 目录 联系QQ:820897443 摘要 21实际是信息化的时代,时间对我们这代人异常的重要,万年历作为提供准确时间的来源在我们的生活中扮演着重要的角色。 本设计的目的就是使万年历的资源和成本降到最低,使之可以轻松嵌入到任何项目中,让时间实时围绕在我们身边。 联系QQ:820897443 DS1307芯片介绍 DS1307是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能。AM/PM 标志位决定时钟工作于24小时或12小时模式,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能。 参数详解 RTC和RAM地址图表: 如下图所示 实验的电路图 其中SQW为方波输出,在本系统中没用用到方波输出,所以直接悬空。 实验效果如图所示,如果加上18B20温度传感器,还可以把温度实时的显示出来 C程序详解 #includereg52.h #includeintrins.h #define uchar unsigned char #define uint unsigned int sbit sda=P2^7; sbit scl=P2^5; sbit lcd_rs=P2^0; sbit lcd_rw=P2^1; sbit lcd_en=P2^2; sbit lcd_psb=P2^3; sbit d1=P1^0; sbit key1=P1^1; sbit key2=P1^2; sbit key3=P1^3; sbit key4=P1^4; uchar dis1[]={20 年 月 日}; uchar dis2[]={时间 时 分 秒}; uchar dis3[]={星期 温度--}; uchar dis4[]={振兴中华勇闯天涯}; uchar dis5[]={0123456789}; uchar code dis6[]={欢迎使用振勇电子}; uchar code dis7[]={万年历 }; uchar code dis8[]={联系QQ820897443}; uchar code dis9[]={振勇电子实验室 }; uchar code dis10[]={制作 }; uchar num,num1,num2,con,con1,son; uint aa,bb,cc,dd,ee,ff,gg,hh,jj,kk,ll,mm,nn; uchar code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff}; char nian,yue,ri,shi,fen,miao,xingqi; void delay_2(uint z)//2毫秒的延时 { uchar x,x1; for(;z0;z--) { for(x=0;x112;x++) { for(x1=0;x11;x1++); } } } void delay()//5u秒的延时 { _nop_(); _nop_(); _nop_(); } void star()//开始 { sda=1; delay(); scl=1; delay(); sda=0; delay(); } void stop()//停止 { sda=0; delay(); scl=1; delay(); sda=1; delay(); } void ack()//询问 { uchar z=0; while((sda==1)(z50))z++; scl=0; delay(); } void write(uchar slave_write_address,uchar byte_address,uchar data_data)//写一个数据 { uchar temp,temp1,i,ii; star();//开始 for(ii=0;ii3;ii++)//根据 24CXX文档资料,和时序图,按顺序送:器件写地址,字节地址,数据 { if(ii==0) { temp=slave_write_address;//送 器件写地址 temp1=slave_write_address; } else if(ii==1) {

文档评论(0)

aena45 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档