基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx

上传人:b****1 文档编号:816264 上传时间:2023-04-29 格式:DOCX 页数:21 大小:20.93KB
下载 相关 举报
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第1页
第1页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第2页
第2页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第3页
第3页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第4页
第4页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第5页
第5页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第6页
第6页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第7页
第7页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第8页
第8页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第9页
第9页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第10页
第10页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第11页
第11页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第12页
第12页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第13页
第13页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第14页
第14页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第15页
第15页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第16页
第16页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第17页
第17页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第18页
第18页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第19页
第19页 / 共21页
基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx

《基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx》由会员分享,可在线阅读,更多相关《基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx(21页珍藏版)》请在冰点文库上搜索。

基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx

voiddelayms(ucharn)

while(n--)

120;

i++);

voiddelay(uinte)

{uintm;

for(m=0;

m<

e;

m++){}

voidwrite1302(uchardat)

SCLK=0;

//拉低SCLK,为脉冲上升沿写入数据做好准备

delaynus

(2);

//稍微等待,使硬件做好准备

8;

i++)//连续写8个二进制位数据

{

DATA=dat&

0x01;

//取出dat的第0位数据写入1302

SCLK=1;

//上升沿写入数据

//重新拉低SCLK,形成脉冲

dat>

>

=1;

//将dat的各数据位右移1位,准备写入下一个数据位

}

voidwriteset1302(ucharCmd,uchardat)

RST=0;

//禁止数据传递

//确保写数居前SCLK被拉低

RST=1;

//启动数据传输

write1302(Cmd);

//写入命令字

write1302(dat);

//写数据

//将时钟电平置于已知状态

unsignedcharread1302(void)

uchari,dat;

i++)//连续读8个二进制位数据

//将dat的各数据位右移1位,因为先读出的是字节的最低位

if(DATA==1)//如果读出的数据是1

dat|=0x80;

//将1取出,写在dat的最高位

//将SCLK置于高电平,为下降沿读出

//稍微等待

//拉低SCLK,形成脉冲下降沿

returndat;

//将读出的数据返回

ucharreadset1302(ucharCmd)

unsignedchardat;

//拉低RST178/192

dat=read1302();

//读出数据

voidsetprotect(bitflag)//设置保护

if(flag==1)

writeset1302(0x8e,0x80);

//写入保护指令

else

writeset1302(0x8e,0x00);

//写入不保护指令

voidstoptime(bitflag)//是否将时钟停止

uchardat;

dat=readset1302(0x81);

setprotect(0);

if(flag)

writeset1302(0x80,dat|0x80);

else

writeset1302(0x80,dat&

0x7f);

voidinit_ds1302(void)

//根据写状态寄存器命令字,写入不保护指令

writeset1302(0x80,((45/10)<

<

4|(45%10)));

//根据写秒寄存器命令字,写入秒的初始值

writeset1302(0x82,((59/10)<

4|(59%10)));

//根据写分寄存器命令字,写入分的初始值

writeset1302(0x84,((8/10)<

4|(8%10)));

//根据写小时寄存器命令字,写入小时的初始值

writeset1302(0x86,((5/10)<

4|(5%10)));

//ri

writeset1302(0x88,((12/10)<

4|(12%10)));

//yue

writeset1302(0x8c,((13/10)<

4|(13%10)));

//nian

voiddisplay1(void)//调时

if(miaobiao==0)

{if(K2==0)

delay(10);

if(K2==0)

{f++;

if(f==7){f=1;

while(!

K2)

switch(f)

case1:

flag=1;

e=1;

kedaoru=1;

miaobiao=0;

break;

case2:

kedaoru=1;

case3:

case4:

e=2;

kedaoru=1;

case5:

kedaoru=1;

case6:

default:

if(kedaoru==1)

if(K6==0)

{delay(10);

K6)

second++;

if(second==60)second=0;

minute++;

if(minute==60)minute=0;

hour++;

if(hour==24)hour=0;

day++;

if(day==32)day=1;

month++;

if(month==13)month=1;

year++;

if(year==100)year=0;

if(K7==0)

K7)

second--;

if(second==-1)second=59;

minute--;

if(minute==-1)minute=59;

hour--;

if(hour==-1)hour=23;

day--;

if(day==0)day=31;

month--;

if(month==0)month=12;

year--;

if(year==-1)year=99;

if((K3==0)&

&

(kedaoru==1))//保存闹钟

second1=second;

minute1=minute;

hour1=hour;

year1=year;

month1=month;

day1=day;

flag=0;

f=0;

naozhong=0;

kedaoru=0;

return;

if((K4==0)&

(kedaoru==1))//保存时间

setprotect(0);

writeset1302(0x80,((second/10)<

4|(second%10)));

//根据写秒寄存器命令字,写入秒的值

writeset1302(0x82,((minute/10)<

4|(minute%10)));

//根据写分寄存器命令字,写入分的值

writeset1302(0x84,((hour/10)<

4|(hour%10)));

//根据写小时寄存器命令字,写入小时的值

writeset1302(0x86,((day/10)<

4|(day%10)));

writeset1302(0x88,((month/10)<

4|(month%10)));

writeset1302(0x8c,((year/10)<

4|(year%10)));

if(kedaoru==0)

if(K8==0)

{q++;

if(q==5){q=1;

K8)

switch(q)

flag=1;

e=1;

second=0;

minute=0;

hour=0;

EA=1;

miaobiao=1;

kedaoru=0;

jilu=0;

e=1;

TR0=1;

miaobiao=1;

//启动

TR0=0;

//暂停

q=2;

if((miaobiao==1)&

(K3==0))

second=0;

EA=0;

q=1;

(jilu==0))

if(K6==0);

{h++;

if(h==6){h=1;

switch(h)

second2=second;

minute2=minute;

hour2=hour;

second3=second;

minute3=minute;

hour3=hour;

second4=second;

minute4=minute;

hour4=hour;

second5=second;

minute5=minute;

hour5=hour;

q=3;

jilu=1;

q=1;

if(miaobiao==1){

if(K7==0);

{m++;

if(m==5){m=1;

switch(m)

second=second2;

minute=minute2;

hour=hour2;

second=second3;

minute=minute3;

hour=hour3;

second=second4;

minute=minute4;

hour=hour4;

second=second5;

minute=minute5;

hour=hour5;

}}

if(K5==0)

K5)

{h=0;

m=0;

naozhong=1;

q=0;

miaobiao=0;

voiddisplay(void)

if(K1==0)

{e++;

if(e==3){e=1;

K1)

switch(e)

for(g=0;

g<

6;

g++)

P2=chocode[g];

p=disbuffer[g+6];

P0=displaytable[p];

delay(80);

P2=0xff;

delay

(1);

}break;

p=disbuffer[g];

}break;

voidtime_init(void)

{TMOD=0x01;

//定时器设置

TH0=(65536-10000)/256;

//定时器0赋初值

TL0=(65536-10000)%256;

EA=1;

//开总中断

ET0=1;

//关定时器0中断

voidint0()interrupt1//秒表中断

{TH0=(65536-10000)/256;

while(++qw==100)

{qw=0;

second++;

if(second>

=60)

{second=0;

minute++;

if(minute>

{minute=0;

hour++;

if(hour>

=24)

{hour=0;

}

}

voidmain()

ucharReadValue;

//缓冲数据用的

init_ds1302();

//ds1302初始化

time_init();

while

(1)

{

if(flag==0)

ReadValue=readset1302(0x81);

//从秒寄存器读数据

second=((ReadValue&

0x70)>

4)*10+(ReadValue&

0x0F);

//将读出数据转化

ReadValue=readset1302(0x83);

//从分寄存器读

minute=((ReadValue&

//将读出数据转化

ReadValue=readset1302(0x85);

hour=((ReadValue&

ReadValue=readset1302(0x87);

//从ri寄存器读数据

day=((ReadValue&

//将读出数据转化

ReadValue=readset1302(0x89);

//从yue寄存器读

month=((ReadValue&

ReadValue=readset1302(0x8d);

//从nian寄存器读

year=((ReadValue&

if(minute==59)

{

if(second>

=49)

if((second==50)||(second==52)||(second==54)||(second==56)||(second==58)){ALARM_BEEP=1;

if((second==51)||(second==53)||(second==55)||(second==57)){ALARM_BEEP=0;

delay(50);

ALARM_BEEP=1;

if(second==59){ALARM_BEEP=0;

delaynus(500);

}

if(second==0){ALARM_BEEP=1;

if((naozhong==0)&

(second1==second)&

(minute1==minute)&

(hour1==hour))

{ALARM_BEEP=0;

delay(100);

ALARM_BEEP=0;

if((second1==second)&

(minute1!

=minute)){ALARM_BEEP=1;

if((naozhong==1))

{ALARM_BEEP=1;

}

display1();

disbuffer[0]=year/10;

disbuffer[1]=year%10;

disbuffer[2]=month/10;

disbuffer[3]=month%10;

disbuffer[4]=day/10;

disbuffer[5]=day%10;

disbuffer[6]=hour/10;

disbuffer[7]=hour%10;

disbuffer[8]=minute/10;

disbuffer[9]=minute%10;

disbuffer[10]=second/10;

disbuffer[11]=second%10;

display();

}当我被上帝造出来时,上帝问我想在人间当一个怎样的人,我不假思索的说,我要做一个伟大的世人皆知的人。

于是,我降临在了人间。

我出生在一个官僚知识分子之家,父亲在朝中做官,精读诗书,母亲知书答礼,温柔体贴,父母给我去了一个好听的名字:

李清照。

小时侯,受父母影响的我饱读诗书,聪明伶俐,在朝中享有“神童”的称号。

小时候的我天真活泼,才思敏捷,小河畔,花丛边撒满了我的诗我的笑,无可置疑,小时侯的我快乐无虑。

“兴尽晚回舟,误入藕花深处。

争渡,争渡,惊起一滩鸥鹭。

”青春的我如同一只小鸟,自由自在,没有约束,少女纯净的心灵常在朝阳小,流水也被自然洗礼,纤细的手指拈一束花,轻抛入水,随波荡漾,发髻上沾着晶莹的露水,双脚任水流轻抚。

身影轻飘而过,留下一阵清风。

可是晚年的我却生活在一片黑暗之中,家庭的衰败,社会的改变,消磨着我那柔弱的心。

我几乎对生活绝望,每天在痛苦中消磨时光,一切都好象是灰暗的。

“寻寻觅觅冷冷清清凄凄惨惨戚戚”这千古叠词句就是我当时心情的写照。

最后,香消玉殒,我在痛苦和哀怨中凄凉的死去。

在天堂里,我又见到了上帝。

上帝问我过的怎么样,我摇摇头又点点头,我的一生有欢乐也有坎坷,有笑声也有泪水,有鼎盛也有衰落。

我始终无法客观的评价我的一生。

我原以为做一个着名的人,一生应该是被欢乐荣誉所包围,可我发现我错了。

于是在下一轮回中,我选择做一个平凡的人。

我来到人间,我是一个平凡的人,我既不着名也不出众,但我拥有一切的幸福:

我有温馨的家,我有可亲可爱的同学和老师,我每天平凡而快乐的活着,这就够了。

天儿蓝蓝风儿轻轻,暖和的春风带着春的气息吹进明亮的教室,我坐在教室的窗前,望着我拥有的一切,我甜甜的笑了。

我拿起手中的笔,不禁想起曾经作诗的李清照,我虽然没有横溢的才华,但我还是拿起手中的笔,用最朴实的语言,写下了一时的感受:

人生并不总是完美的,每个人都会有不如意的地方。

这就需要我们静下心来阅读自己的人生,体会其中无尽的快乐和与众不同。

“富不读书富不久,穷不读书终究穷。

”为什么从古到今都那么看重有学识之人?

那是因为有学识之人可以为社会做出更大的贡献。

那时因为读书能给人带来快乐。

自从看了《丑小鸭》这篇童话之后,我变了,变得开朗起来,变得乐意同别人交往,变得自信了……因为我知道:

即使现在我是只“丑小鸭”

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2