logo资料库

51单片机c语言电子钟(已加入调时、闹铃、整点报时功能).doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
51 单片机 c 语言电子钟(已加入调时、闹铃、 整点报时功能) 效果图:
程序如下: //51 单片机 c 语言电子钟(已加入调时、闹铃、整点报时功 能) //WHJWNAVY 2011/10/14 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ //此表为 LED 的字模, 共阴数码管 0-9 - uchar code dispcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x40}; //段码控制 /*定义并初始化变量*/ uchar seconde=0;//秒 uchar minite=0;//分 uchar hour=12; //时 uchar mstcnt=0;//定时器计数,定时 50ms,mstcnt 满 20, 秒加 1 uchar shi=0;//闹铃功能 uchar fen=0;
uchar bjcs;//报警次数 sbit P1_0=P1^0; 调整定义 sbit P1_1=P1^1; 调整定义 sbit P1_2=P1^2; 整定义 //second //minite //hour 调 sbit P1_5=P1^5; //整点报时 sbit P1_3=P1^3; //闹铃功能,调整时间 sbit P1_6=P1^6; sbit P1_7=P1^7; //调整时 //调整分 sbit P1_4=P1^4; //关闭闹铃 /*函数声明*/ void delay(uint k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*延时子程序*/
void delay (uint k) { uchar j; while((k--)!=0) for(j=0;j<125;j++) {;} { } } /*时间处理子程序*/ void time_pro(void) { if(seconde==60) { seconde=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) {
hour=0; } } } } /*显示子程序*/ void display(void) { if(P1_3==1) { P2=0XFE; P0=dispcode[seconde%10];//秒个位 delay(1); P2=0XFD; P0=dispcode[seconde/10];//秒十位 delay(1); P2=0XFB; P0=dispcode[10];//间隔符 - delay(1); P2=0XF7; P0=dispcode[minite%10];//分个位 delay(1);
P2=0XEF; P0=dispcode[minite/10];//分十位 delay(1); P2=0XDF; P0=dispcode[10];//间隔符 - delay(1); P2=0XBF; P0=dispcode[hour%10];//时个位 delay(1); P2=0X7F; P0=dispcode[hour/10];//时十位 delay(1); } } /*键盘扫描子程序*/ void keyscan(void) { if(P1_0==0)//秒位的调整 { delay(30); if(P1_0==0) {
seconde++; if(seconde==60) seconde=0; { } } delay(250); } if(P1_1==0)//分位的调整 { } delay(30); if(P1_1==0) { } minite++; if(minite==60) { } minite=0; delay(250); if(P1_2==0)//时位的调整
{ delay(30); if(P1_2==0) { } hour++; if(hour==24) { } hour=0; delay(250); } } /*整点报警*/ void zhengdian (void) { if((seconde==0)&(minite==0))//整点报时 { } P1_5=0; delay(1000); P1_5=1;
分享到:
收藏