单片机c语言可调时钟程序rkdk2w.docVIP

  • 3
  • 0
  • 约2.44千字
  • 约 9页
  • 2018-07-08 发布于湖北
  • 举报
单片机c语言可调时钟程序rkdk2w

/*CMS所做的可调时钟程序*/ #includereg51.h char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示数字 unsigned int i=0,j=0,k=0; unsigned char time=0,sec=0,min=0,hour=0,keyy=0; sbit key1=P2^0; sbit key2=P2^1; sbit key3=P2^2; unsigned char keyn; void display(unsigned char sec,unsigned char min,unsigned char hour); void delay(unsigned int j)//延时函数 { for(j=0;j200;j++); } void display(unsigned char sec,unsigned char min,unsigned char hour)//显示函数 { P3=0xfe; P1=led[sec%10];//珊哥个秒 delay(10); P3=0xfd; P1=led[sec/10];//珊哥十秒 delay(10); P3=0xfb; P1=0x40; delay(10); P3=0xf7; P1=led[min%10];//珊哥个分 delay(10); P3=0xef; P1=led[min/10];//珊哥十分 delay(10); P3=0xdf; P1=0x40; delay(10); P3=0xbf; P1=led[hour%10];//珊哥个时 delay(10); P3=0x7f; P1=led[hour/10];//珊哥十时 delay(10); } void key()//开关检测 { if(key1==0)//检测开关1 { delay(10);//开关抖动 if(key1==0) { keyn++; while(!key1){display(sec,min,hour);}; if(keyn==1)//确认开关已弹起 { TR0=0; } if(keyn==2) { TR0=0; } if(keyn==3) { TR0=0; } if(keyn==4) { keyn=0; TR0=1; } } } if(keyn!=0) { if(key2==0)//检测开关2 { delay(10); if(key2==0) { while(!key2){display(sec,min,hour);} if(keyn==1) { hour++;//调测小时 if(hour==24) hour=0; display(sec,min,hour); } if(keyn==2) { min++;//调测分钟 if(min==60) min=0; display(sec,min,hour); } if(keyn==3) { sec++;//调测秒 if(sec==60) sec=0; display(sec,min,hour); } } } if(key3==0)//检测开关3 { delay(10); if(key3==0) { while(!key3){display(sec,min,hour);} if(keyn==1) { hour--;//调测小时 if(hour==-1) hour=23; display(sec,min,hour); } if(keyn==2) { min--;//调测分钟 if(min==-1) min=59; display(sec,min,hour); } if(keyn==3) { sec--;//调测秒 if(sec==-1) sec=59; display(sec,min,hour); } } } } }

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档