邯郸电子吧 关注:14贴子:45
  • 2回复贴,共1

自制电子钟,暑假的第一个作品,求助攻。

只看楼主收藏回复

暑假在学校自学单片机,终于有点收获,纯手工做的电子钟。


1楼2013-08-11 22:45回复
    #include<reg52.h> #define uchar unsigned char
    #define uint unsigned int
    #define dula P0
    #define wela P2 sbit led1=P1^0;
    sbit led2=P1^1;
    sbit s1=P3^4; //数码管转换
    sbit s2=P3^5; //按键加一
    sbit s3=P3^6; //按键减一 uchar shi2,shi1,fen2,fen1,aa,j,k;
    int num2=0,num1=0,key=0,num=0;
    uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
    0x82,0xf8,0x80,0x90,0xff}; void delay(uchar i)
    {
    for(j=i;j>0;j--)
    for(k=110;k>0;k--);
    } void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1)
    {
    P2=0xfe;
    P0=table[shi2];
    delay(5);
    dula=0xff;
    delay(5); P2=0xfd;
    P0=table[shi1];
    delay(5);
    dula=0xff;
    delay(5); P2=0xfb;
    P0=table[fen2];
    delay(5);
    dula=0xff;
    delay(5); P2=0xf7;
    P0=table[fen1];
    delay(5);
    dula=0xff;
    delay(5);
    }
    void keyscan()
    {
    if(s1==0)
    {
    delay(10);
    if(s1==0)
    {
    while(~s1);
    key++;
    if(key==3)
    {
    TR0=1;
    //display(shi2,shi1,fen2,fen1);
    key=0;
    }
    }
    } if(s2==0)
    {
    delay(10);
    if(s2==0)
    {
    while(~s2);
    if(key==1)
    {
    TR0=0;
    num2++;
    if(num2==24)
    num2=0;
    } if(key==2)
    {
    TR0=0;
    num1++;
    if(num1==60)
    num1=0;
    }
    }
    } if(s3==0)
    {
    delay(10);
    if(s3==0)
    {
    while(~s3);
    if(key==1)
    {
    TR0=0;
    num2--;
    if(num2==-1)
    num2=23;
    } if(key==2)
    {
    TR0=0;
    num1--;
    if(num1==-1)
    num1=59;
    }
    }
    }
    } void init()
    {
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    } void main()
    {
    init();
    while(1)
    {
    keyscan();
    if(aa==10)
    {
    led1=0;
    led2=0;
    }
    if(aa==19)
    {
    led1=1;
    led2=1;
    }
    if(aa==20)
    {
    aa=0;
    num++;
    if(num==60)
    {
    num=0;
    num1++;
    if(num1==60)
    {
    num1=0;
    num2++;
    if(num2==24)
    {
    num2=0;
    }
    }
    }
    } shi2=num2/10;
    shi1=num2%10;
    fen2=num1/10;
    fen1=num1%10;
    if((shi2==0)&&(shi1>0))
    {
    shi2=10;
    }
    display(shi2,shi1,fen2,fen1);
    }
    } void timer0() interrupt 1
    {
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    aa++;
    }


    3楼2013-08-11 22:51
    回复
      2026-02-03 21:31:55
      广告
      不感兴趣
      开通SVIP免广告


      来自手机贴吧4楼2013-09-26 08:40
      回复