標題: 電子時鐘 [打印本頁]

作者: yywwzz    時間: 2018-3-14 10:10
標題: 電子時鐘
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0X87,0xFF,0xDF};
uchar seconde=0;
uchar minite=0;
uchar hour=12;
uchar mstcnt=0;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
void delay(uint k);
void delay1(uchar h);
void time_pro();
void display();
void keyscan();
void delay1(uchar h)
{
        uchar j;
        while((h--)!=0)
        {
                for(j=0;j<125;j++)
                {
                        ;
}
}
}
void delay(uint k)
{
        uint a,b,c;
        for(c=k;c>0;c--);
        for(b=38;b>0;b--);
        for(a=130;a>0;a--);
}
void time_pro(void)
{
        if(seconde==60)
        {
                seconde=0;
                minite++;
                if(minite==60)
                {
                        minite=0;
                        hour++;
                        if(hour==24)
                        {
                                hour=0;
}
}
}
}
void display(void)
{
        P2=0xfe;
        P0=dispcode[hour/10];
        delay1(4);
        P2=0xfd;
        P0=(dispcode[(hour%10)]);
        delay1(4);
        P2=0xfb;
        P0=dispcode[minite/10];
        delay1(4);
        P2=0xf7;
        P0=dispcode[minite%10];
        delay1(4);
        P2=0xef;
        P0=dispcode[seconde/10];
        delay1(4);
        P2=0xdf;
        P0=dispcode[seconde%10];
        delay1(4);
}
void keyscan(void)
{
        if(P1_1==0)
        {
                delay(8000);
                if(P1_0==0)
                {
                        delay(8000);
                        seconde++;
                        if(seconde==60)
                        {
                                seconde=0;
}
}
}
        if(P1_1==0)
        {
                delay(8000);
                if(P1_1==0)
                {
                        delay(8000);
                        minite++;
                        if(minite==60)
                        {
                                minite=0;
}
}
}       
        if(P1_2==0)
        {
                delay(8000);
                if(P1_2==0)
                {
                        delay(8000);
                        hour++;
                        if(hour==24)
                        {
                                hour=0;
}
}
}       
}
void timer0(void) interrupt 1 using 0
{
        TH0=0x3c;
        TMOD=0x11;
        mstcnt++;
        if(mstcnt==20)
        {
                seconde++;
                mstcnt=0;
}
}
void main(void)
{
        P1=0xff;
        TMOD=0x11;
        TH0=0x3c;
        TL0=0xb0;
        EA=1;
        ET0=1;
        TR0=1;
        while(1)
        {
                keyscan();
                time_pro();
                display();
}
}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1