找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1559|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

電子時(shí)鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291657 發(fā)表于 2018-3-14 10:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#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();
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表