首页 手机版
关注我们
  • 关注公众号
您所在的位置: 查证宝 > 问答 > 正文
  • ?

    求89c52单片机 C语言实现数字时钟程序

  • 汽车
  • 查证宝用户
  • 2024-11-17
最佳答案

#include#include#defineRESTP3_4#defineSCLKP3_7#defineDATAP3_6unsignedcharcodedisplayCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedcharcodecontroladdress[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0xbe};unsignedcharhour,minute,second;unsignedcharday,month,week,year;unsignedcharclockhour,clockminute;unsignedintnum;unsignedcharselect,oneminute;bitbdatamodeselect;voiddelay();voidwritetime();voiddisplay(unsignedchartemp,unsignedcharmode);voidsound(){while(num<2000){P3_0=0;}P3_0=1;}voidinitial(){P0=0;TMOD=0x22;IE=0xCF;IT0=1;IT1=1;T2CON=0;RCAP2L=0xf0;RCAP2H=0x1f;TH2=0x1c;TL2=0xf0;IP=0X06;TH0=0x48;TL0=0x48;TH1=0X48;TR0=1;PCON=0x01;hour=12;minute=0;second=0;num=0;select=0;clockhour=12;clockminute=0;modeselect=0;day=16;month=8;week=7;year=9;}voidinterrupt0()interrupt0using3{TR1=1;select++;if(select==8){select=0;}if(select==1)ET2=1;oneminute=second-1;}voidtimer0()interrupt1using3{num++;if(num==5000){num=0;second++;}if(second>=60){minute++;second=0;}if(minute>=60){hour++;minute=0;}if(hour>=24)hour=0;}voidinterrupt1()interrupt2using3{oneminute=second-1;switch(select){case4:{hour++;if(hour>=24)hour=0;break;}case5:{minute++;if(minute>=60)minute=0;break;}case6:{second++;if(second>=60)second=0;break;}case2:{clockhour++;if(clockhour>=24)clockhour=0;break;}case3:{clockminute++;if(clockminute>=60)clockminute=0;break;}default:{modeselect=0;ET2=!ET2;break;}}}voidtimer1()interrupt3using3{if(select){if(second==oneminute){select=0;TR1=0;}}}voidtimer2()interrupt5using3{sound();TF2=0;if(minute!=clockminute||hour!=clockhour)TR2=0;}voiddelay(){unsignedchari=255;while(--i){;}}voiddisplay(unsignedchartemp,unsignedcharmode){if(temp==4||temp==2)P0=0;elseP0=1;if(mode)P1=displayCode[hour/10];elseP1=displayCode[clockhour/10];delay();if(temp==4||temp==2)P0=0;elseP0=2;if(mode)P1=displayCode[hour%10];elseP1=displayCode[clockhour%10];delay();if(temp==1||temp==2||temp==3)P0=0;elseP0=4;P1=0xbf;delay();if(temp==5||temp==3)P0=0;elseP0=8;if(mode)P1=displayCode[minute/10];elseP1=displayCode[clockminute/10];delay();if(temp==5||temp==3)P0=0;elseP0=16;if(mode)P1=displayCode[minute%10];elseP1=displayCode[clockminute%10];delay();if(temp==1||temp==2||temp==3)P0=0;elseP0=32;P1=0xbf;delay();if(temp==6)P0=0;elseP0=64;if(mode)P1=displayCode[second/10];elseP1=displayCode[0];delay();if(temp==6)P0=0;elseP0=128;if(mode){if(ET2)P1=displayCode[second%10]+128;elseP1=displayCode[second%10];}elseP1=displayCode[0];delay();}voidwrite(unsignedcharBdata){unsignedchari=8;for(;i>0;i--){if(Bdata&0x01)DATA=1;elseDATA=0;SCLK=1;SCLK=0;Bdata>>=1;}}voidwritedata(unsignedcharaddress,Bdata){REST=0;SCLK=0;_nop_();REST=1;write(address);write(Bdata);REST=0;}unsignedcharread(unsignedcharBdata){unsignedchartdata=0,i=8;REST=0;SCLK=0;_nop_();REST=1;write(Bdata);for(;i>0;i--){tdata>>=1;if(DATA)tdata=tdata|0x80;elsetdata|=0x00;SCLK=1;SCLK=0;}returntdata;}voidwritetime(){unsignedchari,time,temp[3];temp[0]=second;temp[1]=minute;temp[2]=hour;for(i=0;i<3;i++){time=temp[i]%10;time|=(temp[i]/10)<<4;writedata(controladdress[i],time);}}voidwriteyear(){unsignedchari,year0,temp[4];temp[0]=day;temp[1]=month;temp[2]=week;temp[3]=year;for(i=0;i<4;i++){year0=temp[i]%10;year0|=(temp[i]/10)<<4;writedata(controladdress[i+3],year0);}}voidreadtime(){unsignedchari,time,temp[3];for(i=0;i<3;i++){temp[i]=read(1+controladdress[i]);time=temp[i]&0x0f;time+=(temp[i]>>4)*10;temp[i]=time;}second=temp[0];minute=temp[1];hour=temp[2];}voidreadyear(){unsignedchari,year0,temp[4];for(i=0;i<4;i++){temp[i]=read(1+controladdress[i+3]);year0=temp[i]&0x0f;year0+=(temp[i]>>4)*10;temp[i]=year0;}day=temp[0];month=temp[1];week=temp[2];year=temp[3];}voidmain(){initial();sound();writedata(0x8e,0x00);writedata(0x84,0x12);writedata(0x8f,0x00);readtime();writeyear();readyear();while(1){switch(select){case0:{display(0,1);break;}case1:{if(num<=2500){display(1,0);}else{display(0,0);}break;}case2:{if(num<=2500){display(2,0);}else{display(0,0);}break;}case3:{if(num<=2500){display(3,0);}else{display(0,0);}break;}case4:{if(num<=2500){display(4,1);}else{display(0,1);}break;}case5:{if(num<=2500){display(5,1);}else{display(0,1);}break;}case6:{if(num<=2500){display(6,1);}else{display(0,1);}break;}case7:{writetime();writetime();writetime();select=0;break;}default:break;}if(second==0){if(minute==0||minute==30)sound();}if(minute==clockminute&&hour==clockhour){TR2=1;modeselect=1;}if(modeselect==1&&hour==clockhour&&!((minute-clockminute)%5))TR2=1;}}

相关问题

长春 到 牡丹江 行车路线

全程约563.1公里长春市1.长春市内驾车方案详情1)从起点向正东方向出发,行驶230米,右转2)行驶60米,右转进入人民大街3)沿人民大街行驶420米,左转4)行驶20米,右转进入人民大街5)沿人民

汽车| 2024-11-20

小牛7寸行车记录仪

您好,我看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分的并且你的悬赏分也会被没收!所以我给你提几条建议:一,你可以选择在正确的分类下去提问,这样知道你问题答案的人才会多一些,回答的人也会多

汽车| 2024-11-20

上海自由者缴医疗保险要缴满多少年

参保单位及其职工应缴的医保费每月20日前由单位通过地税部门征缴,其中职工个人应缴的医保费由单位按月从职工的工资收入中代扣代缴。随用人单位参加职工医疗保险的参保人员,按规定办理退休时,其基本医疗保险缴费

汽车| 2024-11-20

作文防写妈妈的行车记录仪

妈妈是卖行车记录仪的我的妈妈是卖行车记录仪的,天天上班没有节假日,不能陪我一起玩。听妈妈说今年生意特别难做,我非常担心爸爸哪一天被累垮了。如果我的妈妈累垮了,他就不能给我买鱼买肉吃。不能吃鱼吃肉我的记

汽车| 2024-11-20

丁威特记录仪沈阳哪里安装

首选有没有装卡!很多的行车记录仪没有装卡可能开一会就自动关机的。如果装卡了确认是不是C10的高速卡,如果不是就更换(与这个问题有很大的关系重点检查)。以上确认了在再次确认电池是否有没有电了。以上问题都

汽车| 2024-11-20

交通事故责任划分

摩托车是在小轿车的右侧行驶吗?如果是这样的话,那么小轿车应该等摩托车安全驶过之后再右转弯,如果辆车并行前行,那么准备右转的小轿车承担全责(在没其他特殊情况下)至于描述中的,摩托车加速超越小轿车,导致小

汽车| 2024-11-20