- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)