基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc

上传人:b****1 文档编号:149106 上传时间:2022-10-04 格式:DOC 页数:9 大小:42.50KB
下载 相关 举报
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc_第1页
第1页 / 共9页
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc_第2页
第2页 / 共9页
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc_第3页
第3页 / 共9页
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc_第4页
第4页 / 共9页
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc

《基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc》由会员分享,可在线阅读,更多相关《基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc(9页珍藏版)》请在冰豆网上搜索。

基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc

.

基于单片机数码管的电子钟(郭天祥系列单片机)

1、功能说明

(1)本电子钟可以显示当前时刻、年月日和闹钟时刻。

不同时间的显示可以用key4来切换。

(2)、独立键盘key1-key4(左到右)调节不同功能,7段数码管显示。

(3)整点提示功能:

当时间为整点时,蜂鸣器会滴滴滴响,响20秒;

(4)闹铃功能:

本程序有闹铃功能,当定时时间到时,闹铃会滴滴滴报警,报警30秒;

(5)附加功能:

当在闹铃和整点时,8个发光二极管会闪亮;

(6)时、分、秒之间和年、月、日之间也是用“.”分割。

2、键盘控制

(1)key1-键移动调整单位,每按一次移动一个单位,可调整时分秒、年月日和闹钟时间。

比如:

在显示时分秒时,按下key1键,可通过key2和key3对‘秒’加减;再按一下key1,可对‘分’加减;再按一下key1,可对‘时’加减;再按key1,时间开始走动

(2)key2-加1;key3-减1;

(3)key4-键切换时分秒、年月日和闹铃时间的显示。

比如:

当前为时分秒,按一下key4,则显示年月;再按一下,则显示闹铃时间;再按一下,则显示时分秒时间。

附录:

C语言程序

//设计项目:

带闹铃的电子钟

//功能:

key1-键:

开始/调时分秒/调年月日/调定时

//key2-键:

加1

//key3-键:

减1

//key4-键:

切换页面

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P2^6;

sbitwela=P2^7;

sbitkey1=P3^4;

sbitkey2=P3^5;

sbitkey3=P3^6;

sbitkey4=P3^7;

sbitbear=P2^3;

ucharcodetable[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,

0x79,0x71};

ucharsec1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2;

voidkeyscan();

voiddisplay(ucharhour,ucharmin,ucharsec);

voiddelay(uintz)

{

uintx,y;

for(x=0;x

for(y=0;y<110;y++);

}

voidinit()

{

TMOD=0X02;

TH0=6;

TL0=6;

EA=1;

ET0=1;

TR0=1;

hour1=00;

min1=00;

sec1=00;

year1=12;

mon1=03;

day1=10;

}

voiddisplay(ucharhour,ucharmin,ucharsec)

{

uchars1,s2,m1,m2,h1,h2;

s2=sec/10;

s1=sec%10;

m2=min/10;

m1=min%10;

h2=hour/10;

h1=hour%10;

dula=1;

P0=table[h2];

dula=0;

P0=0XFF;

wela=1;

P0=0XFE;

delay

(1);

dula=1;

P0=table[h1]+0x80;

dula=0;

P0=0XFF;

wela=1;

P0=0XFd;

delay

(1);

dula=1;

P0=table[m2];

dula=0;

P0=0XFF;

wela=1;

P0=0XFb;

delay

(1);

dula=1;

P0=table[m1]+0x80;

dula=0;

P0=0XFF;

wela=1;

P0=0XF7;

delay

(1);

dula=1;

P0=table[s2];

dula=0;

P0=0XFf;

wela=1;

P0=0Xef;

delay

(1);

dula=1;

P0=table[s1];

dula=0;

P0=0XFF;

wela=1;

P0=0Xdf;

delay

(1);

}

voidkeyscan()

{

if(key1==0)

{

delay(10);

if(key1==0)

{

//TR0=0;

temp1++;

if(temp1==4)

{

temp1=0;

TR0=1;

}

while(!

key1)

switch(temp2)

{

case0:

display(hour1,min1,sec1);break;

case1:

display(year1,mon1,day1);break;

case2:

display(hour2,min2,sec2);break;

}

}

}

if(key2==0)

{

delay(10);

if(key2==0)

{

if(temp2==0)

{ TR0=0;

switch(temp1)

{

case1:

sec1++;if(sec1==60)sec1=0;break;

case2:

min1++;if(min1==60)min1=0;break;

case3:

hour1++;if(hour1==24)hour1=0;break;

}

while(!

key2)

display(hour1,min1,sec1);

}

if(temp2==1)

{ TR0=1;

switch(temp1)

{

case1:

day1++;if(day1==31)day1=1;break;

case2:

mon1++;if(mon1==13)mon1=1;break;

case3:

year1++;if(year1==100)year1=0;break;

}

while(!

key2)

display(year1,mon1,day1);

}

if(temp2==2)

{ TR0=1;

switch(temp1)

{

case1:

sec2++;if(sec2==60)sec2=0;break;

case2:

min2++;if(min2==60)min2=0;break;

case3:

hour2++;if(hour2==24)hour2=0;break;

}

while(!

key2)

display(hour2,min2,sec2);

}

}

}

if(key3==0)

{

delay(10);

if(key3==0)

{

if(temp2==0)

{ TR0=0;

switch(temp1)

{

case1:

if(sec1==0)sec1=60;sec1--;break;

case2:

if(min1==0)min1=60;min1--;break;

case3:

if(hour1==0)hour1=24;hour1--;break;

}

while(!

key3)

display(hour1,min1,sec1);

}

if(temp2==1)

{ TR0=1;

switch(temp1)

{

case1:

if(day1==1)day1=31;day1--;break;

case2:

if(mon1==1)mon1=13;mon1--;break;

case3:

if(year1==0)year1=100;year1--;break;

}

while(!

key3)

display(year1,mon1,day1);

}

if(temp2==2)

{ TR0=1;

switch(temp1)

{

case1:

if(sec2==0)sec2=60;sec2--;break;

case2:

if(min2==0)min2=60;min2--;break;

case3:

if(hour2==0)hour2=24;hour2--;break;

}

while(!

key3)

display(hour2,min2,sec2);

}

}

}

if(key4==0)

{

delay(10);

if(key4==0)

{

temp1=0;

temp2++;

if(temp2==3)

temp2=0;

while(!

key4)

switch(temp2)

{

case0:

display(hour1,min1,sec1);break;

case1:

display(year1,mon1,day1);break;

case2:

display(hour2,min2,sec2);break;

}

}

}

switch(temp2)

{

case0:

display(hour1,min1,sec1);break;

case1:

display(year1,mon1,day1);break;

case2:

display(hour2,min2,sec2);break;

}

}

voidalarm()

{

uinti;

if((hour1==hour2&&min1==min2&&(sec1>=sec2&&sec1

{ for(i=0;i<20;i++)

{

bear=~bear;

P1=~P1;

switch(temp2)

{

case0:

display(hour1,min1,sec1);break;

case1:

display(year1,mon1,day1);break;

case2:

display(hour2,min2,sec2);break;

}

delay(30);

}

bear=1;

P1=0xff;

}

}

voidmain()

{

init();

while

(1)

{

keyscan()

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

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1