基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx
《基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx》由会员分享,可在线阅读,更多相关《基于DS1302和89C52的6位共阳数码管可调日历时钟闹钟秒表器有整点报时文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
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();
}当我被上帝造出来时,上帝问我想在人间当一个怎样的人,我不假思索的说,我要做一个伟大的世人皆知的人。
于是,我降临在了人间。
我出生在一个官僚知识分子之家,父亲在朝中做官,精读诗书,母亲知书答礼,温柔体贴,父母给我去了一个好听的名字:
李清照。
小时侯,受父母影响的我饱读诗书,聪明伶俐,在朝中享有“神童”的称号。
小时候的我天真活泼,才思敏捷,小河畔,花丛边撒满了我的诗我的笑,无可置疑,小时侯的我快乐无虑。
“兴尽晚回舟,误入藕花深处。
争渡,争渡,惊起一滩鸥鹭。
”青春的我如同一只小鸟,自由自在,没有约束,少女纯净的心灵常在朝阳小,流水也被自然洗礼,纤细的手指拈一束花,轻抛入水,随波荡漾,发髻上沾着晶莹的露水,双脚任水流轻抚。
身影轻飘而过,留下一阵清风。
可是晚年的我却生活在一片黑暗之中,家庭的衰败,社会的改变,消磨着我那柔弱的心。
我几乎对生活绝望,每天在痛苦中消磨时光,一切都好象是灰暗的。
“寻寻觅觅冷冷清清凄凄惨惨戚戚”这千古叠词句就是我当时心情的写照。
最后,香消玉殒,我在痛苦和哀怨中凄凉的死去。
在天堂里,我又见到了上帝。
上帝问我过的怎么样,我摇摇头又点点头,我的一生有欢乐也有坎坷,有笑声也有泪水,有鼎盛也有衰落。
我始终无法客观的评价我的一生。
我原以为做一个着名的人,一生应该是被欢乐荣誉所包围,可我发现我错了。
于是在下一轮回中,我选择做一个平凡的人。
我来到人间,我是一个平凡的人,我既不着名也不出众,但我拥有一切的幸福:
我有温馨的家,我有可亲可爱的同学和老师,我每天平凡而快乐的活着,这就够了。
天儿蓝蓝风儿轻轻,暖和的春风带着春的气息吹进明亮的教室,我坐在教室的窗前,望着我拥有的一切,我甜甜的笑了。
我拿起手中的笔,不禁想起曾经作诗的李清照,我虽然没有横溢的才华,但我还是拿起手中的笔,用最朴实的语言,写下了一时的感受:
人生并不总是完美的,每个人都会有不如意的地方。
这就需要我们静下心来阅读自己的人生,体会其中无尽的快乐和与众不同。
“富不读书富不久,穷不读书终究穷。
”为什么从古到今都那么看重有学识之人?
那是因为有学识之人可以为社会做出更大的贡献。
那时因为读书能给人带来快乐。
自从看了《丑小鸭》这篇童话之后,我变了,变得开朗起来,变得乐意同别人交往,变得自信了……因为我知道:
即使现在我是只“丑小鸭”