资源描述:
《数字时钟C程序及仿真.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、**************************************/#includeunsignedcharcodeSEG7[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,Di
2、sMinutH,DisHourL,DisHourH;//结构体变量structtime{unsignedcharsecond;unsignedcharminute;unsignedcharhour;}time1;//延时子程序voiddelay(k)unsignedintk;{unsignedcharj;while((k--)!=0)for(j=0;j<125;j++);}//时钟调整子程序TimeUpDown(n,x,y)unsignedcharn,x,y;{if(up==0){delay(50);//消除抖
3、动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//hHh
4、LmHmLsHsL//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[DisHo
5、urL];//显示小时的个位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;whi
6、le(1){display(DisSecondL,DisSecondH,DisMinutL,DisMinutH,DisHourL,DisHourH);if(set==0)//设置标志位Flag{delay(50);if(set==0){TR0=0;Flag++;if(Flag>3)//0:显示时间,1:小时调整,2:分钟调整,3:秒调整Flag=0;}while(set==0);}switch(Flag){case0:TR0=1;display(time1.second%10,time1.second/10,t
7、ime1.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
8、.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)inter