基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc
- 文档编号:149106
- 上传时间:2022-10-04
- 格式:DOC
- 页数:9
- 大小:42.50KB
基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc
《基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc》由会员分享,可在线阅读,更多相关《基于郭天祥单片机数码管的电子钟含闹钟整点报时.doc(9页珍藏版)》请在冰豆网上搜索。
.
基于单片机数码管的电子钟(郭天祥系列单片机)
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()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 郭天祥 单片机 数码管 电子钟 闹钟 整点 报时