基于单片机at89s52的数字时钟设计内容摘要:

d display_2(year,mon,tian) {year_0=year%10。 year_1=year/10。 mon_0=mon%10。 mon_1=mon/10。 tian_0=tian%10。 tian_1=tian/10。 P2=0。 P0=tab[year_1]。 delay(200)。 P2=0x01。 P0=tab[year_0]。 delay(200)。 P2=0x02。 P0=0x40。 delay(200)。 P2=0x03。 P0=tab[mon_1]。 delay(200)。 P2=0x04。 7 P0=tab[mon_0]。 delay(200)。 P2=0x05。 P0=0x40。 delay(200)。 P2=0x06。 P0=tab[tian_1]。 delay(200)。 P2=0x07。 P0=tab[tian_0]。 delay(200)。 } main() { beef=0。 EA=1。 ET0=1。 TMOD=0x01。 TR0=1。 TH0=0x49。 TL0=0xf0。 // P2=0xFF。 while(1) { display_1(sec,min,hour)。 if(P34==0) { for (j=100。 j0。 j) {display_2(year,mon,tian)。 delay(10)。 } } if(flag==4||flag==5||flag==6) { for (j=300。 j0。 j) {display_2(year,mon,tian)。 delay(100)。 } } if(flag=7)flag=0。 if(min==0amp。 amp。 sec==0) {beef=1。 delay(1000)。 beef=0。 } } } void timer() interrupt 1 {TH0=0x49。 TL0=0xf0。 if(P32==0) { delay(10000)。 if(P32==0){flag++。 } } switch(flag) //位选择 {case 1: if(P33==0)delay(10000)。 if(P33==0)hour++。 break。 case 2: if(P33==0)delay(10000)。 if(P33==0)min++。 break。 case 3: if(P33==0)delay(10000)。 if(P33==0)sec++。 break。 case 4: if(P33==0)delay(10000)。 if(P33==0)year++。 break。 case 5: if(P33==0)delay(10000)。 if(P33==0)mon++。 break。 case 6: if(P33==0)delay(10000)。 if(P33==0)tian++。 break。 default:break。 } count++。 if(count==20amp。 amp。 sec=59) {count=0。 sec++。 } else if(sec==60amp。 amp。 min=5。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。