2023-04-24

時鐘

#include<reg51.h>

code unsigned char seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char sec=50,min=44,hour=12;

unsigned char sec_t,min_t,hour_t;? ? ? ? //?óêüμ±?°μ÷??μ???ê±·?

unsigned char cp,i,flash,cp1,key_flag=0;? //key_flag?£ê?±ê??±?á?

sbit mode = P3^3;

sbit Add = P3^2;

sbit Cut = P3^1;

sbit Reset = P3^0;

/*?óê±oˉêy*/

void delay(unsigned int x)

{

? while(x--);

}

/*°′?ü????oˉêy*/

void key(void)

{

? if(mode==0)? ? ? ? //è?1?°′?ü°′??

? ? {

delay(300);? ? ? //?óê±??3y°′?ü??

while(mode==0);? //è?1?°′?üè·êμ°′??£?μè′y°′?üáá?e

hour_t=hour;

min_t=min;

sec_t=sec;

key_flag++;

if(key_flag>3)key_flag=1;

? ? }

if(Add==0)//?ó°′?ü

{

delay(300);//?óê±??3y?ü??

while(Add==0);//è?1?°′?üè·êμ°′??£?μè′y°′?üì§?e

if(key_flag==1)//D?ê±++

hour_t++;

if(hour_t>=24)

hour_t=0;

hour=hour_t;//?3?μ

if(key_flag==2)//·??ó++

min_t++;

if(min_t>=60)

min_t=0;

? ? ? min=min_t; //?3?μ

if(key_flag==3)//??++

sec_t++;

if(sec_t>=60)

sec_t=0;

sec=sec_t;//?3?μ

}

if(Cut==0)

{

delay(300);//?óê±??3y?ü??

while(Cut==0);//è?1?°′?üè·êμ°′??£?μè′y°′?üì§?e

if(key_flag==1)//D?ê±--

hour_t--;

if(hour_t<0)

hour_t=23;

hour=hour_t;//?3?μ

if(key_flag==2)//·??ó--

min_t--;

if(min_t<0)

min_t=59;

? ? ? min=min_t; //?3?μ

if(key_flag==3)//??--

sec_t--;

if(sec_t<0)

sec_t=59;

sec=sec_t;//?3?μ

}

if(Reset==0)

{

delay(300);

while(Reset==0)

key_flag=0;

}

}

void timer0_isr(void) interrupt 1 ?

{

TH0=(65535-5000)/256;

TL0=(65535-5000)%256;

cp++; ? ? ?

if(cp>=100)

? {

cp=0;

cp1++;

flash=~flash;

? }

? if(cp1>=2)

? {

cp1=0;

sec++;

? }

if(sec>=60)

{

sec=0;

? ? min++;

}

? if(min>=60)

{

min=0;

hour++;

}

if(hour>=24)

{

? hour=0;

}

P0=0xff;//??òt??3yP0^0???úμ?êy?Y

if(key_flag==0)

{

switch(i)

{

case 0:P0=seven_seg[sec % 10];P2=0xdf;break;

case 1:P0=seven_seg[sec / 10];P2=0xef;break;

case 2:P0=seven_seg[min % 10]&(0x7f|flash);P2=0xf7;break;

case 3:P0=seven_seg[min / 10];P2=0xfb;break;

case 4:P0=seven_seg[hour % 10]&(0x7f|flash);P2=0xfd;break;

case 5:P0=seven_seg[hour / 10];P2=0xfe;break;

}

}

//μ÷??D?ê±£?D?ê±éá??

if(key_flag==1)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10];P2=0xdf;break;//??ê???μ?????

case 1:P0=seven_seg[sec_t / 10];P2=0xef;break;//??ê???μ?????

case 2:P0=seven_seg[min_t % 10];P2=0xf7;break;//??ê?·?μ?????

case 3:P0=seven_seg[min_t / 10];P2=0xfb;break;//??ê?·?μ?????

case 4:P0=seven_seg[hour_t % 10] | flash;P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10] | flash;P2=0xfe;break;

}

}

//μ÷ê?·??ó£?·??óéá??

if(key_flag==2)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10];P2=0xdf;break;//??ê???μ?????

case 1:P0=seven_seg[sec_t / 10];P2=0xef;break;//??ê???μ?????

case 2:P0=seven_seg[min_t % 10]| flash;P2=0xf7;break;//??ê?·?μ?????

case 3:P0=seven_seg[min_t / 10]| flash;P2=0xfb;break;//??ê?·?μ?????

case 4:P0=seven_seg[hour_t % 10];P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10];P2=0xfe;break;

}

}

//μ÷ê???£???éá??

if(key_flag==3)

{

switch(i)

{

case 0:P0=seven_seg[sec_t % 10]| flash;P2=0xdf;break;//??ê???μ?????

case 1:P0=seven_seg[sec_t / 10]| flash;P2=0xef;break;//??ê???μ?????

case 2:P0=seven_seg[min_t % 10];P2=0xf7;break;//??ê?·?μ?????

case 3:P0=seven_seg[min_t / 10];P2=0xfb;break;//??ê?·?μ?????

case 4:P0=seven_seg[hour_t % 10];P2=0xfd;break;

case 5:P0=seven_seg[hour_t / 10];P2=0xfe;break;

}

}

i++;

? ? if(i>=6)//μ÷ó?????êy??1üμ???ê?×′ì?

? {

? ? i=0;

? }

}

void timer0_init(void) ? ? ? ? ? ? ? ? ? ? ?

{

TMOD=0x01;

TH0=(65535-2000)/256;

TL0=(65535-2000)%256;

ET0=1;

TR0=1;

EA=1;

}

void main(void)

{

timer0_init();

P2=0x00;

while(1)

{

key();

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容