額,貌似你的有點(diǎn)復(fù)雜!我有個(gè)簡(jiǎn)單點(diǎn)的給你吧!用的是595控制的
void out595(); void xieru(uchar num); void timer_init(); void data_change(uchar num); void time_change(); void display(); void key_scan();
sbit K1=P1^4; sbit K2=P1^5; sbit K3=P1^6; sbit K4=P1^7;
uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; uchar code table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar temp,temp2,hour,minute,second,gew,shiw; //uchar code table2[3];
sbit SDA=P2^0; sbit SCLK=P2^1; sbit SLCK=P2^2;
void out595(); void xieru(uchar num);
void xieru(uchar num) { uchar i; for(i=0;i<=7;i++) { if((num&0x80)==0x80) SDA=1; else SDA=0; num<<=1; SCLK=0; SCLK=1; } } void out595() { SLCK=0; SLCK=1; }
void delay(uint z) //延時(shí)子程序 { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); }
void timer_init() { TMOD=0X11; TH1=0X4C; TL1=0X00; EA=1; ET1=1; TR1=1; temp=0;temp2=0; hour=0;minute=0;second=0; gew=0;shiw=0; } void data_change(uchar num) { shiw=num/10; gew=num%10; }
void time_change() { if(temp==20) { temp=0; second++; if(second==60) { second=0; minute++; if(minute==60) { minute=0; hour++; if(hour==24) { hour=0; } } } } }
void display() { data_change(second); xieru(TAB[gew]); xieru(table[7]); out595(); xieru(TAB[shiw]); xieru(table[6]); out595(); data_change(minute); xieru(TAB[gew]); xieru(table[4]); out595(); xieru(TAB[shiw]); xieru(table[3]); out595(); data_change(hour); xieru(TAB[gew]); xieru(table[1]); out595(); xieru(TAB[shiw]); xieru(table[0]); out595(); }
void key_scan() { if(K1==0) { delay(5); { if(K1==0) { while(!K1); second++; if(second==60) { second=0; } } } } if(K2==0) { delay(5); { while(!K2); minute++; if(minute==60) { minute=0; } } } if(K3==0) { delay(5); if(K3==0) { while(!K3); hour++; if(hour==24) { hour=0; } } } }
void t1() interrupt 3 { TH1=0X4C; TL1=0X00; temp++; time_change(); }
main()函數(shù)沒(méi)寫(xiě),你就自己把它加上吧,應(yīng)該沒(méi)問(wèn)題吧? |