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

  • 8
  • 0
  • 约3.62千字
  • 约 13页
  • 2016-09-19 发布于重庆
  • 举报

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

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

51单片机c语言电子钟(已加入调时、闹铃、整点报时功能) 效果图: 程序如下: //51单片机c语言电子钟(已加入调时、闹铃、整点报时功能) //WHJWNAVY 2011/10/14 ? #includereg51.h #includeabsacc.h #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;???????????????? //second 调整定义 sbit P1_1=P1^1;???????????????? //minite调整定义 sbit P1_2=P1^2;???????????????? //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;j125;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)

文档评论(0)

1亿VIP精品文档

相关文档