您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 数字时钟C程序及仿真
**************************************/#includereg52.HunsignedcharcodeSEG7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf,0xff,};unsignedshortinttcount;//sbitset=P1^0;//sbitup=P1^1;//sbitdown=P1^2;unsignedcharDisSecondL,DisSecondH,DisMinutL,DisMinutH,DisHourL,DisHourH;//结构体变量structtime{unsignedcharsecond;unsignedcharminute;unsignedcharhour;}time1;//延时子程序voiddelay(k)unsignedintk;{unsignedcharj;while((k--)!=0)for(j=0;j125;j++);}//时钟调整子程序TimeUpDown(n,x,y)unsignedcharn,x,y;{if(up==0){delay(50);//消除抖动if(up==0){n++;if(n==x)//上限越界显示为0n=0;while(up==0);}}if(down==0){delay(50);if(down==0){if(n==0)//下限越界显示为最大可显示n=y;elsen--;while(down==0);}}returnn;//返回调整后的值}*///显示子程序voiddisplay(DisSecondL,DisSecondH,DisMinutL,DisMinutH,DisHourL,DisHourH){//日日日日日日//123456//hHhLmHmLsHsL//010204081020P2=0x00;P0=SEG7[DisSecondL];//显示秒钟的个位P2=0x20;delay(3);P2=0x00;P0=SEG7[DisSecondH];//显示秒钟的十位P2=0x10;delay(3);P2=0x00;P0=SEG7[DisMinutL];//显示分钟的个位P2=0x08;delay(3);P2=0x00;P0=SEG7[DisMinutH];//显示分钟的十位P2=0x04;delay(3);P2=0x00;P0=SEG7[DisHourL];//显示小时的个位P2=0x02;delay(3);P2=0x00;if(DisHourH==0){;}else{P0=SEG7[DisHourH];//显示小时的十位P2=0x01;delay(3);}}voidmain(){//unsignedcharFlag;time1.second=40;time1.minute=03;time1.hour=05;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){display(DisSecondL,DisSecondH,DisMinutL,DisMinutH,DisHourL,DisHourH);if(set==0)//设置标志位Flag{delay(50);if(set==0){TR0=0;Flag++;if(Flag3)//0:显示时间,1:小时调整,2:分钟调整,3:秒调整Flag=0;}while(set==0);}switch(Flag){case0:TR0=1;display(time1.second%10,time1.second/10,time1.minute%10,time1.minute/10,time1.hour%10,time1.hour/10);break;case1://时钟小时调整TR0=0;time1.hour=TimeUpDown(time1.hour,24,23);display(10,10,10,10,time1.hour%10,time1.hour/10);break;case2://时钟分钟调整time1.minute=TimeUpDown(time1.minute,60,59);display(10,10,time1.minute%10,time1.minute/10,10,10);break;case3://时钟秒调整time1.second=TimeUpDown(time1.second,60,59);display(time1.second%10,time1.second/10,10,10,10,10);break;//default://break;}}}voidt0(void)interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tcount++;if(tcount==20){tcount=0;time1.second++;}if(time1.second=60){time1.second=0;time1.minute++;}if(time1.minute=60){time1.minute=0;time1.hour++;}if(time1.hour=12){time1.hour=1;}DisSecondL=time1.second%10;DisSecondH=time1.second/10;DisMinutL=time1.minute%10;DisMinutH=time1.minute/10;DisHourL=time1.hour%10;DisHourH=time1.hour/10;}
本文标题:数字时钟C程序及仿真
链接地址:https://www.777doc.com/doc-7244361 .html