• 專注電子技術學習與研究
    當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

    基于8位數碼管的可調時鐘時鐘課程設計

    作者:佚名   來源:本站原創   點擊數:  更新時間:2012年04月23日   【字體:

      這個東西折騰我快兩個月啊~!也是帶啦做的不是一直在做是一邊學習一邊玩弄來的啊~!但是怎么說我也弄出來啊~!心里好滿足啊~!因為這個可算是自己的成果。也給謝謝這次課程設計因為就這個設計讓我理解很多東西讓我感覺進步很多,F在就差自己做PCB板啊~!然后就是全部搞定啊~!哈哈~!

    電路很簡單 8位共陰數碼管 (如果沒有買的可以買2個四位數碼管) 段選接P2口 位選接p1口,用stc單片機可以直接連接,兩個按鍵接p1.6 和p1.7,實現時間的調整功能.完整程序代碼下載地址:http://www.userform1.com/f/dzszkt.rar

    這個就是我自己弄的程序小時鐘的:

    #include<reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff};
    uchar code kai[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};
    sbit tiao=P1^6;
    sbit gai=P1^7;
    uchar hour,min,sec,e,set,dada,x,i,j,u,v,w,s,m,n,p,q;
    void delay(uchar k)
    {
        uchar a,b;
     for(a=0;a<k;a++)
     {
      for(b=0;b<100;b++)
      {
       ;
      }
     }
    }
    void time_cond(void)
    {
     if(sec==59)
     {
      sec=0;
      min++;
     }//sec
     if(min==59)
     {
      min=0;
      hour++;
     }//min
     if(hour==23)
     {
      hour=0;
     }//hour
    }//time_con
    void xianshi(uchar i,j,u,v,w,s)
    {
     P2=table[i];
     P1=kai[0];
     delay(5);
     P2=table[j];
     P1=kai[1];
     delay(5);
     P2=table[p];
     P1=kai[2];
     delay(5);
     P2=table[u];
     P1=kai[3];
     delay(5);
     P2=table[v];
     P1=kai[4];
     delay(5);
     P2=table[q];
     P1=kai[5];
     delay(5);
     P2=table[w];
     P1=kai[6];
     delay(5);
     P2=table[s];
     P1=kai[7];
     delay(5);
    }
    void KEY_tiao(void)
    {
     if(gai==0)
     {
      e++;
     }
     if(e>3)
     {
      e=1;
     }
     delay(200);
    }//tiaozheng
    void display_h(void)
    {
     P2=table[i];
     P1=kai[0];
     delay(20);
     P2=table[j];
     P1=kai[1];
     delay(20);
     P2=table[11];
     P1=kai[0];
     delay(20);
     P2=table[11];
     P1=kai[1];
     delay(20);
     i=hour/10;
     j=hour%10;
    }//display_h
    void display_m(void)
    {
     P2=table[u];
     P1=kai[3];
     delay(20);
     P2=table[v];
     P1=kai[4];
     delay(20);
     P2=table[11];
     P1=kai[3];
     delay(20);
     P2=table[11];
     P1=kai[4];
     delay(20);
     u=min/10;
     v=min%10; 
    }//display_m
    void tiaozheng(void)
    {
      if(gai==0)
      TR0=0;
      KEY_tiao();
      switch(e)
     {
      case 1 :{
        if(tiao==0)
        {
         hour++;
         display_h();
         if(hour>24)
         {
          hour=0;
         }
        }
              }//case 1
       break;
       case 2 :{
        if(tiao==0)
        {
         min++;
         display_m();
         if(min>60)
         {
          min=0;
         }
        }
                }//case 2
       break;
            }//switch
    }//tiaozheng
    void Timer_init()
    {
     ET0=0;
     TCON=0x00;
     TMOD=0x01;//工作方式1
     TH0=0x3c;
     TL0=0xaf;//定時50mS,12mHz
     ET0=1;
    }//Timer_init
    void Timer_Start()
    {
     TR0=1;
    }//Timer_Start
    void Timer_interrupt(void) interrupt 1 using 0
    {
     EA=0;
     dada++;
     if(dada==20)
     {
      dada=0;
      sec++;
     }
     EA=1;
     TH0=0x3c;
     TL0=0xaf;
    }//Timer_interrupt
    void Int1_interrupt(void) interrupt 2 using 2
    {
     TR0=0;
    }//Int1_interrputd
    void Int0_interrupt(void) interrupt 0 using 1
    {
     TR0=1;
    }//Int0_interrput
    void main(void)
    {
     EA=1;
     EX0=1;
     EX1=1;
     Timer_init();
     Timer_Start();
     while(1)
     {
      xianshi(i,j,u,v,w,s);
      time_cond();
      i=hour/10;
      j=hour%10;
      u=min/10;
      v=min%10;
      w=sec/10;
      s=sec%10;
      p=10;
      q=10;
        tiaozheng();
     }//while
    }//main

     

    關閉窗口

    相關文章

    国产农村精品一级毛片视频_亚洲Av无码专区国产乱码在线观看_亚洲综合国产Av_天天影视网天天综合色