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

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

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

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

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

                       

                      發表評論】【告訴好友】【收藏此文】【關閉窗口

                      文章評論

                      相關文章

                      富二代国产视频